Revision: 40723
Updated Code
at February 6, 2011 04:23 by pablo_PXL
Updated Code
/* All glory to the ml() @subp Page-like structured array */ function ml(subp,ctx){ var out = '', ctx = ctx||{}, force = ['script'], clean = function(t){return t.replace(/"/g,'"')}, fill = function(t){return t.replace(/{{[^}]*}}/g, function(hld){with(ctx){return (eval(hld))}})}, render_tags = arguments.callee, render_props = function(props){ var out = ''; if (props) for(var p in props){ if(props.hasOwnProperty(p)) out += ' '+p+'="'+clean(props[p])+'"'; } return out; }; for(var i=0,l=subp.length;i<l;i++){ var len = subp[i].length; var name = subp[i][0], props = len>1&&!subp[i][1].pop?subp[i][1]:null, tags = subp[i][len-1].pop?subp[i][len-1]:null; var rtags = (!tags?null:tags.length==1?tags:render_tags(tags,ctx)), rprops = props?render_props(props):''; out += rtags||(force.indexOf(name)>-1)? '<'+name+(rprops?rprops:'')+'>'+(rtags||'')+'</'+name+'>': '<'+name+(rprops?rprops:'')+'/>'; } return fill(out); } // Some testing var ctx = { a:1,b:2 }; var page = [ ['html',[ ['head',[['script',{ type: 'text/javascript', src: 'http://www.pablovidal.org/js/jquery-underscore'}], ['script',{type: 'text/javascript'},['console.log($);']]] ], ['body',[['h1',['ml 0.1']], ['span',{style:'font-style:italic'},['round {{ a }}... maybe {{ b }}... fight']],['br']] ]] ] ]; document.write(ml(page,ctx));
Revision: 40722
Updated Code
at February 6, 2011 03:55 by pablo_PXL
Updated Code
/* All glory to the ml() @subp Page-like structured array */ function ml(subp){ var out = '', force = ['script'], clean = function(t){ return t.replace(/"/g,'"'); }, render_tags = arguments.callee, render_props = function(props){ var out = ''; if (props) for(var p in props){ if(props.hasOwnProperty(p)) out += ' '+p+'="'+clean(props[p])+'"'; } return out; }; for(var i=0,l=subp.length;i<l;i++){ var len = subp[i].length; var name = subp[i][0], props = len>1&&!subp[i][1].pop?subp[i][1]:null, tags = subp[i][len-1].pop?subp[i][len-1]:null; var rtags = (!tags?null:tags.length==1?tags:render_tags(tags)), rprops = props?render_props(props):''; out += rtags||(force.indexOf(name)>-1)? '<'+name+(rprops?rprops:'')+'>'+(rtags||'')+'</'+name+'>': '<'+name+(rprops?rprops:'')+'/>'; } return out; } var page = [ ['html',[ ['head',[['script',{ type: 'text/javascript', src: 'http://www.pablovidal.org/js/jquery-underscore'}], ['script',{type: 'text/javascript'},['console.log($);']]] ], ['body',[['h1',['ml 0.1']], ['span',{style:'font-style:italic'},['round 1... fight']],['br']] ]] ] ]; document.write(ml(page));
Revision: 40721
Updated Code
at February 6, 2011 03:39 by pablo_PXL
Updated Code
/* All glory to the ml() @subp Page-like structured array */ function ml(subp){ var out = '', force = ['script'], clean = function(t){ return t.replace(/"/g,'"'); } render_tags = arguments.callee, render_props = function(props){ var out = ''; if (props) for(var p in props){ if(props.hasOwnProperty(p)) out += ' '+p+'="'+clean(props[p])+'"'; } return out; }; for(var i=0,l=subp.length;i<l;i++){ var len = subp[i].length; var name = subp[i][0], props = len>1&&!subp[i][1].pop?subp[i][1]:null, tags = subp[i][len-1].pop?subp[i][len-1]:null; var rtags = (!tags?null:tags.length==1?tags:render_tags(tags)), rprops = props?render_props(props):''; out += rtags||(force.indexOf(name)>-1)? '<'+name+(rprops?rprops:'')+'>'+(rtags||'')+'</'+name+'>': '<'+name+(rprops?rprops:'')+'/>'; } return out; } var page = [ ['html',[ ['head',[['script',{ type: 'text/javascript', src: 'http://www.pablovidal.org/js/jquery-underscore'}], ['script',{type: 'text/javascript'},['console.log($);']]] ], ['body',[['h1',['ml 0.1']], ['span',{style:'font-style:italic'},['round 1... fight']],['br']] ]] ] ]; document.write(ml(page));
Revision: 40720
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 6, 2011 03:36 by pablo_PXL
Initial Code
/* All glory to the ml() @subp Page-like structured array */ function ml(subp){ var out = '', force = ['script'], clean = function(t){ return t.replace(/"/g,'"'); } render_tags = arguments.callee, render_props = function(props){ var out = ''; if (props) for(var p in props){ if(props.hasOwnProperty(p)) out += ' '+p+'="'+clean(props[p])+'"'; } return out; }; for(var i=0,l=subp.length;i<l;i++){ var len = subp[i].length; var name = subp[i][0], props = len>1&&!subp[i][1].pop?subp[i][1]:null, tags = subp[i][len-1].pop?subp[i][len-1]:null; var rtags = (!tags?null:tags.length==1?tags:render_tags(tags)), rprops = props?render_props(props):''; out += rtags||(force.indexOf(name)>-1)? '<'+name+(rprops?rprops:'')+'>'+(rtags||'')+'</'+name+'>': '<'+name+(rprops?rprops:'')+'/>'; } return out; }
Initial URL
http://www.twitter.com/pablo_PXL
Initial Description
All glory to the ml function.
Initial Title
Page-like structured array to HTML
Initial Tags
template, html, array
Initial Language
JavaScript