prettier-plugin-razor
Version:
47 lines (42 loc) • 1.27 kB
JavaScript
// Code originally from from https://github.com/rayd/html-parse-stringify2
var attrRE = /([@\w\-\.]+)|=|(['"])([.\s\S]*?)\2/g;
var voidElements = require('void-elements');
module.exports = function (tag) {
var i = 0;
var key;
var expectingValueAfterEquals = true;
var res = {
type: 'tag',
name: '',
endtag: tag.indexOf('</') === 0,
voidElement: false,
attrs: {},
children: []
};
tag.replace(attrRE, function (match) {
if (match === '=') {
expectingValueAfterEquals = true;
i++;
return;
}
if (!expectingValueAfterEquals) {
if (key) {
res.attrs[key] = key; // boolean attribute
}
key=match;
} else {
if (i === 0) {
if (voidElements[match] || tag.charAt(tag.length - 2) === '/') {
res.voidElement = true;
}
res.name = match;
} else {
res.attrs[key] = match.replace(/^['"]|['"]$/g, '');
key=undefined;
}
}
i++;
expectingValueAfterEquals = false;
});
return res;
};