@praphan.o/thai-sentence-cut
Version:
การตัดข้อความภาษาไทยโดยไม่นับสระลอยและวรรณยุกต์
45 lines • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.splitThaiStringByLength = exports.lengthOfThaiString = void 0;
var wordcut = require("wordcut");
var uncountedCharacter = "\u0e31\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d";
var specialCharSplit = "\u0000"; // null byte
wordcut.init();
var regEx = new RegExp("[" + uncountedCharacter + "]", "g");
const lengthOfThaiString = function (str) {
return str.replace(regEx, "").length;
};
exports.lengthOfThaiString = lengthOfThaiString;
var splitThaiStringByLength = function (str, maxLength) {
if (!maxLength) {
return [str];
}
let arrayOfString = str.split(/\r*\n/g);
let result = arrayOfString.reduce((result, line) => {
let wc = wordcut.cut(line, specialCharSplit).split(specialCharSplit);
let temp = wc.shift();
let previous = "";
while (wc.length > 0) {
if (temp.replace(regEx, "").length < maxLength) {
previous = temp;
temp = temp + wc.shift();
}
else {
result.push(previous);
temp = temp.replace(new RegExp(previous.replace(/\(/g, "\\(").replace(/\)/g, "\\)")), "");
previous = "";
}
}
if (temp !== "") {
result.push(temp);
}
return result;
}, []);
return result;
};
exports.splitThaiStringByLength = splitThaiStringByLength;
// module.exports = {
// lengthOfThaiString,
// splitThaiStringByLength,
// };
//# sourceMappingURL=index.js.map