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

Reply via email to