diff options
Diffstat (limited to 'extension/lib/util.ts')
-rw-r--r-- | extension/lib/util.ts | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/extension/lib/util.ts b/extension/lib/util.ts new file mode 100644 index 000000000..106e22970 --- /dev/null +++ b/extension/lib/util.ts @@ -0,0 +1,34 @@ +'use strict'; + +/** + * Parse an amount that is specified like '5.42 EUR'. + * Returns a {currency,value,fraction} object or null + * if the input is invalid. + */ +function amount_parse_pretty(s) { + let pattern = /(\d+)(.\d+)?\s*([a-zA-Z]+)/; + let matches = pattern.exec(s); + if (null == matches) { + return null; + } + return { + // Always succeeds due to regex + value: parseInt(matches[1]), + // Should we warn / fail on lost precision? + fraction: Math.round(parseFloat(matches[2] || "0") * 1000000), + currency: matches[3], + }; +} + + +function format(s: string, ...args: any[]) { + function r(m, n) { + let i = parseInt(n); + return args[i]; + } + s = s.replace(/{{/g, '{'); + s = s.replace(/}}/g, '}'); + s = s.replace(/{([0-9]+)}/g, r); + return s; +} + |