Revision: 2207 http://vexi.svn.sourceforge.net/vexi/?rev=2207&view=rev Author: mkpg2 Date: 2007-09-15 09:52:24 -0700 (Sat, 15 Sep 2007)
Log Message: ----------- Resources/id'd sub boxes in attributes now specified with a leading ':' Modified Paths: -------------- trunk/core/org.vexi.core/src/org/vexi/core/Template.java trunk/core/org.vexi.core/src/org/vexi/core/TemplateBuilder.java trunk/core/org.vexi.core/src_junit/test/core/general/typeof.t Added Paths: ----------- trunk/core/org.vexi.core/src_junit/test/core/general/attribute_newline.t trunk/core/org.vexi.core/src_junit/test/core/general/attribute_streams.t Removed Paths: ------------- trunk/core/org.vexi.core/src_junit/test/core/general/newlines_in_attributes.t Modified: trunk/core/org.vexi.core/src/org/vexi/core/Template.java =================================================================== --- trunk/core/org.vexi.core/src/org/vexi/core/Template.java 2007-09-15 16:44:11 UTC (rev 2206) +++ trunk/core/org.vexi.core/src/org/vexi/core/Template.java 2007-09-15 16:52:24 UTC (rev 2207) @@ -193,6 +193,24 @@ if ("null".equals(val)) val = null; + if(JSU.isString(val)){ + String valStr = JSU.toString(val); + if(valStr.length()>0 && valStr.charAt(0)==':'){ + String str=valStr.substring(1); + if(str.startsWith("$")){ + val = pis.get(val); + }else{ + String[] ab = str.split("\\.",2); + val = (JS) uriPrefixes.get(JSU.S(ab[0]), true); + while(ab.length==2 && val!=null){ + ab = ab[1].split("\\.",2); + val = val.get(JSU.S(ab[0])); + } + } + if(val==null) throw new JSExn(valStr + " evaluates to null"); + } + } + if (JSU.isString(val) && (JSU.toString(val).length() > 0)) { switch (JSU.toString(val).charAt(0)) { case '$': @@ -209,11 +227,11 @@ } - // UGLY - avoiding adding an init param if (script == null){ pisParserParam = TemplateBuilder.instance.createPIChecker(uriPrefixes, this); script = TemplateBuilder.parseScript(content, content_start, fileName(), pisParserParam); content = null; - if(script== null)script = JSU.F; + //UGLY - avoiding adding an init param + if(script== null)script = JSU.F; } if (script != JSU.F) JSU.cloneWithNewGlobalScope(script, pis).call(null, EMPTY_JS_ARRAY); @@ -412,7 +430,7 @@ // In org.vexi.devl we inspect the prefixes as part of the checking // for undeclared globals. We do not want to resolve as this will // change the order in which templates are resolved, giving a - // different behaviour to the non-devl code, which is very undesirable.hout + // different behaviour to the non-devl code, which is very undesirable. public Object get(JS key, boolean resolve) throws JSExn { Object r =map.get(key); if(r==NULL_PLACEHOLDER) Modified: trunk/core/org.vexi.core/src/org/vexi/core/TemplateBuilder.java =================================================================== --- trunk/core/org.vexi.core/src/org/vexi/core/TemplateBuilder.java 2007-09-15 16:44:11 UTC (rev 2206) +++ trunk/core/org.vexi.core/src/org/vexi/core/TemplateBuilder.java 2007-09-15 16:52:24 UTC (rev 2207) @@ -215,12 +215,8 @@ continue ATTR; } - // treat value starting with '.' as resource reference - String uri = a.getUri(i); - if(uri == null) uri = ""; - if (!uri.equals("")) uri = '.' + uri; keys.add(a.getKey(i)); - vals.add((a.getVal(i).startsWith(".") ? uri : "") + a.getVal(i)); + vals.add(a.getVal(i)); } if (keys.size() == 0) return; Copied: trunk/core/org.vexi.core/src_junit/test/core/general/attribute_newline.t (from rev 2069, trunk/core/org.vexi.core/src_junit/test/core/general/newlines_in_attributes.t) =================================================================== --- trunk/core/org.vexi.core/src_junit/test/core/general/attribute_newline.t (rev 0) +++ trunk/core/org.vexi.core/src_junit/test/core/general/attribute_newline.t 2007-09-15 16:52:24 UTC (rev 2207) @@ -0,0 +1,13 @@ +<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns:li="lib" xmlns="lib2"> + + +/* At the moment choosing not to interpret \n as a new line. Would have + to check every attribute and perhaps only makes sense for text attributes. + Newline can be achieved, the xml way, as below if necessary.*/ + <ui:box a="@.a +a"> + //vexi.log.info(thisbox.a); + assert(a=="a\na"); + assert(a.charAt(1)=='\n'); + </ui:box> +</vexi> Added: trunk/core/org.vexi.core/src_junit/test/core/general/attribute_streams.t =================================================================== --- trunk/core/org.vexi.core/src_junit/test/core/general/attribute_streams.t (rev 0) +++ trunk/core/org.vexi.core/src_junit/test/core/general/attribute_streams.t 2007-09-15 16:52:24 UTC (rev 2207) @@ -0,0 +1,10 @@ +<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns="alpha" xmlns:b="beta"> + + +/* cannot interpret \n for all attributes as it doesn't necessarily make snes*/ + <ui:box u=":.pic" v=":b.pic2"/> + <ui:box> + assert(u==.pic); + assert(v==b.pic2); + </ui:box> +</vexi> Deleted: trunk/core/org.vexi.core/src_junit/test/core/general/newlines_in_attributes.t =================================================================== --- trunk/core/org.vexi.core/src_junit/test/core/general/newlines_in_attributes.t 2007-09-15 16:44:11 UTC (rev 2206) +++ trunk/core/org.vexi.core/src_junit/test/core/general/newlines_in_attributes.t 2007-09-15 16:52:24 UTC (rev 2207) @@ -1,7 +0,0 @@ -<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns:li="lib" xmlns="lib2"> - - <ui:box a="a\na"> - assert(a=="a\na"); - assert(a.charAt(1)=='\n'); - </ui:box> -</vexi> Modified: trunk/core/org.vexi.core/src_junit/test/core/general/typeof.t =================================================================== --- trunk/core/org.vexi.core/src_junit/test/core/general/typeof.t 2007-09-15 16:44:11 UTC (rev 2206) +++ trunk/core/org.vexi.core/src_junit/test/core/general/typeof.t 2007-09-15 16:52:24 UTC (rev 2207) @@ -2,7 +2,7 @@ <ui:box> //Traps on piscope globals -.util..assertEquals("template",typeof vexi[""]["typeof"]); +.util..assertEquals("stream",typeof vexi[""]["typeof"]); .util..assertEquals("box",typeof thisbox); </ui:box> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn