X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=src%2FPalete%2FPalete.vala;h=44ed2e3b93cfd7782dec5cb9d17b7f27462064b1;hb=6ab13d0be186561923506b8b586a3a3efa2fa2dc;hp=ab51c60434e33080f37f90aeea94b2230f9e0015;hpb=1ef5631414889d947f913c7377b3971c4e4ce335;p=app.Builder.js diff --git a/src/Palete/Palete.vala b/src/Palete/Palete.vala index ab51c6043..44ed2e3b9 100644 --- a/src/Palete/Palete.vala +++ b/src/Palete/Palete.vala @@ -361,6 +361,7 @@ namespace Palete public Gee.HashMap validateJavascript( + WindowState state, string code, string property, string ptype, @@ -386,32 +387,73 @@ namespace Palete var line = Javascript.singleton().validate( testcode, out errmsg); - if (line < 0) { + if (line > -1) { if (ptype == "file") { - return this.validateJavascriptCompression(code); + var err = new Json.Object(); + err.set_int_member("ERR-TOTAL", 1); + var files_obj = new Json.Object(); + var lines_obj = new Json.Object(); + var lines_ar = new Json.Array(); + lines_ar.add_string_element(errmsg); + lines_obj.set_array_member(line.to_string(), lines_ar); + files_obj.set_object_member(file.filename, lines_obj); + + err.set_object_member("ERR", files_obj); + + state.showCompileResult(err); + return ret; } - print("no errors\n"); + ret.set(line, errmsg); // depricated - this is used by the editor currently -- but we are planning to switch from that.. + print("got errors\n"); return ret; + + } + // now syntax is OK.. try the + + + + if (ptype == "file") { + this.validateJavascriptCompression(file, state, code); } - ret.set(line, errmsg); - print("got errors\n"); + print("no errors\n"); return ret; } - public Gee.HashMap validateJavascriptCompression(string code) + public void validateJavascriptCompression(JsRender.JsRender file, WindowState state, string code) { // this uses the roojspacker code to try and compress the code. // it should highlight errors before we actually push live the code. + // standard error format: file %s, line %s, Error + var p = new JSDOC.Packer(); p.keepWhite = false; p.skipScope = false; p.dumpTokens = false; - p.cleanup = false; - p.packFile(code, "ANONFILE",""); - + p.cleanup = false; + var estr = ""; var ret = new Gee.HashMap(); + + p.packFile(code, file.filename,""); + if (!p.hasErrors("")) { + state.showCompileResult(err); + } + + if (estr.length > 0 ) { + + var bits = estr.split(","); + if (bits.length > 2) { + var linebits = bits[1].strip().split(" "); + if (linebits.length > 1) { + var line = int.parse(linebits[1]); + // line is correct - but our standard for error messages is to do it start at '0' + ret.set(line -1 , bits[2]); + } + + } + } + return ret; }