X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=src%2FPalete%2FPalete.vala;h=10a39c765d988d5e73c554a9e3c0970e8d97bd3a;hb=3b622a1163fcca83a4b5614cf774796fbf6a29b3;hp=29eca254df3a764075a0dd615b127b97f3b67304;hpb=bbb28088b0c18823088f53c4b417e0436bc87e6d;p=app.Builder.js diff --git a/src/Palete/Palete.vala b/src/Palete/Palete.vala index 29eca254d..10a39c765 100644 --- a/src/Palete/Palete.vala +++ b/src/Palete/Palete.vala @@ -399,11 +399,42 @@ namespace Palete } - public validateJavascriptCompression(string code) + public Gee.HashMap validateJavascriptCompression(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; + var estr = ""; + var ret = new Gee.HashMap(); + try { + p.packFile(code, "ANONFILE",""); + } catch (JSDOC.TokenReaderError e) { + estr = e.message; + } catch (JSDOC.ScopeParserError e) { + estr = e.message; + } + 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; }