@omnia/tooling-vue
Version:
Used to bundle and serve manifests web component that build on Vue framework.
51 lines (50 loc) • 1.98 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
function default_1(contents, context) {
const loaderUtils = require("loader-utils");
const options = loaderUtils.getOptions(this);
if (options) {
Object.keys(options).forEach((key) => {
//injectDefaultProperties(options[key]);
let domProps = ["useValidator", "styles", "themeDefinition"].concat(options[key] || []);
var elements = getElements(key, contents);
elements.forEach((element) => {
let newElement = element;
domProps.forEach((propName) => {
let propPattern = `\\s${propName}\\s\*\=`;
var propResults = newElement.match(new RegExp(propPattern, "g"));
if (propResults) {
propResults.map(function (prop, propIndex) {
newElement = newElement.replace(prop, ` domProps-${propName}=`);
});
}
});
contents = contents.replace(element, newElement);
});
});
}
return contents;
}
exports.default = default_1;
function getElements(elementName, inputText) {
var preElement = `<${elementName}`;
var midElement = `</${elementName}`;
var postElement = `>`;
var preIndex, midIndex, postIndex;
var index = 0;
var length = inputText.length;
var elements = [];
while (index < length) {
preIndex = inputText.indexOf(preElement, index);
midIndex = inputText.indexOf(midElement, preIndex + 1);
postIndex = inputText.indexOf(postElement, midIndex + 1);
if (preIndex < 0 || midIndex < 0 || postIndex < 0) {
break;
}
var partLength = postIndex - preIndex + 1;
var part = inputText.substr(preIndex, partLength);
elements.push(part);
index = postIndex + 1;
}
return elements;
}
;