UNPKG

1.14 kBJavaScriptView Raw
1require = require("enhanced-require")(module);
2
3function mergeObj(target, source) {
4 for(var p in source) {
5 if(Object.hasOwnProperty.call(source, p)) {
6 if(typeof source[p] === "object" && typeof target[p] === "object") {
7 mergeObj(target[p], source[p]);
8 } else
9 target[p] = source[p];
10 }
11 }
12}
13
14module.exports = function() {
15 var loaderSign = this.request.indexOf("!");
16 var req = this.request.substr(loaderSign+1);
17 var match = /^(.*)[\/\\]([^\.\/\\]+)\.([^\/\\!]+)$/.exec(req);
18 var path = match[1];
19 var locale = match[2].split("-");
20 var filename = match[3];
21 var result = {};
22 var cb = this.async() || this.callback;
23 var context = this;
24 function next(i) {
25 if(i <= locale.length) {
26 var request = path + "/" + (i == 0 ? "" : locale.slice(0, i).join("-") + ".") + filename;
27 context.resolve(context.context, request, function(err, resolveRequest) {
28 if(err) return cb(err);
29 var part = require(resolveRequest);
30 mergeObj(result, part);
31 next(i+1);
32 });
33 } else {
34 cb(null, "module.exports = " + JSON.stringify(result, undefined, "\t") + ";");
35 }
36 }
37 next(0);
38}
\No newline at end of file