-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathExtractor.js
55 lines (45 loc) · 1.41 KB
/
Extractor.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
* abstraction for containing extracted phrases from react-globalize-compiler
*/
var extend = require("util")._extend;
var reactGlobalizeCompiler = require("react-globalize-compiler");
function Extractor() {
this.asts = {};
this.defaultMessages = {};
this.extracts = {};
}
Extractor.prototype.allDefaultMessages = function() {
var defaultMessages = this.defaultMessages;
return Object.keys(defaultMessages).reduce(function(sum, request) {
extend(sum, defaultMessages[request]);
return sum;
}, {});
};
Extractor.prototype.getDefaultMessages = function(request) {
if (!request) {
return this.allDefaultMessages();
}
if (!this.defaultMessages[request]) {
// Statically extract Globalize & React Globalize default messages.
this.defaultMessages[request] =
reactGlobalizeCompiler.extractDefaultMessages(this.asts[request]);
}
return this.defaultMessages[request];
};
Extractor.prototype.allExtracts = function() {
var extracts = this.extracts;
return Object.keys(extracts).map(function(request) {
return extracts[request];
});
};
Extractor.prototype.getExtracts = function(request) {
if (!request) {
return this.allExtracts();
}
if (!this.extracts[request]) {
// Statically extract React Globalize formatters.
this.extracts[request] = reactGlobalizeCompiler.extract(this.asts[request]);
}
return this.extracts[request];
};
module.exports = Extractor;