-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.j_ku.min.js
1 lines (1 loc) · 2.28 KB
/
jquery.j_ku.min.js
1
jQuery.j_ku=function(rules){var poem=jQuery.j_ku.Poem();try{rules.apply(poem);return poem.verses()}catch(e){if(e!="This poem is a template"){throw e}var factory_of_verses=function(data_input){var poem=jQuery.j_ku.Poem();poem.data=function(){return data_input};rules.apply(poem);return poem.verses()};return factory_of_verses}};jQuery.j_ku.Poem=function(){var instanceStore={data:function(){throw"This poem is a template"},verses:function(){return this.store.contents()},html:function(){return this.store.html()}};instanceStore.store=jQuery("<div/>");function F(){}F.prototype=instanceStore;var result=new F();result.uber=instanceStore;var attr;for(attr in jQuery.j_ku.Methods){if(jQuery.j_ku.Methods.hasOwnProperty(attr)){result[attr]=jQuery.j_ku.Methods[attr]}}return result};jQuery.j_ku.Methods={makeTag:function(tag,attrs,content){if(content===undefined&&typeof(attrs)=="string"){content=attrs;attrs=undefined}var tag_name=/^([\w\-]+)/.exec(tag);tag_name=tag_name||["","div"];var result=jQuery("<"+tag_name[1]+"/>");var tag_id=/(?:#([\w\-]+)?)/.exec(tag);if(tag_id){result.attr("id",tag_id[1])}var tag_classes=tag.replace(/^([\w\-]+)/,"").replace(/[#][\w\-]*/,"").replace(/\./g," ");if(tag_classes){result.addClass(tag_classes)}if(content!==undefined){result.html(""+content)}if(attrs!==undefined){var attribute;for(attribute in attrs){if(attrs.hasOwnProperty(attribute)){result.attr(attribute,attrs[attribute])}}}return result},t:function(tag,attr,content){var node=this.makeTag(tag,attr,content);this.store.append(node);var result=new this.verse(node);result.t=function(){throw'Chaining .t goes up one node, but you are already at the topmost level. don\'t chain like this "t().t()"'};return result},verse:function(upper,sibling){var result={};result.upper=upper;result.sibling=sibling;var attr;for(attr in jQuery.j_ku.Methods){if(jQuery.j_ku.Methods.hasOwnProperty(attr)){result[attr]=jQuery.j_ku.Methods[attr]}}result._t=function(tag,attr,content){var node=this.makeTag(tag,attr,content);upper.append(node);return new this.verse(upper,node)};result.__t=function(tag,attr,content){var node=this.makeTag(tag,attr,content);sibling.append(node);return new this.verse(sibling,node)};result.t=function(tag,attr,content){var node=this.makeTag(tag,attr,content);upper.after(node);return new this.verse(upper.parent(),node)};return result}};