src/Palete/Javascript.vala
[app.Builder.js] / src / Palete / Javascript.vala
index 45bd0b1..d01d023 100644 (file)
@@ -114,30 +114,57 @@ namespace Palete {
                 * then a method is called, with a string argument (json encoded)
                 * 
                 */
-               void executeFile(string filename, string method, string json)
+               void executeFile(string fname, string method, string json)
                {
+                       string file_data;
+                       if (!FileUtils.test (fname, FileTest.EXISTS)) {
+                               throw new JavascriptError.MISSING_FILE(fname + " not found");
+                       }
+               
+                       FileUtils.get_contents(fname, out file_data);
+                       
+                       var jfile_data new JSCore.String.with_utf8_c_string(file_data);
+                       var jmethod = new JSCore.String.with_utf8_c_string(method);
+                       var json_args = new JSCore.String.with_utf8_c_string(json);
+                       
                        JSCore.Value ex;
                        
                        var goc = new JSCore.Class(  class_definition ); 
                        var ctx = new JSCore.GlobalContext(goc);
+                       var othis = ctx.get_global_object();
                        
+                       var val = ctx.evaluate_script (
+                                               jfile_data
+                                               othis,
+                                               null,
+                               0,
+                               ex
+                               );
                        
                        
-                       var jmethod = new JSCore.String.with_utf8_c_string(method)
-                       var othis = ctx.get_global_object();
                        if (!othis.has_property(ctx,jmethod)) {
-                               throw new JavascriptError.MISSING_METHOD ("Plugin excute - missing  %s", method);
+                               throw new JavascriptError.MISSING_METHOD ("Plugin: missing method  %s", method);
                                return;
                        }
                        
                        var val =  othis.get_property (ctx, jmethod, out ex); 
+                       if (!val.is_function(ctx)) {
+                               throw new JavascriptError.MISSING_METHOD ("Plugin: not a method  %s", method);
+                       }
+                       JSCore.value[] args = {};
+                       args += json_args;
+                        
+                       var res = val.call_as_function(ctx, othis, args, ex);
+                       
+                       
                        
                        
+               }
                
                
 
        }
-
+