Revision: 1920
          http://svn.sourceforge.net/vexi/?rev=1920&view=rev
Author:   mkpg2
Date:     2007-07-04 12:02:28 -0700 (Wed, 04 Jul 2007)

Log Message:
-----------
Fix. Only parse template functions before they are about to be applied for the 
first time. 
(Devl code requires information from preapplies at parsetime and with lazy 
resolving means we also have to lazily parse).

Modified Paths:
--------------
    core/trunk/org.vexi.core/src/org/vexi/core/Template.java
    core/trunk/org.vexi.core/src/org/vexi/core/TemplateBuilder.java
    core/trunk/org.vexi.devl/src/org/vexi/core/DevlTemplateBuilder.jpp

Modified: core/trunk/org.vexi.core/src/org/vexi/core/Template.java
===================================================================
--- core/trunk/org.vexi.core/src/org/vexi/core/Template.java    2007-07-04 
06:06:19 UTC (rev 1919)
+++ core/trunk/org.vexi.core/src/org/vexi/core/Template.java    2007-07-04 
19:02:28 UTC (rev 1920)
@@ -200,7 +200,13 @@
                        b.putAndTriggerTraps(b.get(SC_numchildren), kid);
                }
 
-               if (script != null) JSU.cloneWithNewGlobalScope(script, 
pis).call(null, callempty);
+               // 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;
+               }
+               if (script != JSU.F) JSU.cloneWithNewGlobalScope(script, 
pis).call(null, callempty);
 
                for(int i=0; keys != null && i < keys.length; i++) {
                        if (keys[i] == null) continue;
@@ -424,6 +430,10 @@
         
     }
     
+    /*public String toString() {
+       return fileName();
+    }*/
+    
 }
 
 class CodeBlock{

Modified: core/trunk/org.vexi.core/src/org/vexi/core/TemplateBuilder.java
===================================================================
--- core/trunk/org.vexi.core/src/org/vexi/core/TemplateBuilder.java     
2007-07-04 06:06:19 UTC (rev 1919)
+++ core/trunk/org.vexi.core/src/org/vexi/core/TemplateBuilder.java     
2007-07-04 19:02:28 UTC (rev 1920)
@@ -24,7 +24,7 @@
 
 public class TemplateBuilder{
 
-       static private TemplateBuilder instance;
+       static TemplateBuilder instance;
        
        public static void setTemplateBuilder(TemplateBuilder instance){
                TemplateBuilder.instance = instance;
@@ -39,6 +39,13 @@
         for (int i=0; nLines > i; i++) content.append('\n');
     }
        
+       static JS parseScript(StringBuffer content, int content_start,  String 
sourceName, GlobalsChecker parserParam) throws IOException {
+        if (content == null) return null;
+        String contentString = content.toString();
+        if (contentString.trim().length() > 0) return 
Parser.fromReader(sourceName, content_start, new StringReader(contentString), 
parserParam);
+        return null;
+    }
+    
     private static final int STATE_INITIAL = 0;
     private static final int STATE_IN_ROOT_NODE = 1;
     private static final int STATE_IN_TEMPLATE_NODE = 2; 
@@ -74,7 +81,7 @@
                        if (is != null) {
                                parse(new InputStreamReader(is));
                                
if(Log.sLevel==Log.DEBUG)Log.uDebug(TemplateHelper.class, "Parsing template: " 
+ sourceName());
-                               JS staticScript = 
parseScript(staticCode.content, staticCode.content_start, 
createStaticChecker(staticPrefixes));
+                               JS staticScript = 
parseScript(staticCode.content, staticCode.content_start, sourceName(), 
createStaticChecker(staticPrefixes));
                                if (t != null) {
                                        initStatic();
                                        JS staticScope = t.new StaticScope();
@@ -108,12 +115,6 @@
         
         public TemplateHelper() {}
 
-               JS parseScript(StringBuffer content, int content_start, 
GlobalsChecker parserParam) throws IOException {
-            if (content == null) return null;
-            String contentString = content.toString();
-            if (contentString.trim().length() > 0) return 
Parser.fromReader(sourceName(), content_start, new StringReader(contentString), 
parserParam);
-            return null;
-        }
 
         /** @param c - current element */
         public void startElement(Tree.Element c) throws XML.Exn {
@@ -242,10 +243,6 @@
                 case STATE_IN_ROOT_NODE: 
                        return;
                 case STATE_IN_TEMPLATE_NODE: {
-                       t.pisParserParam = createPIChecker(t.uriPrefixes, t);
-                    if (t.content != null) {
-                               t.script = parseScript(t.content, 
t.content_start, t.pisParserParam); t.content = null; 
-                    }
                     if (nodeStack.size() == 0) { 
                        state = STATE_IN_ROOT_NODE;
                         if (staticCode.content != null) {

Modified: core/trunk/org.vexi.devl/src/org/vexi/core/DevlTemplateBuilder.jpp
===================================================================
--- core/trunk/org.vexi.devl/src/org/vexi/core/DevlTemplateBuilder.jpp  
2007-07-04 06:06:19 UTC (rev 1919)
+++ core/trunk/org.vexi.devl/src/org/vexi/core/DevlTemplateBuilder.jpp  
2007-07-04 19:02:28 UTC (rev 1920)
@@ -67,7 +67,7 @@
                "DoubleClick2","_DoubleClick2",
                "DoubleClick3","_DoubleClick3",
         "Enter","Leave","Move",
-        "ChildAdded","ChildRemoved",
+        "Children",
                //#end
        
                        


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 DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to