uparser
Version:
The uhtml template parser
2 lines (1 loc) • 653 B
JavaScript
var uparser=function(e){"use strict";const t=/([^\s\\>"'=]+)\s*=\s*(['"]?)$/,r=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i,s=/<[a-z][^>]+$/i,a=/>[^<>]*$/,$=/<([a-z]+[a-z0-9:._-]*)([^>]*?)(\/>)/gi,n=/\s+$/,c=(e,t)=>0<t--&&(s.test(e[t])||!a.test(e[t])&&c(e,t)),i=(e,t,s)=>r.test(t)?e:`<${t}${s.replace(n,"")}></${t}>`;return e.default=(e,r,s)=>{const a=[],{length:n}=e;for(let s=1;s<n;s++){const $=e[s-1];a.push(t.test($)&&c(e,s)?$.replace(t,(e,t,a)=>`${r}${s-1}=${a||'"'}${t}${a?"":'"'}`):`${$}\x3c!--${r}${s-1}--\x3e`)}a.push(e[n-1]);const u=a.join("").trim();return s?u:u.replace($,i)},e}({}).default;