UNPKG

babelute-html-string-pragmatics

Version:

String output engine for babelute-html-lexicon

1 lines 3.89 kB
"use strict";function _interopDefault(t){return t&&typeof t==="object"&&"default"in t?t["default"]:t}var babelute=_interopDefault(require("babelute"));var htmlLexicon=_interopDefault(require("babelute-html-lexicon"));var index$3=toNoCase;var hasSpace=/\s/;var hasSeparator=/(_|-|\.|:)/;var hasCamel=/([a-z][A-Z]|[A-Z][a-z])/;function toNoCase(t){if(hasSpace.test(t))return t.toLowerCase();if(hasSeparator.test(t))return(unseparate(t)||t).toLowerCase();if(hasCamel.test(t))return uncamelize(t).toLowerCase();return t.toLowerCase()}var separatorSplitter=/[\W_]+(.|$)/g;function unseparate(t){return t.replace(separatorSplitter,function(t,e){return e?" "+e:""})}var camelSplitter=/(.)([A-Z]+)/g;function uncamelize(t){return t.replace(camelSplitter,function(t,e,a){return e+" "+a.toLowerCase().split("").join(" ")})}var index$1=toSpaceCase;function toSpaceCase(t){return index$3(t).replace(/[\W_]+(.|$)/g,function(t,e){return e?" "+e:""}).trim()}var index=toSlugCase;function toSlugCase(t){return index$1(t).replace(/\s/g,"-")}var mapEncode={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};var mapDecode={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"};var htmlSpecialChars={encode:function t(e){return e.replace(/[&<>"']/g,function(t){return mapEncode[t]})},decode:function t(e){return e.replace(/(&amp;|&lt;|&gt;|&quot;|&#39;)/g,function(t){return mapDecode[t]})}};var classCallCheck=function(t,e){if(!(t instanceof e)){throw new TypeError("Cannot call a class as a function")}};var toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,a=Array(t.length);e<t.length;e++)a[e]=t[e];return a}else{return Array.from(t)}};var $baseOutput=babelute.FacadePragmatics.prototype.$output;var stringPragmas=babelute.createFacadePragmatics({html:true},{tag:function t(e,a,r){var n=new TagDescriptor,i=a[1];var s=void 0;if(i)for(var o=0,u=i.length;o<u;++o){s=i[o];if(typeof s==="undefined")continue;if(s&&s.__babelute__)this.$output(n,s,r);else if(typeof s==="string")n.children+=htmlSpecialChars.encode(s);else n.children+=s}tagOutput(e,n,a[0])},text:function t(e,a){e.children+=htmlSpecialChars.encode(a[0])},class:function t(e,a){if(a[0]&&(a.length===1||a[1]))e.classes+=(e.classes?" ":"")+a[0]},classes:function t(e,a){e.classes+=(e.classes?" ":"")+a[0]},style:function t(e,a){e.style+=a[0]+":"+a[1]+";"},prop:function t(e,a){if(a[1])e.attributes+=" "+a[0]},data:function t(e,a){var r="data-"+index(a[0]),n=a[1],i=typeof n!=="undefined";e.attributes+=" "+r+(i?'="'+n+'"':"")},attr:function t(e,a){var r=a[1];e.attributes+=" "+a[0]+'="'+(typeof r==="string"?r.replace(/"/g,'\\"').replace(/</g,"&lt;").replace(/>/g,"&gt;"):r)+'"'},id:function t(e,a){e.attributes=' id="'+a[0]+'"'+e.attributes},html:function t(e,a){e.children+=a[0]},onString:function t(e,a,r){var n=a[0];if(n)n(e,r)},ref:function t(e,a,r){r[a[0]]=e},component:function t(e,a,r){var n=a[0],i=a[1],s=new n(i,r);this.$output(e,s.render(false),s)},postalComponent:function t(){},container:function t(e,a,r){this.$output(e,a[0]({unmount:function t(){}}),r)},switchUse:function t(e,a,r){var n;var i=(n=new babelute.Babelute)._use.apply(n,[a[0]].concat(toConsumableArray(a[1])));this.$output(e,i,r)},$output:function t(e,a,r){return $baseOutput.call(this,e||new TagDescriptor,a,r).children}});var TagDescriptor=function t(){classCallCheck(this,t);this.children="";this.classes="";this.style="";this.attributes=""};var selfClosingTags=/area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr/;function tagOutput(t,e,a){var r="<"+a+e.attributes;if(e.style)r+=' style="'+e.style+'"';if(e.classes)r+=' class="'+e.classes+'"';if(e.children)t.children+=r+">"+e.children+"</"+a+">";else if(selfClosingTags.test(a))t.children+=r+"/>";else t.children+=r+"></"+a+">"}htmlLexicon.addAliases({$toHTMLString:function t(e){return stringPragmas.$output(e,this)}});module.exports=stringPragmas;