core/parsers/word.parser.ts

core/parsers/word.parser.ts is a file in GovLab Quality. 35 lines of code and 8 definitions.

import { isAlpha, isDigit, isLowerAlpha, isUpperAlpha } from "@govlab/constants";

const SEP = " ";
const QUALIFIED_MARKER = "puppycrawl";

const isAlnum = function isAlnum(ch: string): boolean {
    return isAlpha(ch) || isDigit(ch);
};

const isBoundary = function isBoundary(prev: string, ch: string): boolean {
    if (prev === "") {
        return false;
    }
    return (isLowerAlpha(prev) && isUpperAlpha(ch)) || isDigit(prev) !== isDigit(ch);
};

export const tokenizeWords = function tokenizeWords(value: string): string[] {
    let marked = "";
    let prev = "";
    for (const ch of value) {
        if (!isAlnum(ch)) {
            marked += SEP;
            prev = "";
            continue;
        }
        marked += isBoundary(prev, ch) ? SEP + ch : ch;
        prev = ch;
    }
    return marked
        .split(SEP)
        .filter(Boolean)
        .map((word) => word.toLowerCase());
};

export const labelOfRule = function labelOfRule(name: string): string {
    if (name.includes(".") && name.includes(QUALIFIED_MARKER)) {
        return name.slice(name.lastIndexOf(".") + 1).trim();
    }
    return name.trim();
};