import nl.idgis.giclient.io.XMLResponseListener; import nl.idgis.giclient.io.XMLResponse; import nl.idgis.giclient.io.XMLServer; import nl.idgis.giclient.util.URLTools; import nl.idgis.giclient.util.XMLTools; import nl.idgis.giclient.GIClient; class nl.idgis.giclient.util.Strings implements XMLResponseListener { private var kvp:Object = null; private var giClient:GIClient = null; private static var objects:Object = new Object(); function Strings(giClient:GIClient, url:String) { kvp = new Object(); this.giClient = giClient; var server:XMLServer; if(url.indexOf(":", 0) != -1) server = new XMLServer(url); else server = new XMLServer(URLTools.getGIClientPath() + "/" + url); server.load(this, "", null); } public static function addFile(name:String, url:String, giClient:GIClient) { objects[name] = new Strings(giClient, url); } public static function getFile(name:String) : Strings { return Strings(objects[name]); } public static function escapeString(str:String) : String { var tmp:Array = str.split("$"); var retval:String = ""; for(var i:Number = 0; i < tmp.length; i++) { if(i != 0) { retval += "$$"; } retval += tmp[i]; } return retval; } public static function replaceVars(str:String, vars:Object):String { var first:Number = str.indexOf("$", 0); if(first != -1) { var second:Number = str.indexOf("$", first + 1); if(second == -1) return "[Strings class error: single '$']"; var varName:String = str.substr(first + 1, second - first - 1); var varContent:String = vars[varName]; return str.substr(0, first) + (varName.length != 0 ? (varContent == undefined ? ("$" + varName + "$") : varContent) : "$") + replaceVars(str.substr(second + 1), vars); } else { return str; } } function getString(key:String, vars:Object):String { var str:String = kvp[key]; if(str != null && str.length != 0) return replaceVars(str, vars); return "[Strings class error: unknown key]"; } function onLoadXMLResponse(xmlResponse : XMLResponse) : Void { var nodes:Array = XMLTools.getChildNodes("Item", xmlResponse.firstChild); for(var i:Number = 0; i < nodes.length; i++) { var key:String = XMLTools.getStringValue("Key", nodes[i]); var value:String = XMLTools.getStringValue("Value", nodes[i]); kvp[key] = value; } giClient.onLoadStrings(); } }