Attribute changed old-javascript
[app.Builder.js] / old-javascript / Palete / Javascript.vala
1
2  
3
4 namespace Palete {
5
6         Javascript instance = null;
7         
8         public class Javascript {
9
10
11                 public static JSCore.Object class_constructor(
12                                 JSCore.Context ctx, 
13                                 JSCore.Object constructor,  
14                                 JSCore.Value[] arguments, 
15                               out JSCore.Value exception) 
16                 {
17                         var c = new JSCore.Class (class_definition);
18                         var o = new JSCore.Object (ctx, c, null);
19                         exception = null;
20                         return o;
21                 }
22                 static const JSCore.StaticFunction[] class_functions = {
23                          { null, null, 0 }
24                 };
25                 static const JSCore.ClassDefinition class_definition = {
26                     0,
27                     JSCore.ClassAttribute.None,
28                     "App",
29                     null,
30
31                     null,
32                     class_functions,
33
34                     null,
35                     null,
36
37                     null,
38                     null,
39                     null,
40                     null,
41
42                     null,
43                     null,
44                     class_constructor,
45                     null,
46                     null
47                 };
48
49                 
50                 public JSCore.GlobalContext js_global_context =  null;
51
52                 public static Javascript singleton()
53                 {
54                         if (instance == null) {
55                                 instance = new Javascript();
56                         }
57                         return instance;
58                 }
59                 public Javascript()
60                 {
61                         var goc = new JSCore.Class(  class_definition ); 
62                         this.js_global_context = new JSCore.GlobalContext(goc);
63                         
64
65                 }
66                 public int validate(string code, out string res)
67                 {
68                         JSCore.Value ex;
69                         unowned   JSCore.GlobalContext ctx = this.js_global_context;
70                         var ret = this.js_global_context.check_script_syntax(
71                                    new JSCore.String.with_utf8_c_string(code),
72                                    null,
73                                    0,
74                                    out ex
75                         );
76                         res = ""; 
77                         if (ex.is_null(ctx)) {
78                                 return -1;
79                         }
80
81                         
82                         var exo = ex.to_object(ctx, null);
83                         unowned JSCore.PropertyNameArray property_names = exo.copy_property_names (ctx);
84
85                         
86                         
87                          
88                         var js_string = new JSCore.String.with_utf8_c_string("line");
89                         var line = exo.get_property(ctx, js_string, null).to_number(ctx,null);
90                         
91                         
92
93                         // see if we can convert exception string
94                         char *c_string = new char[1024];
95                         var err_string = ex.to_string_copy (ctx, null);
96                         err_string.get_utf8_c_string (c_string, 1023);
97                         res = (string)c_string;
98                         //print ("Error on line %d\n%s\n", (int)line, res); 
99                         
100                         var rline = (int) line;
101                         
102                         return rline > 0 ? rline -1 : 0;
103                 
104                         
105                 }
106                 
107
108         }
109
110         
111
112
113 }
114