aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/dtl/tag/misc.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/dtl/tag/misc.js')
-rw-r--r--includes/js/dojox/dtl/tag/misc.js291
1 files changed, 0 insertions, 291 deletions
diff --git a/includes/js/dojox/dtl/tag/misc.js b/includes/js/dojox/dtl/tag/misc.js
deleted file mode 100644
index 31610d7..0000000
--- a/includes/js/dojox/dtl/tag/misc.js
+++ /dev/null
@@ -1,291 +0,0 @@
-if(!dojo._hasResource["dojox.dtl.tag.misc"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.dtl.tag.misc"] = true;
-dojo.provide("dojox.dtl.tag.misc");
-dojo.require("dojox.dtl._base");
-
-(function(){
- var dd = dojox.dtl;
- var ddtm = dd.tag.misc;
-
- ddtm.DebugNode = dojo.extend(function(TextNode){
- this._TextNode = TextNode;
- },
- {
- render: function(context, buffer){
- var keys = context.getKeys();
- var debug = "";
- for(var i = 0, key; key = keys[i]; i++){
- console.debug("DEBUG", key, ":", context[key]);
- debug += key + ": " + dojo.toJson(context[key]) + "\n\n";
- }
- return new this._TextNode(debug).render(context, buffer, this);
- },
- unrender: function(context, buffer){
- return buffer;
- },
- clone: function(buffer){
- return new this.constructor(this._TextNode);
- },
- toString: function(){ return "ddtm.DebugNode"; }
- });
-
- ddtm.FilterNode = dojo.extend(function(varnode, nodelist){
- this._varnode = varnode;
- this._nodelist = nodelist;
- },
- {
- render: function(context, buffer){
- // Doing this in HTML requires a different buffer with a fake root node
- var output = this._nodelist.render(context, new dojox.string.Builder());
- context.update({ "var": output.toString() });
- var filtered = this._varnode.render(context, buffer);
- context.pop();
- return buffer;
- },
- unrender: function(context, buffer){
- return buffer;
- },
- clone: function(buffer){
- return new this.constructor(this._expression, this._nodelist.clone(buffer));
- }
- });
-
- ddtm.FirstOfNode = dojo.extend(function(vars, TextNode){
- this._vars = vars;
- this.vars = dojo.map(vars, function(item){
- return new dojox.dtl._Filter(item);
- });
- this.contents = new TextNode("");
- },
- {
- render: function(context, buffer){
- for(var i = 0, item; item = this.vars[i]; i++){
- var resolved = item.resolve(context);
- if(typeof resolved != "undefined"){
- if(resolved === null){
- resolved = "null";
- }
- this.contents.set(resolved);
- return this.contents.render(context, buffer);
- }
- }
- return this.contents.unrender(context, buffer);
- },
- unrender: function(context, buffer){
- return this.contents.unrender(context, buffer);
- },
- clone: function(buffer){
- return new this.constructor(this._vars, this.contents.constructor);
- }
- });
-
- ddtm.SpacelessNode = dojo.extend(function(nodelist, TextNode){
- this.nodelist = nodelist;
- this.TextNode = TextNode;
- },
- {
- render: function(context, buffer){
- if(buffer.onAddNodeComplete){
- // Unfortunately, we have to branch here
- var watch = [
- dojo.connect(buffer, "onAddNodeComplete", this, "_watch"),
- dojo.connect(buffer, "onSetParent", this, "_watchParent")
- ];
- buffer = this.nodelist.render(context, buffer);
- dojo.disconnect(watch[0]);
- dojo.disconnect(watch[1]);
- }else{
- if(!this.contents){
- this.contents = new this.TextNode("");
- }
- var value = this.nodelist.dummyRender(context);
- this.contents.set(value.replace(/>\s+</g, '><'));
- buffer = this.contents.render(context, buffer);
- }
- return buffer;
- },
- unrender: function(context, buffer){
- return this.nodelist.unrender(context, buffer);
- },
- clone: function(buffer){
- return new this.constructor(this.nodelist.clone(buffer));
- },
- _isEmpty: function(node){
- return (node.nodeType == 3 && !node.data.match(/[^\s\n]/));
- },
- _watch: function(node){
- if(this._isEmpty(node)){
- var remove = false;
- if(node.parentNode.firstChild == node){
- node.parentNode.removeChild(node);
- }
- }else{
- var children = node.parentNode.childNodes;
- if(node.nodeType == 1 && children.length > 2){
- for(var i = 2, child; child = children[i]; i++){
- if(children[i - 2].nodeType == 1 && this._isEmpty(children[i - 1])){
- node.parentNode.removeChild(children[i - 1]);
- return;
- }
- }
- }
- }
- },
- _watchParent: function(node){
- var children = node.childNodes;
- if(children.length){
- while(node.childNodes.length){
- var last = node.childNodes[node.childNodes.length - 1];
- if(!this._isEmpty(last)){
- return;
- }
- node.removeChild(last);
- }
- }
- }
- });
-
- ddtm.TemplateTagNode = dojo.extend(function(tag, TextNode){
- this.tag = tag;
- this.contents = new TextNode("");
- },
- {
- mapping: {
- openblock: "{%",
- closeblock: "%}",
- openvariable: "{{",
- closevariable: "}}",
- openbrace: "{",
- closebrace: "}",
- opencomment: "{#",
- closecomment: "#}"
- },
- render: function(context, buffer){
- this.contents.set(this.mapping[this.tag]);
- return this.contents.render(context, buffer);
- },
- unrender: function(context, buffer){
- return this.contents.unrender(context, buffer);
- },
- clone: function(buffer){
- return new this.constructor(this.tag, this.contents.constructor);
- }
- });
-
- ddtm.WidthRatioNode = dojo.extend(function(current, max, width, TextNode){
- this.current = new dd._Filter(current);
- this.max = new dd._Filter(max);
- this.width = width;
- this.contents = new TextNode("");
- },
- {
- render: function(context, buffer){
- var current = +this.current.resolve(context);
- var max = +this.max.resolve(context);
- if(typeof current != "number" || typeof max != "number" || !max){
- this.contents.set("");
- }else{
- this.contents.set("" + Math.round((current / max) * this.width));
- }
- return this.contents.render(context, buffer);
- },
- unrender: function(context, buffer){
- return this.contents.unrender(context, buffer);
- },
- clone: function(buffer){
- return new this.constructor(this.current.getExpression(), this.max.getExpression(), this.width, this.contents.constructor);
- }
- });
-
- ddtm.WithNode = dojo.extend(function(target, alias, nodelist){
- this.target = new dd._Filter(target);
- this.alias = alias;
- this.nodelist = nodelist;
- },
- {
- render: function(context, buffer){
- var target = this.target.resolve(context);
- context.push();
- context[this.alias] = target;
- buffer = this.nodelist.render(context, buffer);
- context.pop();
- return buffer;
- },
- unrender: function(context, buffer){
- return buffer;
- },
- clone: function(buffer){
- return new this.constructor(this.target.getExpression(), this.alias, this.nodelist.clone(buffer));
- }
- });
-
- dojo.mixin(ddtm, {
- comment: function(parser, text){
- // summary: Ignore everything between {% comment %} and {% endcomment %}
- parser.skipPast("endcomment");
- return dd._noOpNode;
- },
- debug: function(parser, text){
- // summary: Output the current context, maybe add more stuff later.
- return new ddtm.DebugNode(parser.getTextNodeConstructor());
- },
- filter: function(parser, text){
- // summary: Filter the contents of the blog through variable filters.
- var parts = text.split(" ", 2);
- var varnode = new (parser.getVarNodeConstructor())("var|" + parts[1]);
- var nodelist = parser.parse(["endfilter"]);
- parser.next();
- return new ddtm.FilterNode(varnode, nodelist);
- },
- firstof: function(parser, text){
- var parts = dojox.dtl.text.pySplit(text).slice(1);
- if(!parts.length){
- throw new Error("'firstof' statement requires at least one argument");
- }
- return new ddtm.FirstOfNode(parts, parser.getTextNodeConstructor());
- },
- spaceless: function(parser, text){
- var nodelist = parser.parse(["endspaceless"]);
- parser.next();
- return new ddtm.SpacelessNode(nodelist, parser.getTextNodeConstructor());
- },
- templatetag: function(parser, text){
- var parts = dd.text.pySplit(text);
- if(parts.length != 2){
- throw new Error("'templatetag' statement takes one argument");
- }
- var tag = parts[1];
- var mapping = ddtm.TemplateTagNode.prototype.mapping;
- if(!mapping[tag]){
- var keys = [];
- for(var key in mapping){
- keys.push(key);
- }
- throw new Error("Invalid templatetag argument: '" + tag + "'. Must be one of: " + keys.join(", "));
- }
- return new ddtm.TemplateTagNode(tag, parser.getTextNodeConstructor());
- },
- widthratio: function(parser, text){
- var parts = dd.text.pySplit(text);
- if(parts.length != 4){
- throw new Error("widthratio takes three arguments");
- }
- var width = +parts[3];
- if(typeof width != "number"){
- throw new Error("widthratio final argument must be an integer");
- }
- return new ddtm.WidthRatioNode(parts[1], parts[2], width, parser.getTextNodeConstructor());
- },
- with_: function(parser, text){
- var parts = dd.text.pySplit(text);
- if(parts.length != 4 || parts[2] != "as"){
- throw new Error("do_width expected format as 'with value as name'");
- }
- var nodelist = parser.parse(["endwith"]);
- parser.next();
- return new ddtm.WithNode(parts[1], parts[3], nodelist);
- }
- });
-})();
-
-}