aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/dtl/tag/logic.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/dtl/tag/logic.js')
-rw-r--r--includes/js/dojox/dtl/tag/logic.js272
1 files changed, 0 insertions, 272 deletions
diff --git a/includes/js/dojox/dtl/tag/logic.js b/includes/js/dojox/dtl/tag/logic.js
deleted file mode 100644
index 90909ce..0000000
--- a/includes/js/dojox/dtl/tag/logic.js
+++ /dev/null
@@ -1,272 +0,0 @@
-if(!dojo._hasResource["dojox.dtl.tag.logic"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.dtl.tag.logic"] = true;
-dojo.provide("dojox.dtl.tag.logic");
-
-dojo.require("dojox.dtl._base");
-
-(function(){
- var dd = dojox.dtl;
- var ddt = dd.text;
- var ddtl = dd.tag.logic;
-
- ddtl.IfNode = dojo.extend(function(bools, trues, falses, type){
- this.bools = bools;
- this.trues = trues;
- this.falses = falses;
- this.type = type;
- },
- {
- render: function(context, buffer){
- var i, bool, ifnot, filter, value;
- if(this.type == "or"){
- for(i = 0; bool = this.bools[i]; i++){
- ifnot = bool[0];
- filter = bool[1];
- value = filter.resolve(context);
- if((value && !ifnot) || (ifnot && !value)){
- if(this.falses){
- buffer = this.falses.unrender(context, buffer);
- }
- return (this.trues) ? this.trues.render(context, buffer, this) : buffer;
- }
- }
- if(this.trues){
- buffer = this.trues.unrender(context, buffer);
- }
- return (this.falses) ? this.falses.render(context, buffer, this) : buffer;
- }else{
- for(i = 0; bool = this.bools[i]; i++){
- ifnot = bool[0];
- filter = bool[1];
- value = filter.resolve(context);
- // If we ever encounter a false value
- if(value == ifnot){
- if(this.trues){
- buffer = this.trues.unrender(context, buffer);
- }
- return (this.falses) ? this.falses.render(context, buffer, this) : buffer;
- }
- }
- if(this.falses){
- buffer = this.falses.unrender(context, buffer);
- }
- return (this.trues) ? this.trues.render(context, buffer, this) : buffer;
- }
- return buffer;
- },
- unrender: function(context, buffer){
- buffer = (this.trues) ? this.trues.unrender(context, buffer) : buffer;
- buffer = (this.falses) ? this.falses.unrender(context, buffer) : buffer;
- return buffer;
- },
- clone: function(buffer){
- var trues = (this.trues) ? this.trues.clone(buffer) : null;
- var falses = (this.falses) ? this.falses.clone(buffer) : null;
- return new this.constructor(this.bools, trues, falses, this.type);
- }
- });
-
- ddtl.IfEqualNode = dojo.extend(function(var1, var2, trues, falses, negate){
- this.var1 = new dd._Filter(var1);
- this.var2 = new dd._Filter(var2);
- this.trues = trues;
- this.falses = falses;
- this.negate = negate;
- },
- {
- render: function(context, buffer){
- var var1 = this.var1.resolve(context);
- var var2 = this.var2.resolve(context);
- if((this.negate && var1 != var2) || (!this.negate && var1 == var2)){
- if(this.falses){
- buffer = this.falses.unrender(context, buffer);
- }
- return (this.trues) ? this.trues.render(context, buffer, this) : buffer;
- }
- if(this.trues){
- buffer = this.trues.unrender(context, buffer);
- }
- return (this.falses) ? this.falses.render(context, buffer, this) : buffer;
- },
- unrender: function(context, buffer){
- return ddtl.IfNode.prototype.unrender.call(this, context, buffer);
- },
- clone: function(buffer){
- return new this.constructor(this.var1.getExpression(), this.var2.getExpression(), this.trues.clone(buffer), this.falses.clone(buffer), this.negate);
- }
- });
-
- ddtl.ForNode = dojo.extend(function(assign, loop, reversed, nodelist){
- this.assign = assign;
- this.loop = new dd._Filter(loop);
- this.reversed = reversed;
- this.nodelist = nodelist;
- this.pool = [];
- },
- {
- render: function(context, buffer){
- var i, j, k;
- var dirty = false;
- var assign = this.assign;
-
- for(k = 0; k < assign.length; k++){
- if(typeof context[assign[k]] != "undefined"){
- dirty = true;
- context.push();
- break;
- }
- }
-
- var items = this.loop.resolve(context) || [];
- for(i = items.length; i < this.pool.length; i++){
- this.pool[i].unrender(context, buffer);
- }
- if(this.reversed){
- items = items.slice(0).reverse();
- }
-
- var isObject = dojo.isObject(items) && !dojo.isArrayLike(items);
- var arred = [];
- if(isObject){
- for(var key in items){
- arred.push(items[key]);
- }
- }else{
- arred = items;
- }
-
- var forloop = context.forloop = {
- parentloop: context.forloop || {}
- };
- var j = 0;
- for(i = 0; i < arred.length; i++){
- var item = arred[i];
-
- forloop.counter0 = j;
- forloop.counter = j + 1;
- forloop.revcounter0 = arred.length - j - 1;
- forloop.revcounter = arred.length - j;
- forloop.first = !j;
- forloop.last = (j == arred.length - 1);
-
- if(assign.length > 1 && dojo.isArrayLike(item)){
- if(!dirty){
- dirty = true;
- context.push();
- }
- var zipped = {};
- for(k = 0; k < item.length && k < assign.length; k++){
- zipped[assign[k]] = item[k];
- }
- context.update(zipped);
- }else{
- context[assign[0]] = item;
- }
-
- if(j + 1 > this.pool.length){
- this.pool.push(this.nodelist.clone(buffer));
- }
- buffer = this.pool[j].render(context, buffer, this);
- ++j;
- }
-
- delete context.forloop;
- for(k = 0; k < assign.length; k++){
- delete context[assign[k]];
- }
- if(dirty){
- context.pop();
- }
- return buffer;
- },
- unrender: function(context, buffer){
- for(var i = 0, pool; pool = this.pool[i]; i++){
- buffer = pool.unrender(context, buffer);
- }
- return buffer;
- },
- clone: function(buffer){
- return new this.constructor(this.assign, this.loop.getExpression(), this.reversed, this.nodelist.clone(buffer));
- }
- });
-
- dojo.mixin(ddtl, {
- if_: function(parser, text){
- var i, part, type, bools = [], parts = ddt.pySplit(text);
- parts.shift();
- text = parts.join(" ");
- parts = text.split(" and ");
- if(parts.length == 1){
- type = "or";
- parts = text.split(" or ");
- }else{
- type = "and";
- for(i = 0; i < parts.length; i++){
- if(parts[i].indexOf(" or ") != -1){
- // Note, since we split by and, this is the only place we need to error check
- throw new Error("'if' tags can't mix 'and' and 'or'");
- }
- }
- }
- for(i = 0; part = parts[i]; i++){
- var not = false;
- if(part.indexOf("not ") == 0){
- part = part.slice(4);
- not = true;
- }
- bools.push([not, new dd._Filter(part)]);
- }
- var trues = parser.parse(["else", "endif"]);
- var falses = false;
- var token = parser.next();
- if(token.text == "else"){
- falses = parser.parse(["endif"]);
- parser.next();
- }
- return new ddtl.IfNode(bools, trues, falses, type);
- },
- _ifequal: function(parser, text, negate){
- var parts = ddt.pySplit(text);
- if(parts.length != 3){
- throw new Error(parts[0] + " takes two arguments");
- }
- var end = 'end' + parts[0];
- var trues = parser.parse(["else", end]);
- var falses = false;
- var token = parser.next();
- if(token.text == "else"){
- falses = parser.parse([end]);
- parser.next();
- }
- return new ddtl.IfEqualNode(parts[1], parts[2], trues, falses, negate);
- },
- ifequal: function(parser, text){
- return ddtl._ifequal(parser, text);
- },
- ifnotequal: function(parser, text){
- return ddtl._ifequal(parser, text, true);
- },
- for_: function(parser, text){
- var parts = ddt.pySplit(text);
- if(parts.length < 4){
- throw new Error("'for' statements should have at least four words: " + text);
- }
- var reversed = parts[parts.length - 1] == "reversed";
- var index = (reversed) ? -3 : -2;
- if(parts[parts.length + index] != "in"){
- throw new Error("'for' tag received an invalid argument: " + text);
- }
- var loopvars = parts.slice(1, index).join(" ").split(/ *, */);
- for(var i = 0; i < loopvars.length; i++){
- if(!loopvars[i] || loopvars[i].indexOf(" ") != -1){
- throw new Error("'for' tag received an invalid argument: " + text);
- }
- }
- var nodelist = parser.parse(["endfor"]);
- parser.next();
- return new ddtl.ForNode(loopvars, parts[parts.length + index + 1], reversed, nodelist);
- }
- });
-})();
-
-}