-
Notifications
You must be signed in to change notification settings - Fork 22.9k
/
locale.js
31 lines (27 loc) · 955 Bytes
/
locale.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var fs = require("fs"),
puts = require("util").puts,
formats = {},
kvRe = /=/,
valueRe = /;/g,
quotedRe = /"([^"]*?)"/g,
data = [];
process.stdin.resume();
process.stdin.setEncoding("utf8");
process.stdin.on("data", function(chunk) { data.push(chunk); });
process.stdin.on("end", write);
function write() {
data.join("\n").split(/\n/g).forEach(function(line) {
var i = line.match(kvRe);
if (i && (i = i.index)) {
var value = line.substring(i + 1).replace(quotedRe, "$1").split(valueRe);
formats[line.substring(0, i)] = value;
}
});
puts(fs.readFileSync(process.argv[2], "utf8").replace(/\{([^\}]+)\}/g, function(d, k) {
d = formats[k];
return k === "grouping"
? d === "127" || d === "0" ? null : "[" + d.map(Number).join(", ") + "]"
: d == null ? null : d.length > 1 ? "[" + d.map(quote).join(", ") + "]" : quote(d[0]);
}));
}
function quote(d) { return '"' + d + '"'; }