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); }
private object acceptObject() { if (acceptChar('[')) { var v = new cape.DynamicVector(); while (true) { if (acceptChar(']')) { break; } var o = acceptObject(); if (o == null) { return(null); } v.append(o); acceptChar(','); } return((object)v); } if (acceptChar('{')) { var v1 = new cape.DynamicMap(); while (true) { if (acceptChar('}')) { break; } var key = acceptString(); if (object.Equals(key, null)) { return(null); } if (acceptChar(':') == false) { return(null); } var val = acceptObject(); if (val == null) { return(null); } if (val is cape.JSONParser.NullObject) { v1.set(key, null); } else { v1.set(key, val); } acceptChar(','); } return((object)v1); } var s = acceptString(); if (s != null) { return((object)s); } var b = acceptBoolean(); if (b != null) { return((object)b); } var n = acceptNull(); if (n != null) { return((object)n); } var v2 = acceptNumber(); if (v2 != null) { return(v2); } return(null); }
private capex.text.XMLParser.Value onTagString(string tagstring, int pos) { if (cape.String.charAt(tagstring, 0) == '/') { var v = new capex.text.XMLParser.EndElement(); v.setPosition(pos); v.setName(cape.String.subString(tagstring, 1)); return((capex.text.XMLParser.Value)v); } var element = new cape.StringBuilder(); var @params = new cape.DynamicMap(); var it = new cape.CharacterIteratorForString(tagstring); var c = ' '; while ((c = it.getNextChar()) > 0) { if (c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '/') { if (element.count() > 0) { break; } } else { element.append(c); } } while (c > 0 && c != '/') { var pname = new cape.StringBuilder(); var pval = new cape.StringBuilder(); while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { c = it.getNextChar(); } while (c > 0 && c != ' ' && c != '\t' && c != '\n' && c != '\r' && c != '=') { pname.append(c); c = it.getNextChar(); } while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { c = it.getNextChar(); } if (c != '=') { ; } else { c = it.getNextChar(); while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { c = it.getNextChar(); } if (c != '\"') { ; while (c > 0 && c != ' ' && c != '\t' && c != '\n' && c != '\r') { pval.append(c); c = it.getNextChar(); } while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { c = it.getNextChar(); } } else { c = it.getNextChar(); while (c > 0 && c != '\"') { pval.append(c); c = it.getNextChar(); } if (c != '\"') { ; } else { c = it.getNextChar(); } while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { c = it.getNextChar(); } } } var pnamestr = pname.toString(); var pvalstr = pval.toString(); @params.set(pnamestr, (object)pvalstr); } var els = element.toString(); if (c == '/') { var e = new capex.text.XMLParser.EndElement(); e.setName(els); e.setPosition(pos); nextQueue = (capex.text.XMLParser.Value)e; } var v1 = new capex.text.XMLParser.StartElement(); v1.setPosition(pos); v1.setName(els); v1.setParams(@params); return((capex.text.XMLParser.Value)v1); }
public static cape.DynamicMap parseAsTreeObject(string xml, bool ignoreWhiteSpace = true) { cape.DynamicMap root = null; var stack = new cape.Stack <cape.DynamicMap>(); var pp = capex.text.XMLParser.forString(xml); pp.setIgnoreWhiteSpace(ignoreWhiteSpace); while (true) { var o = pp.next(); if (o == null) { break; } if (o is capex.text.XMLParser.StartElement) { var name = ((capex.text.XMLParser.StartElement)o).getName(); if (root == null && object.Equals(name, "?xml")) { continue; } var nn = new cape.DynamicMap(); nn.set("name", (object)name); nn.set("attributes", (object)((capex.text.XMLParser.StartElement)o).getParams()); if (root == null) { root = nn; stack.push((cape.DynamicMap)nn); } else { var current = stack.peek(); if (current == null) { current = root; } var children = current.getDynamicVector("children"); if (children == null) { children = new cape.DynamicVector(); current.set("children", (object)children); } children.append((object)nn); stack.push((cape.DynamicMap)nn); } } else if (o is capex.text.XMLParser.EndElement) { stack.pop(); } else if (o is capex.text.XMLParser.CharacterData) { var current1 = stack.peek(); if (current1 != null) { var children1 = current1.getDynamicVector("children"); if (children1 == null) { children1 = new cape.DynamicVector(); current1.set("children", (object)children1); } children1.append((object)((capex.text.XMLParser.CharacterData)o).getData()); } } } return(root); }
public virtual string toString() { var v = new cape.DynamicMap(); v.set("latitude", latitude); v.set("longitude", longitude); v.set("completeAddress", (object)completeAddress); v.set("country", (object)country); v.set("countryCode", (object)countryCode); v.set("administrativeArea", (object)administrativeArea); v.set("subAdministrativeArea", (object)subAdministrativeArea); v.set("locality", (object)locality); v.set("subLocality", (object)subLocality); v.set("streetAddress", (object)streetAddress); v.set("streetAddressDetail", (object)streetAddressDetail); v.set("postalCode", (object)postalCode); return(cape.JSONEncoder.encode((object)v, false)); }