e2ed
Version:
E2E testing framework over Playwright
56 lines (55 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBorderCount = void 0;
const asserts_1 = require("../asserts");
const aCodePoint = 97;
// eslint-disable-next-line @typescript-eslint/naming-convention
const ACodePoint = 65;
const nineCodePoint = 57;
const zCodePoint = 122;
// eslint-disable-next-line @typescript-eslint/naming-convention
const ZCodePoint = 90;
const zeroCodePoint = 48;
/**
* Returns count of border (letter or non-letter) inside string.
* @internal
*/
// eslint-disable-next-line complexity
const getBorderCount = (value) => {
let borderCount = -1;
let letterCount = 0;
let mode;
for (const char of value) {
const codePoint = char.codePointAt(0);
(0, asserts_1.assertValueIsDefined)(codePoint, 'codePoint is defined', { value });
switch (true) {
case codePoint >= zeroCodePoint && codePoint <= nineCodePoint:
if (mode !== '0') {
borderCount += 1;
}
mode = '0';
break;
case codePoint >= ACodePoint && codePoint <= ZCodePoint:
if (mode !== 'A') {
borderCount += 1;
}
letterCount += 1;
mode = 'A';
break;
case codePoint >= aCodePoint && codePoint <= zCodePoint:
if (mode !== 'a') {
borderCount += 1;
}
letterCount += 1;
mode = 'a';
break;
default:
if (mode !== '.') {
borderCount += 1;
}
mode = '.';
}
}
return { borderCount, letterCount };
};
exports.getBorderCount = getBorderCount;