|
- import BigNumber from 'bignumber.js';
- import {BLANK_DIGIT} from '../../../utils/numeric';
-
- const config = {
- hundredName: 'hundert',
- hundredOrdinalName: 'hundertste',
- and: 'und',
- onesNames: ['zero', 'ein', 'zwei', 'drei', 'vier', 'fünf', 'sechs', 'sieben', 'acht', 'neun'],
- onesOrdinalNames: [
- 'nullth',
- 'zuerst',
- 'zweite',
- 'dritte',
- 'vierte',
- 'fünfte',
- 'sechste',
- 'siebte',
- 'achte',
- 'neunte',
- ],
- teensNames: [
- 'zehn',
- 'elf',
- 'zwölf',
- 'dreizehn',
- 'vierzehn',
- 'fünfzehn',
- 'sechzehn',
- 'siebzehn',
- 'achtzehn',
- 'neunzehn',
- ],
- teensOrdinalNames: [
- 'zehnte',
- 'elfte',
- 'zwölfte',
- 'dreizehnte',
- 'vierzehnte',
- 'fünfzehnte',
- 'sechzehnte',
- 'siebzehnte',
- 'achtzehnte',
- 'neunzehnte',
- ],
- tensNames: ['zero', 'zehn', 'zwanzig', 'dreißig', 'vierzig', 'fünfzig', 'sechzig', 'siebzig', 'achtzig', 'neunzig'],
- tensOrdinalNames: [
- 'nullth',
- 'zehnte',
- 'zwanzigste',
- 'dreißigste',
- 'vierzigste',
- 'fünfzigste',
- 'sechzigste',
- 'siebzigste',
- 'achtzigste',
- 'neunzigste',
- ],
- grouping: 3,
- };
-
- export const getGroupDigitsName = (digitsRaw: string, index: BigNumber, 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(config.teensNames[ones]);
- } else if (tens > 1) {
- if (ones > 0) {
- names.push(config.onesNames[ones]);
- names.push(config.and);
- }
- names.push(config.tensNames[tens]);
- } else {
- if (hundreds === 0) {
- if (ones === 1 && index.gte(2)) {
- names.push(ordinal ? config.onesOrdinalNames[ones] : config.onesNames[ones] + 'e');
- } else {
- 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('');
- };
|