tests/forkme.vala
[app.Builder.js] / src / Palete / Palete.vala
index f8c64d6..81d8007 100644 (file)
@@ -73,15 +73,15 @@ namespace Palete
        
         public string name;
 
-       public Gee.ArrayList<Usage> map;
+               public Gee.ArrayList<Usage> map;
 
-       Gee.HashMap<string,GirObject> classes; // used in roo.. 
+               public Gee.HashMap<string,GirObject> classes; // used in roo.. 
        
         public Palete()
         {
-            // nothing?
-               this.map = null;
-               this.classes = null;
+                               // nothing?
+                       this.map = null;
+                       this.classes = null;
         }
         
         
@@ -102,86 +102,86 @@ namespace Palete
          
 
            
-       public string[] getChildList(string in_rval)
+               public string[] getChildList(string in_rval)
         {
 
-               if (this.map == null) {
-                       this.load();
-               }
-               // empty == *top
-               
-               var rval = in_rval == "" ? "*top" : in_rval; 
-                               
-                               // should be a bit more than this..
-                       // -> it should look for all elements that inherit 
-               string[] ret = {};
-               var rt = new Gee.ArrayList<string>();
-               for (var i = 0; i < this.map.size; i++) {
-                       var m = this.map.get(i);
-                               
-                       if (!m.leftHas(rval)) {
-                               continue;
+                       if (this.map == null) {
+                               this.load();
                        }
-                       print("found LEFT, adding right\n");
-               
-                       for(var ii =0; ii < m.right.size; ii++) {
-                               var l = m.right.get(ii);
+                       // empty == *top
+                       
+                       var rval = in_rval == "" ? "*top" : in_rval; 
                                        
-                               if (rt.index_of(l) > -1) {
-                                   continue;
-                               }
-                               //print("ADD " + string.joinv(", ", ret) + "\n");
-                               ret += l;
-                               rt.add(l);
-                       }
-                               
-                
-               }
-               print ("drop list for %s is:\n%s\n", rval, string.joinv("\n", ret));
-               //console.log("DROP LIST:");
-               //console.dump(ret);
-               return ret;
-            
+                                       // should be a bit more than this..
+                               // -> it should look for all elements that inherit 
+                               string[] ret = {};
+                       var rt = new Gee.ArrayList<string>();
+                       for (var i = 0; i < this.map.size; i++) {
+                               var m = this.map.get(i);
+                                       
+                                       if (!m.leftHas(rval)) {
+                                       continue;
+                               }
+                               print("found LEFT, adding right\n");
+                       
+                               for(var ii =0; ii < m.right.size; ii++) {
+                                               var l = m.right.get(ii);
+                                               
+                                               if (rt.index_of(l) > -1) {
+                                                       continue;
+                                               }
+                                       //print("ADD " + string.joinv(", ", ret) + "\n");
+                                               ret += l;
+                                       rt.add(l);
+                                       }
+                                       
+                                       
+                               }
+                       print ("drop list for %s is:\n%s\n", rval, string.joinv("\n", ret));
+                       //console.log("DROP LIST:");
+                       //console.dump(ret);
+                       return ret;
+                               
         }
 
            
         public string[] getDropList(string rval)
         {
 
-               if (this.map == null) {
-                       this.load();
-               }
-
-                               
-                               // should be a bit more than this..
-                       // -> it should look for all elements that inherit 
-               string[] ret = {};
-               var rt = new Gee.ArrayList<string>();
-               for (var i = 0; i < this.map.size; i++) {
-                       var m = this.map.get(i);
-                               
-                       if (m.right.index_of(rval) < 0) {
-                               continue;
+                       if (this.map == null) {
+                               this.load();
                        }
-                       //print("found RIGHT, adding left\n");
-               
-                       for(var ii =0; ii < m.left.size; ii++) {
-                               var l = m.left.get(ii);
+
                                        
-                               if (rt.index_of(l) > -1) {
-                                   continue;
-                               }
-                               //print("ADD " + string.joinv(", ", ret) + "\n");
-                               ret += l;
-                               rt.add(l);
-                       }
-                               
-                
-               }
-                print ("drop list for %s is:\n%s\n", rval, string.joinv("\n", ret));
-               //console.log("DROP LIST:");
-               //console.dump(ret);
-               return ret;
+                                       // should be a bit more than this..
+                               // -> it should look for all elements that inherit 
+                               string[] ret = {};
+                       var rt = new Gee.ArrayList<string>();
+                       for (var i = 0; i < this.map.size; i++) {
+                               var m = this.map.get(i);
+                                       
+                                       if (m.right.index_of(rval) < 0) {
+                                       continue;
+                               }
+                               //print("found RIGHT, adding left\n");
+                       
+                               for(var ii =0; ii < m.left.size; ii++) {
+                                               var l = m.left.get(ii);
+                                               
+                                               if (rt.index_of(l) > -1) {
+                                                       continue;
+                                               }
+                                       //print("ADD " + string.joinv(", ", ret) + "\n");
+                                               ret += l;
+                                       rt.add(l);
+                                       }
+                                       
+                                       
+                               }
+                        print ("drop list for %s is:\n%s\n", rval, string.joinv("\n", ret));
+                       //console.log("DROP LIST:");
+                       //console.dump(ret);
+                       return ret;
             
         }
       
@@ -210,32 +210,32 @@ namespace Palete
         public  GLib.List<string> listTemplates (JsRender.Node node)
         {
             
-               var gn = node.fqn();
-            
-               var ret = new GLib.List<string>();
-               var dir= GLib.Environment.get_home_dir() + "/.Builder/" + gn;
-               if (!GLib.FileUtils.test(dir, GLib.FileTest.IS_DIR)) {
-                       return ret;
-               }
+                       var gn = node.fqn();
+                               
+                       var ret = new GLib.List<string>();
+                       var dir= GLib.Environment.get_home_dir() + "/.Builder/" + gn;
+                       if (!GLib.FileUtils.test(dir, GLib.FileTest.IS_DIR)) {
+                               return ret;
+                       }
                        
 
 
                                    
-               var f = File.new_for_path(dir);
-        
-            var file_enum = f.enumerate_children(GLib.FileAttribute.STANDARD_DISPLAY_NAME, GLib.FileQueryInfoFlags.NONE, null);
-             
-            FileInfo next_file; 
-            while ((next_file = file_enum.next_file(null)) != null) {
-                var n = next_file.get_display_name();
-                       if (!Regex.match_simple ("\\.json$", n)) {
-                                       continue;
+                       var f = File.new_for_path(dir);
+                       
+                               var file_enum = f.enumerate_children(GLib.FileAttribute.STANDARD_DISPLAY_NAME, GLib.FileQueryInfoFlags.NONE, null);
+                                
+                               FileInfo next_file; 
+                               while ((next_file = file_enum.next_file(null)) != null) {
+                                       var n = next_file.get_display_name();
+                                       if (!Regex.match_simple ("\\.json$", n)) {
+                                               continue;
+                                       }
+                                       ret.append( dir + "/" + n);
                                }
-                               ret.append( dir + "/" + n);
-            }
-            return ret;
+                               return ret;
             
-        }
+               }
  
         public JsRender.Node? loadTemplate(string path)
         {
@@ -324,57 +324,78 @@ namespace Palete
 
        
          
-       public Gee.HashMap<int,string>  validateCode(
+       public async Gee.HashMap<int,string>  validateVala(
                        string code, 
-                       string property, 
-                       string ptype,
-                        JsRender.JsRender file,
-                       JsRender.Node node
+                               string property, 
+                               string ptype,
+                               JsRender.JsRender file,
+                               JsRender.Node node
                      ) 
        {   
 
-               //print("validate code (%s) %s\n", file.language, code);
-                
+                print("validate code (%s) %s\n", file.language, code);
+                var ret = new Gee.HashMap<int,string>();
                
-               if (file.language == "js" && (ptype == "listener" || property[0] == '|')) {
-                       var ret = new Gee.HashMap<int,string>();
-                       
-                       //var cd = new JSCore.ClassDefinitionEmpty();
-                       string errmsg;
-                       var line = Javascript.singleton().validate(
-                                  "var __aaa___ = " + code, out errmsg);
-
-                       if (line < 0) {
-                               return ret;
-                       }
-                       ret.set(line, errmsg);
+                
+               if (file.language != "vala" ) { // not sure if we need to validate property
                        return ret;
                }
-               if (file.language == "vala" ) { // not sure if we need to validate property
+               var vs = new ValaSource(file);
+               //var cd = new JSCore.ClassDefinitionEmpty();
+                ret = yield vs.checkFileWithNodePropChange(
+                               node, 
+                               property, 
+                               ptype,
+                               code
+                );
+                vs = null;
+               return ret;
+
+       }
+       public   Gee.HashMap<int,string>  validateJavascript(
+                       string code, 
+                               string property, 
+                               string ptype,
+                               JsRender.JsRender file,
+                               JsRender.Node node
+                     ) 
+       {   
+
+                print("validate code (%s) %s\n", file.language, code);
+                var ret = new Gee.HashMap<int,string>();
+               
+               if (file.language != "js") {
+                       return ret;
+                }
+                if (ptype != "listener" && property[0] == '|') {
+                       return ret;
+                }
                        
-                       var vs = new ValaSource(file);
-                       //var cd = new JSCore.ClassDefinitionEmpty();
-                       var ret = vs.checkFileWithNodePropChange(
-                               node, 
-                               property, 
-                               ptype,
-                                       code
-                         );
+               //var cd = new JSCore.ClassDefinitionEmpty();
+               //print("TESTING CODE %s\n", code);
+               string errmsg;
+               var line = Javascript.singleton().validate(
+                                                         "var __aaa___ = " + code, out errmsg);
+
+               if (line < 0) {
+                       print("no errors\n");
                        return ret;
                }
-               var ret = new Gee.HashMap<int,string>();
-
-               //print ("not javascript\n");
+               ret.set(line, errmsg);
+               print("got  errors\n");
                return ret;
+                
 
        }
-
            
           
-        public abstract void fillPack(JsRender.Node node,JsRender.Node parent);
+       public abstract void fillPack(JsRender.Node node,JsRender.Node parent);
        public abstract void load();
        public abstract Gee.HashMap<string,GirObject> getPropertiesFor(string ename, string type);
        public abstract GirObject? getClass(string ename);
+       
+       public abstract bool typeOptions(string fqn, string key, string type, out string[] opts);
+       
     }