UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

154 lines (153 loc) 6.1 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { isNumber, isPresent, isBlank, NumberWrapper, RegExpWrapper, CONST } from 'angular2/src/facade/lang'; import { BaseException } from 'angular2/src/facade/exceptions'; import { NumberFormatter, NumberFormatStyle } from 'angular2/src/facade/intl'; import { Injectable, Pipe } from 'angular2/core'; import { InvalidPipeArgumentException } from './invalid_pipe_argument_exception'; var defaultLocale = 'en-US'; var _re = RegExpWrapper.create('^(\\d+)?\\.((\\d+)(\\-(\\d+))?)?$'); /** * Internal base class for numeric pipes. */ let NumberPipe_1; export let NumberPipe = NumberPipe_1 = class NumberPipe { /** @internal */ static _format(value, style, digits, currency = null, currencyAsSymbol = false) { if (isBlank(value)) return null; if (!isNumber(value)) { throw new InvalidPipeArgumentException(NumberPipe_1, value); } var minInt = 1, minFraction = 0, maxFraction = 3; if (isPresent(digits)) { var parts = RegExpWrapper.firstMatch(_re, digits); if (isBlank(parts)) { throw new BaseException(`${digits} is not a valid digit info for number pipes`); } if (isPresent(parts[1])) { minInt = NumberWrapper.parseIntAutoRadix(parts[1]); } if (isPresent(parts[3])) { minFraction = NumberWrapper.parseIntAutoRadix(parts[3]); } if (isPresent(parts[5])) { maxFraction = NumberWrapper.parseIntAutoRadix(parts[5]); } } return NumberFormatter.format(value, defaultLocale, style, { minimumIntegerDigits: minInt, minimumFractionDigits: minFraction, maximumFractionDigits: maxFraction, currency: currency, currencyAsSymbol: currencyAsSymbol }); } }; NumberPipe = NumberPipe_1 = __decorate([ CONST(), Injectable(), __metadata('design:paramtypes', []) ], NumberPipe); /** * WARNING: this pipe uses the Internationalization API. * Therefore it is only reliable in Chrome and Opera browsers. * * Formats a number as local text. i.e. group sizing and separator and other locale-specific * configurations are based on the active locale. * * ### Usage * * expression | number[:digitInfo] * * where `expression` is a number and `digitInfo` has the following format: * * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits} * * - minIntegerDigits is the minimum number of integer digits to use. Defaults to 1. * - minFractionDigits is the minimum number of digits after fraction. Defaults to 0. * - maxFractionDigits is the maximum number of digits after fraction. Defaults to 3. * * For more information on the acceptable range for each of these numbers and other * details see your native internationalization library. * * ### Example * * {@example core/pipes/ts/number_pipe/number_pipe_example.ts region='NumberPipe'} */ export let DecimalPipe = class DecimalPipe extends NumberPipe { transform(value, digits = null) { return NumberPipe._format(value, NumberFormatStyle.Decimal, digits); } }; DecimalPipe = __decorate([ CONST(), Pipe({ name: 'number' }), Injectable(), __metadata('design:paramtypes', []) ], DecimalPipe); /** * WARNING: this pipe uses the Internationalization API. * Therefore it is only reliable in Chrome and Opera browsers. * * Formats a number as local percent. * * ### Usage * * expression | percent[:digitInfo] * * For more information about `digitInfo` see {@link DecimalPipe} * * ### Example * * {@example core/pipes/ts/number_pipe/number_pipe_example.ts region='PercentPipe'} */ export let PercentPipe = class PercentPipe extends NumberPipe { transform(value, digits = null) { return NumberPipe._format(value, NumberFormatStyle.Percent, digits); } }; PercentPipe = __decorate([ CONST(), Pipe({ name: 'percent' }), Injectable(), __metadata('design:paramtypes', []) ], PercentPipe); /** * WARNING: this pipe uses the Internationalization API. * Therefore it is only reliable in Chrome and Opera browsers. * * Formats a number as local currency. * * ### Usage * * expression | currency[:currencyCode[:symbolDisplay[:digitInfo]]] * * where `currencyCode` is the ISO 4217 currency code, such as "USD" for the US dollar and * "EUR" for the euro. `symbolDisplay` is a boolean indicating whether to use the currency * symbol (e.g. $) or the currency code (e.g. USD) in the output. The default for this value * is `false`. * For more information about `digitInfo` see {@link DecimalPipe} * * ### Example * * {@example core/pipes/ts/number_pipe/number_pipe_example.ts region='CurrencyPipe'} */ export let CurrencyPipe = class CurrencyPipe extends NumberPipe { transform(value, currencyCode = 'USD', symbolDisplay = false, digits = null) { return NumberPipe._format(value, NumberFormatStyle.Currency, digits, currencyCode, symbolDisplay); } }; CurrencyPipe = __decorate([ CONST(), Pipe({ name: 'currency' }), Injectable(), __metadata('design:paramtypes', []) ], CurrencyPipe);