UNPKG

prettier-plugin-razor

Version:
47 lines (42 loc) 1.27 kB
// 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; };