UNPKG

to-xml

Version:

toXML - Pure JavaScript XML Writer

1 lines 1.7 kB
var toXML=function(t){const n={boolean:l,number:l,object:function(t,n,r){const o=!!n,i=null===r;if(i){if(!o)return;r={}}const l=Object.keys(r),p=l.length,y=l.filter(a),b=y.length,g=t.i,h=t.l;let x,j=o&&g;if(o){g&&t.r&&(t.r+=f+h),t.r+="<"+n,y.forEach((function(n){s(t,n.substr(1),r[n])}));const o=i||b&&p===b;if(o){const r=n[0];"!"!==r&&"?"!==r&&(t.r+="/")}if(t.r+=">",o)return}l.forEach((function(n){a(n)||(j&&(n&&n!==c||e(r[n]))&&(t.l+=t.s,j=0,x=1),u(t,n,r[n]))})),x&&(t.l=t.l.substr(t.i),t.r+=f+t.l);o&&(t.r+="</"+n+">")},string:l},r={"\t":"&#x09;","\n":"&#x0a;","\r":"&#x0d;"," ":"&#x20;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"},o="@",c="#",f="\n",e=Array.isArray||y,i=String.prototype.replace;return t.toXML=function(t,n,r){const o=function(t,n){const r={f:t,l:"",r:""};if(n){let t="";if(n>0)for(let r=n;r;r--)t+=" ";else t+=n;r.s=t,r.i=t.length}return r}(n,r);return u(o,"",t),o.r};function u(t,r,o){if(r===c&&(r=""),y(o))return function(t,n,r){Array.prototype.forEach.call(r,(function(r){u(t,n,r)}))}(t,r,o);const f=t.f;f&&(o=f(r,o));const e=n[typeof o];e&&e(t,r,o)}function l(t,n,r){var o;"?"===n?r="<?"+r+"?>":"!"===n?r="<!"+r+">":(o=r,r=i.call(o,/(^\s|[&<>]|\s$)/g,p),n&&(r="<"+n+">"+r+"</"+n+">")),n&&t.i&&t.r&&(t.r+=f+t.l),t.r+=r}function s(t,n,r){e(r)?r.forEach((function(r){s(t,n,r)})):n||"object"!=typeof r?function(t,n,r){const c=t.f;c&&(r=c(o+n,r));if(void 0===r)return;if(!n)return void(t.r+=" "+r);if(t.r+=" "+n,null===r)return;t.r+='="'+(f=r,i.call(f,/([&"])/g,p)+'"');var f}(t,n,r):Object.keys(r).forEach((function(n){s(t,n,r[n])}))}function a(t){return t&&t[0]===o}function p(t){return r[t]||t}function y(t){return t instanceof Array}}("object"==typeof exports&&exports||{});