|
- import {BLANK_DIGIT} from '../../../utils/numeric';
-
- const config = {
- onesNames: ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'],
- onesOrdinalNames: ['zeroth', 'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth'],
- teensNames: [
- 'ten',
- 'eleven',
- 'twelve',
- 'thirteen',
- 'fourteen',
- 'fifteen',
- 'sixteen',
- 'seventeen',
- 'eighteen',
- 'nineteen',
- ],
- teensOrdinalNames: [
- 'tenth',
- 'eleventh',
- 'twelfth',
- 'thirteenth',
- 'fourteenth',
- 'fifteenth',
- 'sixteenth',
- 'seventeenth',
- 'eighteenth',
- 'nineteenth',
- ],
- tensNames: ['zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'],
- tensOrdinalNames: [
- 'zeroth',
- 'tenth',
- 'twentieth',
- 'thirtieth',
- 'fortieth',
- 'fiftieth',
- 'sixtieth',
- 'seventieth',
- 'eightieth',
- 'ninetieth',
- ],
- hundredName: 'hundred',
- hundredOrdinalName: 'hundredth',
- grouping: 3,
- };
-
- export const getGroupDigitsName = (digitsRaw: string, ordinal: boolean) => {
- const digits = digitsRaw.padStart(config.grouping, BLANK_DIGIT);
- const [hundreds, tens, ones] = digits.split('').map(s => Number(s));
- const names = [];
- if (hundreds !== 0) {
- names.push(config.onesNames[hundreds]);
- if (!ordinal || (tens > 0 || ones > 0)) {
- names.push(config.hundredName);
- }
- }
- if (tens === 1) {
- names.push(ordinal ? config.teensOrdinalNames[ones] : config.teensNames[ones]);
- } else if (tens > 1) {
- if (ones > 0) {
- names.push(config.tensNames[tens]);
- names.push(ordinal ? config.onesOrdinalNames[ones] : config.onesNames[ones]);
- } else {
- names.push(ordinal ? config.tensOrdinalNames[tens] : config.tensNames[tens]);
- }
- } else {
- if (hundreds === 0) {
- names.push(ordinal ? config.onesOrdinalNames[ones] : config.onesNames[ones]);
- } else if (ones > 0) {
- names.push(ordinal ? config.onesOrdinalNames[ones] : config.onesNames[ones]);
- } else if (ordinal) {
- names.push(config.hundredOrdinalName);
- }
- }
- return names.join(' ');
- };
|