Skip to content
This repository was archived by the owner on May 4, 2020. It is now read-only.

Commit 35dd2f0

Browse files
committed
feat(@formatjs/intl-unified-numberformat): Update README with more examples, disable some tests
1 parent 0a5a180 commit 35dd2f0

File tree

3 files changed

+145
-27
lines changed

3 files changed

+145
-27
lines changed

packages/intl-unified-numberformat/README.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ This package requires the following capabilities:
1616

1717
# Features
1818

19-
1. `unit`, `unitDisplay`, `style: unit` and sanctioned units are supported
19+
Everything in the https://github.com/tc39/proposal-unified-intl-numberformat proposal with the caveats below.
2020

2121
## Caveats
2222

23-
1. `formatToParts` does not include the `unit` part yet.
23+
1. `compact` notation is currently buggy in certain locales with special compact rules (such as `zh-Hant` or `Somali`) See https://github.com/tc39/proposal-unified-intl-numberformat/issues/26 for more details.
2424

2525
# Usage
2626

@@ -60,6 +60,16 @@ new Intl.NumberFormat('zh', {
6060
unit: 'bit',
6161
unitDisplay: 'long',
6262
}).format(1000); // 1,000比特
63+
64+
new Intl.NumberFormat('en-US', {
65+
notation: 'engineering',
66+
}).format(987654321); // 987.7E6
67+
68+
new Intl.NumberFormat('zh', {
69+
style: 'currency',
70+
currency: 'EUR',
71+
currencySign: 'accounting',
72+
}).format(-100); // (€100.00)
6373
```
6474

6575
## Supported Units

packages/intl-unified-numberformat/src/data.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const SIGN_DISPLAYS: Array<keyof SignDisplayPattern> = [
3333
// per exponent (e.g for zh-TW, 1000 is just {number}, not {number}K).
3434
// This number is chosen so we generate the most general pattern for compact, e.g
3535
// {number}{compactSymbol} or sth like that
36-
const SPECIAL_NUMBER_HACK = '1000'
36+
const SPECIAL_NUMBER_HACK = '1000';
3737

3838
const UNIT_DISPLAYS: Array<keyof UnitPattern> = ['narrow', 'long', 'short'];
3939

@@ -208,7 +208,9 @@ function extractDecimalPattern(
208208
numberingSystem: string
209209
): SignDisplayPattern {
210210
const compactShortSignPattern = extractSignPattern(
211-
extractCompactSymbol(d.decimal[numberingSystem].short[SPECIAL_NUMBER_HACK].other)
211+
extractCompactSymbol(
212+
d.decimal[numberingSystem].short[SPECIAL_NUMBER_HACK].other
213+
)
212214
);
213215
const compactLongSignPattern = extractSignPattern(
214216
extractCompactSymbol(
@@ -451,8 +453,10 @@ function extractCurrencyPatternForCurrency(
451453
const currencyAccountingPattern = d.currency[numberingSystem].accounting;
452454
const currencyShortPattern =
453455
d.currency[numberingSystem].short?.[1000].other || '';
454-
const decimalShortPattern = d.decimal[numberingSystem].short[SPECIAL_NUMBER_HACK].other;
455-
const decimalLongPattern = d.decimal[numberingSystem].long[SPECIAL_NUMBER_HACK].other;
456+
const decimalShortPattern =
457+
d.decimal[numberingSystem].short[SPECIAL_NUMBER_HACK].other;
458+
const decimalLongPattern =
459+
d.decimal[numberingSystem].long[SPECIAL_NUMBER_HACK].other;
456460
const currencySymbol = c[currency].symbol;
457461
const currencyNarrowSymbol = c[currency].narrow;
458462
const standardCurrencyPattern = {

packages/intl-unified-numberformat/tests/signDisplay-currency-zh-TW.test.ts

Lines changed: 125 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,49 @@ UnifiedNumberFormat.__addLocaleData(
99
);
1010
const tests: any[] = [
1111
[
12-
"auto",
13-
[{"type":"literal","value":"("},{"type":"currency","value":"US$"},{"type":"integer","value":"987"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"},{"type":"literal","value":")"}],
14-
[{"type":"literal","value":"("},{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"},{"type":"literal","value":")"}],
15-
[{"type":"literal","value":"("},{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"},{"type":"literal","value":")"}],
16-
[{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
17-
[{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
18-
[{"type":"currency","value":"US$"},{"type":"integer","value":"987"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
12+
'auto',
13+
[
14+
{type: 'literal', value: '('},
15+
{type: 'currency', value: 'US$'},
16+
{type: 'integer', value: '987'},
17+
{type: 'decimal', value: '.'},
18+
{type: 'fraction', value: '00'},
19+
{type: 'literal', value: ')'},
20+
],
21+
[
22+
{type: 'literal', value: '('},
23+
{type: 'currency', value: 'US$'},
24+
{type: 'integer', value: '0'},
25+
{type: 'decimal', value: '.'},
26+
{type: 'fraction', value: '00'},
27+
{type: 'literal', value: ')'},
28+
],
29+
[
30+
{type: 'literal', value: '('},
31+
{type: 'currency', value: 'US$'},
32+
{type: 'integer', value: '0'},
33+
{type: 'decimal', value: '.'},
34+
{type: 'fraction', value: '00'},
35+
{type: 'literal', value: ')'},
36+
],
37+
[
38+
{type: 'currency', value: 'US$'},
39+
{type: 'integer', value: '0'},
40+
{type: 'decimal', value: '.'},
41+
{type: 'fraction', value: '00'},
42+
],
43+
[
44+
{type: 'currency', value: 'US$'},
45+
{type: 'integer', value: '0'},
46+
{type: 'decimal', value: '.'},
47+
{type: 'fraction', value: '00'},
48+
],
49+
[
50+
{type: 'currency', value: 'US$'},
51+
{type: 'integer', value: '987'},
52+
{type: 'decimal', value: '.'},
53+
{type: 'fraction', value: '00'},
54+
],
1955
],
2056
[
2157
'always',
@@ -66,22 +102,90 @@ const tests: any[] = [
66102
],
67103
],
68104
[
69-
"never",
70-
[{"type":"currency","value":"US$"},{"type":"integer","value":"987"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
71-
[{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
72-
[{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
73-
[{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
74-
[{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
75-
[{"type":"currency","value":"US$"},{"type":"integer","value":"987"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
105+
'never',
106+
[
107+
{type: 'currency', value: 'US$'},
108+
{type: 'integer', value: '987'},
109+
{type: 'decimal', value: '.'},
110+
{type: 'fraction', value: '00'},
111+
],
112+
[
113+
{type: 'currency', value: 'US$'},
114+
{type: 'integer', value: '0'},
115+
{type: 'decimal', value: '.'},
116+
{type: 'fraction', value: '00'},
117+
],
118+
[
119+
{type: 'currency', value: 'US$'},
120+
{type: 'integer', value: '0'},
121+
{type: 'decimal', value: '.'},
122+
{type: 'fraction', value: '00'},
123+
],
124+
[
125+
{type: 'currency', value: 'US$'},
126+
{type: 'integer', value: '0'},
127+
{type: 'decimal', value: '.'},
128+
{type: 'fraction', value: '00'},
129+
],
130+
[
131+
{type: 'currency', value: 'US$'},
132+
{type: 'integer', value: '0'},
133+
{type: 'decimal', value: '.'},
134+
{type: 'fraction', value: '00'},
135+
],
136+
[
137+
{type: 'currency', value: 'US$'},
138+
{type: 'integer', value: '987'},
139+
{type: 'decimal', value: '.'},
140+
{type: 'fraction', value: '00'},
141+
],
76142
],
77143
[
78-
"exceptZero",
79-
[{"type":"literal","value":"("},{"type":"currency","value":"US$"},{"type":"integer","value":"987"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"},{"type":"literal","value":")"}],
80-
[{"type":"literal","value":"("},{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"},{"type":"literal","value":")"}],
81-
[{"type":"literal","value":"("},{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"},{"type":"literal","value":")"}],
82-
[{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
83-
[{"type":"plusSign","value":"+"},{"type":"currency","value":"US$"},{"type":"integer","value":"0"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
84-
[{"type":"plusSign","value":"+"},{"type":"currency","value":"US$"},{"type":"integer","value":"987"},{"type":"decimal","value":"."},{"type":"fraction","value":"00"}],
144+
'exceptZero',
145+
[
146+
{type: 'literal', value: '('},
147+
{type: 'currency', value: 'US$'},
148+
{type: 'integer', value: '987'},
149+
{type: 'decimal', value: '.'},
150+
{type: 'fraction', value: '00'},
151+
{type: 'literal', value: ')'},
152+
],
153+
[
154+
{type: 'literal', value: '('},
155+
{type: 'currency', value: 'US$'},
156+
{type: 'integer', value: '0'},
157+
{type: 'decimal', value: '.'},
158+
{type: 'fraction', value: '00'},
159+
{type: 'literal', value: ')'},
160+
],
161+
[
162+
{type: 'literal', value: '('},
163+
{type: 'currency', value: 'US$'},
164+
{type: 'integer', value: '0'},
165+
{type: 'decimal', value: '.'},
166+
{type: 'fraction', value: '00'},
167+
{type: 'literal', value: ')'},
168+
],
169+
[
170+
{type: 'currency', value: 'US$'},
171+
{type: 'integer', value: '0'},
172+
{type: 'decimal', value: '.'},
173+
{type: 'fraction', value: '00'},
174+
],
175+
[
176+
{type: 'plusSign', value: '+'},
177+
{type: 'currency', value: 'US$'},
178+
{type: 'integer', value: '0'},
179+
{type: 'decimal', value: '.'},
180+
{type: 'fraction', value: '00'},
181+
],
182+
[
183+
{type: 'plusSign', value: '+'},
184+
{type: 'currency', value: 'US$'},
185+
{type: 'integer', value: '987'},
186+
{type: 'decimal', value: '.'},
187+
{type: 'fraction', value: '00'},
188+
],
85189
],
86190
];
87191
describe('signDisplay-currency-zh-TW', function() {

0 commit comments

Comments
 (0)