public bool handleBlock(cape.DynamicMap vars, System.Collections.Generic.List <string> tag, System.Collections.Generic.List <object> data, cape.StringBuilder result, System.Collections.Generic.List <cape.File> includeDirs) { if (tag == null) { return(false); } var tagname = cape.Vector.get(tag, 0); if (cape.String.isEmpty(tagname)) { return(false); } if (object.Equals(tagname, "for")) { var varname = cape.Vector.get(tag, 1); var inword = cape.Vector.get(tag, 2); var origvar = substituteVariables(cape.Vector.get(tag, 3), vars); if (cape.String.isEmpty(varname) || cape.String.isEmpty(origvar) || !(object.Equals(inword, "in"))) { cape.Log.error(logContext, "Invalid for tag: `" + cape.String.combine(tag, ' ') + "'"); return(false); } var index = 0; vars.set("__for_first", (object)"true"); var vv = getVariableValueVector(vars, origvar); if (vv != null) { var n = 0; var m = vv.Count; for (n = 0; n < m; n++) { var o = vv[n]; if (o != null) { if (index % 2 == 0) { vars.set("__for_parity", (object)"even"); } else { vars.set("__for_parity", (object)"odd"); } vars.set(varname, o); if (doExecute(data, vars, result, includeDirs) == false) { return(false); } if (index == 0) { vars.set("__for_first", (object)"false"); } index++; } } } vars.remove("__for_first"); vars.remove("__for_parity"); return(true); } if (object.Equals(tagname, "if")) { var lvalue = cape.Vector.get(tag, 1); if (object.Equals(lvalue, null)) { return(true); } var @operator = cape.Vector.get(tag, 2); if (object.Equals(@operator, null)) { var varval = getVariableValue(vars, lvalue); if (varval == null) { return(true); } if (varval is cape.VectorObject <object> ) { if (cape.Vector.isEmpty(((cape.VectorObject <object>)varval).toVector())) { return(true); } } if (varval is cape.DynamicMap) { var value = (cape.DynamicMap)varval; if (value.getCount() < 1) { return(true); } } if (varval is string) { if (cape.String.isEmpty((string)varval)) { return(true); } } if (varval is cape.StringObject) { if (cape.String.isEmpty(((cape.StringObject)varval).toString())) { return(true); } } if (doExecute(data, vars, result, includeDirs) == false) { return(false); } return(true); } lvalue = substituteVariables(lvalue, vars); var rvalue = cape.Vector.get(tag, 3); if (!(object.Equals(rvalue, null))) { rvalue = substituteVariables(rvalue, vars); } if (object.Equals(lvalue, null) || cape.String.isEmpty(@operator) || object.Equals(rvalue, null)) { cape.Log.error(logContext, "Invalid if tag: `" + cape.String.combine(tag, ' ') + "'"); return(false); } if (object.Equals(@operator, "==") || object.Equals(@operator, "=") || object.Equals(@operator, "is")) { if (!(object.Equals(rvalue, lvalue))) { return(true); } if (doExecute(data, vars, result, includeDirs) == false) { return(false); } return(true); } if (object.Equals(@operator, "!=") || object.Equals(@operator, "not")) { if (object.Equals(rvalue, lvalue)) { return(true); } if (doExecute(data, vars, result, includeDirs) == false) { return(false); } return(true); } cape.Log.error(logContext, "Unknown operator `" + @operator + "' in if tag: `" + cape.String.combine(tag, ' ') + "'"); return(false); } return(false); }