@siakhooi/number-to-chinese-words
Version:
Library to translate number into chinese words
64 lines • 3.01 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BasicNumberConvertor = void 0;
/*
To take care of numbers between 0 to 9999
*/
class BasicNumberConvertor {
context;
constructor(context) {
this.context = context;
}
convert_0_to_9(number, ignoreZero, ignoreOne, suffix) {
const c = this.context.characterSet.BASE.charAt(number);
if (number === 0)
return ignoreZero ? '' : c;
if (ignoreOne && number === 1)
return suffix;
return c + suffix;
}
convert_digit_1(number, removeLeadingOne, digit1) {
return this.convert_0_to_9(digit1, number > 9, number < 10 && removeLeadingOne, '');
}
useContraction(useContractionDigit, contractedCharacter) {
return ((!!useContractionDigit || !!this.context.options.useContractionAll) &&
contractedCharacter !== undefined);
}
getContraction(digit, defaultValue) {
if (digit >= 2 &&
digit <= 9 &&
this.useContraction(this.context.isContract(digit), this.context.characterSet.CONTRACTION[digit]))
return this.context.characterSet.CONTRACTION[digit];
else
return defaultValue;
}
convert_digit_10(number, removeLeadingOne, digit2, digit1, digit3) {
const normalTranslation = this.convert_0_to_9(digit2, (number >= 100 && digit1 === 0) ||
(number >= 1000 && digit3 === 0) ||
number < 10, number < 100 && removeLeadingOne, this.context.characterSet.TEN);
return this.getContraction(digit2, normalTranslation);
}
convert_digit_100(number, removeLeadingOne, digit3) {
if (digit3 === 2 &&
this.useContraction(this.context.isContract200(), this.context.characterSet.CONTRACTION_200))
return this.context.characterSet.CONTRACTION_200;
else
return this.convert_0_to_9(digit3, (number >= 1000 && number % 100 === 0) || number < 100, number < 1000 && removeLeadingOne, this.context.characterSet.HUNDRED);
}
convert_digit_1000(number, removeLeadingOne, digit4) {
return this.convert_0_to_9(digit4, number < 1000, number > 999 && removeLeadingOne, this.context.characterSet.THOUSAND);
}
convert_0_to_9999(number, removeLeadingOne, suffix) {
const digit1 = number % 10;
const digit2 = Math.floor(number / 10) % 10;
const digit3 = Math.floor(number / 100) % 10;
const digit4 = Math.floor(number / 1000);
const char1 = this.convert_digit_1(number, removeLeadingOne, digit1);
const char2 = this.convert_digit_10(number, removeLeadingOne, digit2, digit1, digit3);
const char3 = this.convert_digit_100(number, removeLeadingOne, digit3);
const char4 = this.convert_digit_1000(number, removeLeadingOne, digit4);
return char4 + char3 + char2 + char1 + suffix;
}
}
exports.BasicNumberConvertor = BasicNumberConvertor;
//# sourceMappingURL=BasicNumberConvertor.js.map