Attribute changed old-javascript
[app.Builder.js] / old-javascript / Palete / Javascript.vala
diff --git a/old-javascript/Palete/Javascript.vala b/old-javascript/Palete/Javascript.vala
new file mode 100644 (file)
index 0000000..dd3ea6e
--- /dev/null
@@ -0,0 +1,114 @@
+
+
+namespace Palete {
+
+       Javascript instance = null;
+       
+       public class Javascript {
+
+
+               public static JSCore.Object class_constructor(
+                               JSCore.Context ctx, 
+                               JSCore.Object constructor,  
+                               JSCore.Value[] arguments, 
+                              out JSCore.Value exception) 
+               {
+                       var c = new JSCore.Class (class_definition);
+                       var o = new JSCore.Object (ctx, c, null);
+                       exception = null;
+                       return o;
+               }
+               static const JSCore.StaticFunction[] class_functions = {
+                        { null, null, 0 }
+               };
+               static const JSCore.ClassDefinition class_definition = {
+                   0,
+                   JSCore.ClassAttribute.None,
+                   "App",
+                   null,
+
+                   null,
+                   class_functions,
+
+                   null,
+                   null,
+
+                   null,
+                   null,
+                   null,
+                   null,
+
+                   null,
+                   null,
+                   class_constructor,
+                   null,
+                   null
+               };
+
+               
+               public JSCore.GlobalContext js_global_context =  null;
+
+               public static Javascript singleton()
+               {
+                       if (instance == null) {
+                               instance = new Javascript();
+                       }
+                       return instance;
+               }
+               public Javascript()
+               {
+                       var goc = new JSCore.Class(  class_definition ); 
+                       this.js_global_context = new JSCore.GlobalContext(goc);
+                       
+
+               }
+               public int validate(string code, out string res)
+               {
+                       JSCore.Value ex;
+                       unowned   JSCore.GlobalContext ctx = this.js_global_context;
+                       var ret = this.js_global_context.check_script_syntax(
+                                  new JSCore.String.with_utf8_c_string(code),
+                                  null,
+                                  0,
+                                  out ex
+                       );
+                       res = ""; 
+                       if (ex.is_null(ctx)) {
+                               return -1;
+                       }
+
+                       
+                       var exo = ex.to_object(ctx, null);
+                       unowned JSCore.PropertyNameArray property_names = exo.copy_property_names (ctx);
+
+                       
+                       
+                        
+                       var js_string = new JSCore.String.with_utf8_c_string("line");
+                       var line = exo.get_property(ctx, js_string, null).to_number(ctx,null);
+                       
+                       
+
+                       // see if we can convert exception string
+                       char *c_string = new char[1024];
+                       var err_string = ex.to_string_copy (ctx, null);
+                       err_string.get_utf8_c_string (c_string, 1023);
+                       res = (string)c_string;
+                       //print ("Error on line %d\n%s\n", (int)line, res); 
+                       
+                       var rline = (int) line;
+                       
+                       return rline > 0 ? rline -1 : 0;
+               
+                       
+               }
+               
+
+       }
+
+       
+
+
+}