Test.GtkWriter.vala.c
[app.Builder.js] / JsRender / Node.vala
index 68891c0..5b8daae 100644 (file)
@@ -183,7 +183,7 @@ public class JsRender.Node  {
             }
             var spad = pad.substring(0, pad.length-4);
             return   "{\n" +
-                pad  + gLibStringListJoin(",\n" + pad , els) + 
+                pad  + this.gLibStringListJoin(",\n" + pad , els) + 
                 "\n" + spad +  "}";
                
             
@@ -275,7 +275,7 @@ public class JsRender.Node  {
                 if (lines.length > 0) {
                     str =  string.joinv("\n" + pad, lines);
                 }
-                print("==> " +  str + "\n");
+                //print("==> " +  str + "\n");
                 els.append(left + str);
                 continue;
             }
@@ -332,6 +332,64 @@ public class JsRender.Node  {
         
             
         }
+
+
+               if (this.listeners.size > 0) {
+                       // munge the listeners.
+                       //print("ADDING listeners?");
+                       
+                       var liter = this.listeners.map_iterator();
+               
+                   var itms = "listeners : {\n";
+                       var i =0;
+                   while (liter.next()) {
+                               
+                               itms += i >0 ? ",\n" : "";    
+                               // 
+                               var str = liter.get_value().strip();
+                var lines = str.split("\n");
+                if (lines.length > 0) {
+                    str = string.joinv("\n" + pad + "       ", lines);
+                }
+                
+
+                               
+                               itms +=  pad + "    "  + liter.get_key()  + " : " + str;
+
+                               i++;
+                       
+                               
+                       }
+                       itms += "\n" + pad + "}";
+                       //print ( "ADD " + itms); 
+                       els.append(itms);
+
+               }
+
+
+               
+               // finally munge the children...
+               if (this.items.length()> 0) {
+                       var itms = "items : [\n";
+                       for(var i = 0; i < this.items.length();i++) {
+                               // 
+                               itms +=    pad + "    "  +
+                                       this.items.nth_data(i).mungeToString(false, pad + "        ",  doubleStringProps) + "\n";
+
+
+                       }
+                       
+                       els.append(itms);
+               }
+
+               // finally output listeners...
+               
+
+               
+
+
+
+                       
         if (els.length() < 1) {
             return "";
         }
@@ -392,13 +450,21 @@ public class JsRender.Node  {
 
 
     }
+       public string toJsonString()
+    {
+        if (Node.gen == null) {
+            Node.gen = new Json.Generator();
+        }
+        var n = new Json.Node(Json.NodeType.OBJECT);
+               n.set_object(this.toJsonObject () );
+        Node.gen.set_root (n);
+        return  Node.gen.to_data (null);   
+    }
+       
     public Json.Object toJsonObject()
        {
                var ret = new Json.Object();
-           var iter = this.props.map_iterator();
-        while (iter.next()) {
-                       ret.set_string_member(iter.get_key(), iter.get_value());
-               }
+
                // listeners...
                var li = new Json.Object();
                ret.set_object_member("listeners", li);
@@ -406,6 +472,13 @@ public class JsRender.Node  {
         while (liter.next()) {
                        li.set_string_member(liter.get_key(), liter.get_value());
                }
+
+               //props
+           var iter = this.props.map_iterator();
+        while (iter.next()) {
+                       this.jsonObjectsetMember(ret, iter.get_key(), iter.get_value());
+               }
+               
                var ar = new Json.Array();
                ret.set_array_member("items", ar);
                
@@ -415,9 +488,30 @@ public class JsRender.Node  {
         }
                return ret;
                
-
+       }
+        
+       public void jsonObjectsetMember(Json.Object o, string key, string val) {
+               if (Lang.isBoolean(val)) {
+                       o.set_boolean_member(key, val == "false" ? false : true);
+                       return;
+               }
+               
                
+               if (Lang.isNumber(val)) {
+                       if (val.contains(".")) {
+                               //print( "ADD " + key + "=" + val + " as a double?\n");
+                               o.set_double_member(key, double.parse (val));
+                               return;
 
+                       }
+                       //print( "ADD " + key + "=" + val + " as a int?\n")  ;
+                       o.set_int_member(key,long.parse(val));
+                       return;
+               }
+               ///print( "ADD " + key + "=" + val + " as a string?\n");
+               o.set_string_member(key,val);
+               
        }
     
 }