"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findKanjiNumbers = exports.number2kanji = exports.kanji2number = void 0; const utils_1 = require("./utils"); const japaneseNumerics_1 = require("./japaneseNumerics"); function kanji2number(japanese) { japanese = utils_1.normalize(japanese); if (japanese.match('〇') || japanese.match(/^[〇一二三四五六七八九]+$/)) { for (const key in japaneseNumerics_1.default) { const reg = new RegExp(key, 'g'); japanese = japanese.replace(reg, japaneseNumerics_1.default[key].toString()); } return Number(japanese); } else { let number = 0; const numbers = utils_1.splitLargeNumber(japanese); // 万以上の数字を数値に変換 for (const key in utils_1.largeNumbers) { if (numbers[key]) { const n = utils_1.largeNumbers[key] * numbers[key]; number = number + n; } } if (!Number.isInteger(number) || !Number.isInteger(numbers['千'])) { throw new TypeError('The attribute of kanji2number() must be a Japanese numeral as integer.'); } // 千以下の数字を足す return number + numbers['千']; } } exports.kanji2number = kanji2number; function number2kanji(num) { if (!num.toString().match(/^[0-9]+$/)) { throw new TypeError('The attribute of number2kanji() must be integer.'); } const kanjiNumbers = Object.keys(japaneseNumerics_1.default); let number = num; let kanji = ''; // 万以上の数字を漢字に変換 for (const key in utils_1.largeNumbers) { const n = Math.floor(number / utils_1.largeNumbers[key]); if (n) { number = number - (n * utils_1.largeNumbers[key]); kanji = `${kanji}${utils_1.n2kan(n)}${key}`; } } if (number) { kanji = `${kanji}${utils_1.n2kan(number)}`; } return kanji; } exports.number2kanji = number2kanji; function findKanjiNumbers(text) { const num = '([0-90-9]*)|([〇一二三四五六七八九壱壹弐貳貮参參肆伍陸漆捌玖]*)'; const basePattern = `((${num})(千|阡|仟))?((${num})(百|陌|佰))?((${num})(十|拾))?(${num})?`; const pattern = `((${basePattern}兆)?(${basePattern}億)?(${basePattern}(万|萬))?${basePattern})`; const regex = new RegExp(pattern, 'g'); const match = text.match(regex); if (match) { return match.filter((item) => { if ((!item.match(/^[0-90-9]+$/)) && (item.length && '兆' !== item && '億' !== item && '万' !== item && '萬' !== item)) { return true; } else { return false; } }); } else { return []; } } exports.findKanjiNumbers = findKanjiNumbers;