source: [view]
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;