webpack/lib/container/parseOptions.js

38 lines
956 B
JavaScript
Raw Normal View History

2020-02-25 04:12:45 +08:00
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict";
2020-02-27 01:29:24 +08:00
const parseOptionsInternal = (prefix, options, result) => {
2020-02-25 04:12:45 +08:00
if (Array.isArray(options)) {
for (const item of options) {
2020-02-27 01:29:24 +08:00
parseOptionsInternal(prefix, item, result);
2020-02-25 04:12:45 +08:00
}
} else if (typeof options === "string") {
result.push([prefix + options.replace(/^([^\w]+\/)+/, ""), options]);
} else if (options && typeof options === "object") {
for (const key of Object.keys(options)) {
const value = options[key];
if (typeof value === "string") {
result.push([prefix + key, value]);
} else {
2020-02-27 01:29:24 +08:00
parseOptionsInternal(prefix + key + "/", value, result);
2020-02-25 04:12:45 +08:00
}
}
}
};
2020-02-27 01:29:24 +08:00
/**
* @param {TODO} options options passed by the user
* @returns {[string, string][]} parsed options
*/
const parseOptions = options => {
2020-02-25 04:12:45 +08:00
const result = [];
2020-02-27 01:29:24 +08:00
parseOptionsInternal("", options, result);
2020-02-25 04:12:45 +08:00
return result;
};
2020-02-27 01:29:24 +08:00
module.exports = parseOptions;