src/Palete/Palete.vala
[app.Builder.js] / src / Palete / Palete.vala
index 30cb1a3..d82e8b1 100644 (file)
@@ -365,27 +365,31 @@ namespace Palete
                                        string property, 
                                        string ptype,
                                        JsRender.JsRender file,
-                                       JsRender.Node node
+                                       JsRender.Node? node
                                 ) 
                {   
 
-                        print("validate code (%s) %s\n", file.language, code);
+                        print("validate code (%s) ptype=%s property=%s\n", file.language, ptype, property);
                         var ret = new Gee.HashMap<int,string>();
                
                        if (file.language != "js") {
                                return ret;
                         }
-                        if (ptype != "listener" && property[0] == '|') {
+                        if (ptype != "listener" && property.length > 0 && property[0] == '|') {
                                return ret;
                         }
                        
                        //var cd = new JSCore.ClassDefinitionEmpty();
                        //print("TESTING CODE %s\n", code);
                        string errmsg;
+                       var testcode = ptype == "file" ? code : "var __aaa___ = " + code;
                        var line = Javascript.singleton().validate(
-                                                                 "var __aaa___ = " + code, out errmsg);
+                                                                 testcode, out errmsg);
 
                        if (line < 0) {
+                               if (ptype == "file") {
+                                       return this.validateJavascriptCompression(code);
+                               }
                                print("no errors\n");
                                return ret;
                        }
@@ -394,6 +398,29 @@ namespace Palete
                        return ret;
                          
                } 
+               
+               public Gee.HashMap<int,string>  validateJavascriptCompression(string code)
+               {
+                       // this uses the roojspacker code to try and compress the code.
+                       // it should highlight errors before we actually push live the code.
+                       
+                       var p = new JSDOC.Packer();
+                       p.keepWhite = false;
+                       p.skipScope = false;
+                       p.dumpTokens = false;
+                       p.cleanup = false;
+                       try {
+                               p.packFile(code, "ANONFILE","");
+                       } catch (Exception e) {
+                       
+                       }
+                        
+                       var ret = new Gee.HashMap<int,string>();
+                       return ret;
+               
+               }
+               
+               
                      
                public abstract void fillPack(JsRender.Node node,JsRender.Node parent);
                public abstract void load();