UNPKG

posthtml-render

Version:
2 lines (1 loc) 2.85 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var D=Object.defineProperty;var I=Object.prototype.hasOwnProperty;var x=Object.getOwnPropertySymbols,U=Object.prototype.propertyIsEnumerable;var N=(n,r,f)=>r in n?D(n,r,{enumerable:!0,configurable:!0,writable:!0,value:f}):n[r]=f,A=(n,r)=>{for(var f in r||(r={}))I.call(r,f)&&N(n,f,r[f]);if(x)for(var f of x(r))U.call(r,f)&&N(n,f,r[f]);return n};var _isjson = require('is-json'); var _isjson2 = _interopRequireDefault(_isjson);var u;(function(l){l.tag="tag",l.slash="slash",l.default="default",l.closeAs="closeAs"})(u||(u={}));var i;(function(s){s.tag="tag",s.slash="slash",s.default="default"})(i||(i={}));var b;(function(s){s[s.Smart=0]="Smart",s[s.Single=1]="Single",s[s.Double=2]="Double"})(b||(b={}));var y=["area","base","br","col","command","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],j=/[\t\n\f\r "'`=<>]/,v={closingSingleTag:void 0,quoteAllAttributes:!0,replaceQuote:!0,quoteStyle:b.Double};function G(n,r={}){var h;let f=y;r.singleTags&&(f=[...new Set([...y,...r.singleTags])]),r=A(A(A({},v),r),{singleTags:f});let{singleTags:s,closingSingleTag:l,quoteAllAttributes:m,replaceQuote:R,quoteStyle:$}=r,g=(h=s==null?void 0:s.filter(a=>a instanceof RegExp))!=null?h:[];return Array.isArray(n)||(n||(n=""),n=[n]),d(n);function d(a){let t="";for(let e of a){if(e===!1||e===void 0||e===null||typeof e=="string"&&e.length===0||Number.isNaN(e))continue;if(Array.isArray(e)){if(e.length===0)continue;t+=d(e);continue}if(typeof e=="string"||typeof e=="number"){t+=e;continue}if(Array.isArray(e.content)||(e.content||(e.content=""),e.content=[e.content]),e.tag===!1){t+=d(e.content);continue}let o=typeof e.tag=="string"?e.tag:"div";t+=`<${o}`,e.attrs&&(t+=Q(e.attrs));let c={[i.tag]:`></${o}>`,[i.slash]:" />",[i.default]:">"};if(k(o)){switch(l){case u.tag:t+=c[i.tag];break;case u.slash:t+=c[i.slash];break;case u.closeAs:t+=c[e.closeAs?i[e.closeAs]:i.default];break;default:t+=c[i.default]}e.content&&(t+=d(e.content))}else if(l===u.closeAs&&e.closeAs){let w=e.closeAs?i[e.closeAs]:i.default;t+=`${c[w]}${d(e.content)}`}else t+=`>${d(e.content)}</${o}>`}return t}function k(a){return g.length>0?g.some(t=>t.test(a)):!!(s==null?void 0:s.includes(a.toLowerCase()))}function Q(a){let t="";for(let[e,o]of Object.entries(a))if(typeof o=="string")if(_isjson2.default.call(void 0, o))t+=p(e,o);else if(m||j.test(o)){let c=o;R&&(c=o.replace(/"/g,"&quot;")),t+=p(e,c,$)}else o===""?t+=` ${e}`:t+=` ${e}=${o}`;else o===!0?t+=` ${e}`:typeof o=="number"&&(t+=p(e,o,$));return t}function p(a,t,e=1){return e===1?` ${a}='${t}'`:e===2?` ${a}="${t}"`:typeof t=="string"&&t.includes('"')?` ${a}='${t}'`:` ${a}="${t}"`}}var F=G;exports.default = F;