MCPcopy Index your code
hub / github.com/angular/angular / formatNumberToLocaleString

Function formatNumberToLocaleString

packages/common/src/i18n/format_number.ts:33–155  ·  view source on GitHub ↗

* Transforms a number to a locale string based on a style and a format.

(
  value: number,
  pattern: ParsedNumberFormat,
  locale: string,
  groupSymbol: NumberSymbol,
  decimalSymbol: NumberSymbol,
  digitsInfo?: string,
  isPercent = false,
)

Source from the content-addressed store, hash-verified

31 * Transforms a number to a locale string based on a style and a format.
32 */
33function formatNumberToLocaleString(
34 value: number,
35 pattern: ParsedNumberFormat,
36 locale: string,
37 groupSymbol: NumberSymbol,
38 decimalSymbol: NumberSymbol,
39 digitsInfo?: string,
40 isPercent = false,
41): string {
42 let formattedText = '';
43 let isZero = false;
44
45 if (!isFinite(value)) {
46 formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);
47 } else {
48 let parsedNumber = parseNumber(value);
49
50 if (isPercent) {
51 parsedNumber = toPercent(parsedNumber);
52 }
53
54 let minInt = pattern.minInt;
55 let minFraction = pattern.minFrac;
56 let maxFraction = pattern.maxFrac;
57
58 if (digitsInfo) {
59 const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);
60 if (parts === null) {
61 throw new RuntimeError(
62 RuntimeErrorCode.INVALID_DIGIT_INFO,
63 ngDevMode && `${digitsInfo} is not a valid digit info`,
64 );
65 }
66 const minIntPart = parts[1];
67 const minFractionPart = parts[3];
68 const maxFractionPart = parts[5];
69 if (minIntPart != null) {
70 minInt = parseIntAutoRadix(minIntPart);
71 }
72 if (minFractionPart != null) {
73 minFraction = parseIntAutoRadix(minFractionPart);
74 }
75 if (maxFractionPart != null) {
76 maxFraction = parseIntAutoRadix(maxFractionPart);
77 } else if (minFractionPart != null && minFraction > maxFraction) {
78 maxFraction = minFraction;
79 }
80
81 // Prevent DoS via resource exhaustion by capping the maximum padding iterations
82 const MAX_ALLOWED_DIGITS = 100;
83 if (
84 minInt > MAX_ALLOWED_DIGITS ||
85 minFraction > MAX_ALLOWED_DIGITS ||
86 maxFraction > MAX_ALLOWED_DIGITS
87 ) {
88 throw new RuntimeError(
89 RuntimeErrorCode.INVALID_DIGIT_INFO,
90 ngDevMode &&

Callers 3

formatCurrencyFunction · 0.85
formatPercentFunction · 0.85
formatNumberFunction · 0.85

Calls 7

getLocaleNumberSymbolFunction · 0.90
parseNumberFunction · 0.85
toPercentFunction · 0.85
roundNumberFunction · 0.85
parseIntAutoRadixFunction · 0.70
joinMethod · 0.65
matchMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…