chrono-node
Version:
A natural language date parser in Javascript
65 lines (58 loc) • 1.37 kB
text/typescript
export const NUMBER = {
"零": 0,
"〇": 0,
"一": 1,
"二": 2,
"三": 3,
"四": 4,
"五": 5,
"六": 6,
"七": 7,
"八": 8,
"九": 9,
"十": 10,
};
export const WEEKDAY_OFFSET = {
"日": 0,
"月": 1,
"火": 2,
"水": 3,
"木": 4,
"金": 5,
"土": 6,
};
/**
* to-hankaku.js
* convert to ascii code strings.
*
* @version 1.0.1
* @author think49
* @url https://gist.github.com/964592
* @license http://www.opensource.org/licenses/mit-license.php (The MIT License)
*/
export function toHankaku(text) {
return String(text)
.replace(/\u2019/g, "\u0027")
.replace(/\u201D/g, "\u0022")
.replace(/\u3000/g, "\u0020")
.replace(/\uFFE5/g, "\u00A5")
.replace(
/[\uFF01\uFF03-\uFF06\uFF08\uFF09\uFF0C-\uFF19\uFF1C-\uFF1F\uFF21-\uFF3B\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5E]/g,
alphaNum
);
}
function alphaNum(token) {
return String.fromCharCode(token.charCodeAt(0) - 65248);
}
export function jaStringToNumber(text: string) {
let number = 0;
for (let i = 0; i < text.length; i++) {
const char = text[i];
if (char === "十") {
number = number === 0 ? NUMBER[char] : number * NUMBER[char];
} else {
number += NUMBER[char];
}
}
return number;
}