UNPKG

@ohayojp.com/components

Version:

Common business components of ohayojp.

192 lines (184 loc) 6.75 kB
import { Pipe, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; /** * @fileoverview added by tsickle * Generated from: number-to-chinese.interfaces.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * 额外参数选项 * @record */ function NumberToChineseOptions() { } if (false) { /** * 指定负数符号,默认:`负` * @type {?|undefined} */ NumberToChineseOptions.prototype.minusSymbol; /** * 当传递值无法数值时抛出异常,默认:`false` * @type {?|undefined} */ NumberToChineseOptions.prototype.validThrow; } /** * @fileoverview added by tsickle * Generated from: number-to-chinese.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @param {?} value * @param {?=} rmb * @param {?=} options * @return {?} */ function numberToChinese(value, rmb = true, options) { options = Object.assign({ minusSymbol: '负', validThrow: false }, options); if (typeof value === 'number') value = value.toString(); if (!/^-?\d+(\.\d+)?$/.test(value) && options.validThrow) throw new Error(`${value} is invalid number type`); /** @type {?} */ let integer; /** @type {?} */ let decimal; [integer, decimal] = value.split('.'); /** @type {?} */ let symbol = ''; if (integer.startsWith('-')) { symbol = (/** @type {?} */ (options.minusSymbol)); integer = integer.substr(1); } if (/^-?\d+$/.test(value)) decimal = null; integer = (+integer).toString(); /** @type {?} */ const unit = { num: rmb ? ['', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '点'] : ['', '一', '二', '三', '四', '五', '六', '七', '八', '九', '点'], radice: rmb ? ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万亿', '拾', '佰', '仟', '兆', '拾', '佰', '仟'] : ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万亿', '十', '百', '千', '兆', '十', '百', '千'], dec: ['角', '分', '厘', '毫'], }; if (rmb) value = (+value).toFixed(5).toString(); /** @type {?} */ let integerRes = ''; /** @type {?} */ const integerCount = integer.length; if (integer === '0' || integerCount === 0) { integerRes = '零'; } else { /** @type {?} */ let cnDesc = ''; for (let i = 0; i < integerCount; i++) { /** @type {?} */ const n = +integer[i]; /** @type {?} */ const j = integerCount - i - 1; /** @type {?} */ const isZero = i > 1 && n !== 0 && integer[i - 1] === '0'; /** @type {?} */ const cnZero = isZero ? '零' : ''; /** @type {?} */ const isEmpptyUnit = (n === 0 && j % 4 !== 0) || integer.substr(i - 3, 4) === '0000'; /** @type {?} */ const descMark = cnDesc; /** @type {?} */ let cnNum = unit.num[n]; cnDesc = isEmpptyUnit ? '' : unit.radice[j]; // 第一位是一十 if (i === 0 && cnNum === '一' && cnDesc === '十') cnNum = ''; /** @type {?} */ const isChangeEr = n > 1 && cnNum === '二' && // 去除首位 ['', '十', '百'].indexOf(cnDesc) === -1 && // 不读两\两十\两百 descMark !== '十'; if (isChangeEr) cnNum = '两'; integerRes += cnZero + cnNum + cnDesc; } } // 小数部分拼接 /** @type {?} */ let decimalRes = ''; /** @type {?} */ const decimalCount = decimal ? decimal.toString().length : 0; if (decimal === null) { decimalRes = rmb ? '整' : ''; } else if (decimal === '0') { decimalRes = '零'; } else { for (let i = 0; i < decimalCount; i++) { if (rmb && i > unit.dec.length - 1) break; /** @type {?} */ const n = decimal[i]; /** @type {?} */ const cnZero = n === '0' ? '零' : ''; /** @type {?} */ const cnNum = ((/** @type {?} */ (unit.num)))[n]; /** @type {?} */ const cnDesc = rmb ? unit.dec[i] : ''; decimalRes += cnZero + cnNum + cnDesc; } } /** @type {?} */ const ret = symbol + (rmb ? integerRes + (decimalRes === '零' ? '元整' : `元${decimalRes}`) : integerRes + (decimalRes === '' ? '' : `点${decimalRes}`)); return ret; } /** * @fileoverview added by tsickle * Generated from: number-to-chinese.pipe.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class NaNumberToChinesePipe { /** * @param {?} value * @param {?=} rmb * @param {?=} minusSymbol * @return {?} */ transform(value, rmb = true, minusSymbol = '负') { return numberToChinese(value, rmb, { minusSymbol }); } } NaNumberToChinesePipe.decorators = [ { type: Pipe, args: [{ name: 'n2c' },] } ]; /** * @fileoverview added by tsickle * Generated from: number-to-chinese.module.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const PIPES = [NaNumberToChinesePipe]; class NumberToChineseModule { } NumberToChineseModule.decorators = [ { type: NgModule, args: [{ imports: [CommonModule], declarations: PIPES, exports: PIPES, },] } ]; /** * @fileoverview added by tsickle * Generated from: public_api.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * Generated from: numberToChinese.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { NaNumberToChinesePipe, NumberToChineseModule, numberToChinese }; //# sourceMappingURL=numberToChinese.js.map