1 | require = require("enhanced-require")(module);
|
2 |
|
3 | function 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 |
|
14 | module.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 |