1 | module.exports = function loadersByExtension(obj) {
|
2 | var loaders = [];
|
3 | var extensions = Object.keys(obj).map(function(key) {
|
4 | return key.split("|");
|
5 | }).reduce(function(arr, a) {
|
6 | arr.push.apply(arr, a);
|
7 | return arr;
|
8 | }, []);
|
9 | Object.keys(obj).forEach(function(key) {
|
10 | var exts = key.split("|");
|
11 | var value = obj[key];
|
12 | var entry = {
|
13 | extensions: exts,
|
14 | test: extsToRegExp(exts),
|
15 | loaders: value
|
16 | };
|
17 | if(Array.isArray(value)) {
|
18 | entry.loaders = value;
|
19 | } else if(typeof value === "string") {
|
20 | entry.loader = value;
|
21 | } else {
|
22 | Object.keys(value).forEach(function(key) {
|
23 | entry[key] = value[key];
|
24 | });
|
25 | }
|
26 | loaders.push(entry);
|
27 | });
|
28 | return loaders;
|
29 | };
|
30 |
|
31 | function extsToRegExp(exts) {
|
32 | return new RegExp("\\.(" + exts.map(function(ext) {
|
33 | return ext.replace(/\./g, "\\.") + "(\\?.*)?";
|
34 | }).join("|") + ")$");
|
35 | }
|