char-info
Version:
Unicode character information library.
89 lines • 3.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnicodeScript = exports.UnicodeCategory = exports.UnicodeBlock = exports.uniGetBlock = exports.uniGetScripts = exports.uniGetCategories = exports.uniIsNewline = exports.uniIsSpace = exports.uniIsUpper = exports.uniIsLower = exports.uniIsLetter = exports.uniIsDecimal = exports.uniInBlock = exports.uniInScript = exports.uniInCategory = void 0;
const indicators_1 = require("./indicators");
const names_1 = require("./names");
const unicode_lookup_1 = require("./unicode-lookup");
function homogenizeInputStr(str) {
return str.toLowerCase().replace(/[_ -,]/g, "");
}
/**
* Returns an indicator for characters belonging to the Unicode category, `category`.
*
* @param category The category to test for.
*/
function uniInCategory(category) {
category = homogenizeInputStr(category);
if (category.length > 3) {
category = unicode_lookup_1.lookup.longCategoryToCode.get(category);
}
const uGroup = unicode_lookup_1.lookup.categories.get(category);
return new indicators_1.BasicCharClassIndicator(uGroup);
}
exports.uniInCategory = uniInCategory;
/**
* Returns an indicator for characters belonging to a Unicode script, `script`.
*
* @param script
*/
function uniInScript(script) {
script = homogenizeInputStr(script);
const uGroup = unicode_lookup_1.lookup.scripts.get(script);
return new indicators_1.BasicCharClassIndicator(uGroup);
}
exports.uniInScript = uniInScript;
/**
* Returns an indicator for characters belonging to the Unicode block, `block`.
*
* @param block
*/
function uniInBlock(block) {
block = homogenizeInputStr(block);
const uGroup = unicode_lookup_1.lookup.blocks.get(block);
return new indicators_1.BasicCharClassIndicator(uGroup);
}
exports.uniInBlock = uniInBlock;
/** Indicator for Unicode decimal digit characters. */
exports.uniIsDecimal = uniInCategory(names_1.UnicodeCategory.NumberDecimalDigit);
/** Indicator for Unicode letters. */
exports.uniIsLetter = uniInCategory(names_1.UnicodeCategory.Letter);
/** Indicator for Unicode lowercase letters. */
exports.uniIsLower = uniInCategory(names_1.UnicodeCategory.LetterLowercase);
/** Indicator for Unicode uppercase letters. */
exports.uniIsUpper = uniInCategory(names_1.UnicodeCategory.LetterUppercase);
/** Indicator for Unicode inline spaces. */
exports.uniIsSpace = uniInCategory(names_1.UnicodeCategory.SeparatorSpace);
/** Indicator for Unicode vertical separators. */
exports.uniIsNewline = uniInCategory(names_1.UnicodeCategory.Custom_SeparatorVertical);
/** Returns the Unicode categories for a character or code. */
exports.uniGetCategories = {
code(code) {
return unicode_lookup_1.lookup.allCategories.search(code, code);
},
char(char) {
return exports.uniGetCategories.code(char.charCodeAt(0));
}
};
/** Returns the Unicode scripts for a character or code. */
exports.uniGetScripts = {
code(code) {
return unicode_lookup_1.lookup.allScripts.search(code, code);
},
char(char) {
return exports.uniGetScripts.code(char.charCodeAt(0));
}
};
/** Returns the Unicode block for a character or code. */
exports.uniGetBlock = {
code(code) {
return unicode_lookup_1.lookup.allBlocks.search(code, code)[0];
},
char(char) {
return exports.uniGetBlock.code(char.charCodeAt(0));
}
};
var names_2 = require("./names");
Object.defineProperty(exports, "UnicodeBlock", { enumerable: true, get: function () { return names_2.UnicodeBlock; } });
Object.defineProperty(exports, "UnicodeCategory", { enumerable: true, get: function () { return names_2.UnicodeCategory; } });
Object.defineProperty(exports, "UnicodeScript", { enumerable: true, get: function () { return names_2.UnicodeScript; } });
//# sourceMappingURL=unicode.js.map