diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:00:26 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:00:26 +0200 |
commit | 489b8cb45e4a13ab85d008946acf91ac438851fa (patch) | |
tree | ad0ea5a5f655a02c844e229b454b11d59693aa48 /src/types.ts | |
parent | bd17ead09a1baad43e8947d729f43257b4fb6d08 (diff) | |
download | wallet-core-489b8cb45e4a13ab85d008946acf91ac438851fa.tar.xz |
correct and simplify test cases
Diffstat (limited to 'src/types.ts')
-rw-r--r-- | src/types.ts | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/types.ts b/src/types.ts index 240275975..53f98948e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -741,6 +741,21 @@ export namespace Amounts { export function isNonZero(a: AmountJson) { return a.value > 0 || a.fraction > 0; } + + /** + * Parse an amount like 'EUR:20.5' for 20 Euros and 50 ct. + */ + export function parse(s: string): AmountJson|undefined { + let res = s.match(/([a-zA-Z0-9_*-]+):([0-9])+([.][0-9]+)?/); + if (!res) { + return undefined; + } + return { + currency: res[1], + value: Number.parseInt(res[2]), + fraction: Math.round(fractionalBase * Number.parseFloat(res[3] || "0")), + } + } } |