- From: Marcos Cáceres <notifications@github.com>
- Date: Sun, 02 Apr 2017 21:50:01 -0700
- To: w3c/browser-payment-api <browser-payment-api@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Monday, 3 April 2017 04:50:35 UTC
We should make it use the infrastructure from the Intl API, IMO:
* It's basically /^[a-z]{3}$/i (case insensitive match) using [`IsWellFormedCurrencyCode`](http://www.ecma-international.org/ecma-402/2.0/#sec-iswellformedcurrencycode).
* Throws RangeError when invalid.
* We don't throw when the currency is unknown (so long as `IsWellFormedCurrencyCode` returns true, it's valid).
* Canonicalize code internally to uppercase.
When the value is not in ISO 4217, the canonicalized code can be used as the symbol - we make a note of this in a l18n guidance section.
Thus:
```JS
// This is fine
const details = {
total: {
label: "Total due",
// FOO50.00
amount: { currency: "Foo", value: "50.00" },
}
};
// This throws
const details = {
total: {
label: "Total due",
// FOO50.00
amount: { currency: "this is no good", value: "50.00" },
}
};
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/browser-payment-api/issues/490#issuecomment-291048145
Received on Monday, 3 April 2017 04:50:35 UTC