JsRender/Gtk.vala.c
[app.Builder.js] / Palete / Palete.vala
index 99ac746..983fb17 100644 (file)
@@ -1,6 +1,8 @@
 
 namespace Palete 
 {
+
+
        public errordomain Error {
                INVALID_TYPE,
                NEED_IMPLEMENTING,
@@ -17,6 +19,26 @@ namespace Palete
                        this.left = ileft;
                        this.right=  iright;
                }
+               public bool leftHas(string s)
+               {
+                       for(var i = 0 ; i < this.left.size; i++) {
+                               var m = this.left.get(i);
+                               if (s == m) {
+                                       return true;
+                               }
+                               if (!m.contains(":")) {
+                                       continue;
+                               }
+                               var ar = m.split(":");
+                               if (ar[0] == s) {
+                                       return true;
+                               }
+                       }
+                       return false;
+                               
+               }
+
+               
        }
 
        
@@ -119,13 +141,18 @@ namespace Palete
             
         },
         */
-       public string[] getChildList(string 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 
@@ -134,7 +161,7 @@ namespace Palete
                for (var i = 0; i < this.map.size; i++) {
                        var m = this.map.get(i);
                                
-                       if (m.left.index_of(rval) < 0) {
+                       if (!m.leftHas(rval)) {
                                continue;
                        }
                        print("found LEFT, adding right\n");
@@ -142,10 +169,10 @@ namespace Palete
                        for(var ii =0; ii < m.right.size; ii++) {
                                var l = m.right.get(ii);
                                        
-                               if (ret.index_of(l) > -1) {
+                               if (rt.index_of(l) > -1) {
                                    continue;
                                }
-                               print("ADD " + string.joinv(", ", ret) + "\n");
+                               //print("ADD " + string.joinv(", ", ret) + "\n");
                                ret += l;
                                rt.add(l);
                        }
@@ -178,22 +205,22 @@ namespace Palete
                        if (m.right.index_of(rval) < 0) {
                                continue;
                        }
-                       print("found RIGHT, adding left\n");
+                       //print("found RIGHT, adding left\n");
                
                        for(var ii =0; ii < m.left.size; ii++) {
                                var l = m.left.get(ii);
                                        
-                               if (ret.index_of(l) > -1) {
+                               if (rt.index_of(l) > -1) {
                                    continue;
                                }
-                               print("ADD " + string.joinv(", ", ret) + "\n");
+                               //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));
+                print ("drop list for %s is:\n%s\n", rval, string.joinv("\n", ret));
                //console.log("DROP LIST:");
                //console.dump(ret);
                return ret;
@@ -264,18 +291,18 @@ namespace Palete
         public  GLib.List<string> listTemplates (JsRender.Node node)
         {
             
-            var gn = node.fqn();
+               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)) {
+               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 f = File.new_for_path(dir);
         
             var file_enum = f.enumerate_children(GLib.FileAttribute.STANDARD_DISPLAY_NAME, GLib.FileQueryInfoFlags.NONE, null);
              
@@ -307,8 +334,10 @@ namespace Palete
 
 
                ret.loadFromJson(obj, 1);
+               ret.ref(); // not sure if needed -- but we had a case where ret became uninitialized?
+               
                return ret;
-       }
+        }
           public   void  loadUsageFile (string fname) {
 
 
@@ -370,6 +399,28 @@ namespace Palete
                this.map = cfg;
 
         }
+
+       
+           
+       public string validateCode(string code, string language) 
+       {   
+
+               print("validate code (%s) %s\n", language, code);
+               if (language == "javascript") {
+                       //var cd = new JSCore.ClassDefinitionEmpty();
+                       string res;
+//                     var ret = Javascript.singleton().validate(code, out res);
+//                     print ("ret = %s\n%s" , ret ? "OK" : "BAD", res);
+                       
+                       return "";
+               }
+
+               print ("not javascript\n");
+               return "";
+
+       }
+
+           
           
         public abstract void fillPack(JsRender.Node node,JsRender.Node parent);
        public abstract void load();