X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=src%2FJsRender%2FRoo.vala;h=25f003c592eac3c47b084f9f67e5cb399ecb0aa5;hb=HEAD;hp=8d6435279581b65834c7442c1646ae44470ef4ff;hpb=72a5a8aabf2e32c5685e5eb2a1fa744ccb6cc527;p=app.Builder.js diff --git a/src/JsRender/Roo.vala b/src/JsRender/Roo.vala index 8d6435279..25f003c59 100644 --- a/src/JsRender/Roo.vala +++ b/src/JsRender/Roo.vala @@ -60,6 +60,7 @@ namespace JsRender { "headline", "header", "placeholder", + "fieldLabel", }; for (var i=0;i(); this.findTransStrings(this.tree); @@ -257,7 +176,7 @@ namespace JsRender { - } + } @@ -266,12 +185,12 @@ namespace JsRender { { var top = this.tree.fqn(); - print ("TOP = " + top + "\n" ); - if (top.index_of("Roo.bootstrap.") < 0 && - top.index_of("Roo.mailer.") < 0 - ) { - return; - } + GLib.debug ("TOP = " + top + "\n" ); + if (top.index_of("Roo.bootstrap.") < 0 && + top.index_of("Roo.mailer.") < 0 + ) { + return; + } //now write the js file.. @@ -296,7 +215,7 @@ namespace JsRender { print("Skip save - templates folder does not exist : %s\n", targetdir); return; } - print("SAVE HTML -- %s\n%s\n",targetdir + "/" + bn, html); + //print("SAVE HTML -- %s\n%s\n",targetdir + "/" + bn, html); try { this.writeFile(targetdir + "/" + bn , html); } catch (FileError e ) { @@ -350,19 +269,24 @@ namespace JsRender { if (kflag == "$") { continue; } + // skip cms-id nodes... + if (kname == "html" && node.has("cms-id")) { + continue; + } + var str = iter.get_value(); if (this.doubleStringProps.index_of(kname) > -1) { - print("flag=%s type=%s name=%s : %s\n", kflag,ktype,kname,str); + GLib.debug("flag=%s type=%s name=%s : %s\n", kflag,ktype,kname,str); this.transStrings.set(str, - GLib.Checksum.compute_for_string (ChecksumType.MD5, str) + GLib.Checksum.compute_for_string (ChecksumType.MD5, str.strip()) ); continue; } if (ktype.down() == "string" && kname[0] == '_') { - print("flag=%s type=%s name=%s : %s\n", kflag,ktype,kname,str); + GLib.debug("flag=%s type=%s name=%s : %s\n", kflag,ktype,kname,str); this.transStrings.set(str, - GLib.Checksum.compute_for_string (ChecksumType.MD5, str) + GLib.Checksum.compute_for_string (ChecksumType.MD5, str.strip()) ); continue; } @@ -382,9 +306,9 @@ namespace JsRender { public string transStringsToJs() { - print("Roo.transStringsToJs()\n"); + GLib.debug("Roo.transStringsToJs()\n"); if (this.transStrings.size < 1) { - print("Roo.transStringsToJs() size < 1?\n"); + GLib.debug("Roo.transStringsToJs() size < 1?\n"); return ""; } @@ -477,6 +401,13 @@ namespace JsRender { * * */ + public override string toSourceCode() + { + this.transStrings = new Gee.HashMap(); + this.findTransStrings(this.tree); + return this.toSource(); + } + public override string toSource() { // dump the file tree back out to a string. @@ -492,10 +423,14 @@ namespace JsRender { if (top == null) { return ""; } - // get the translatable strings.. + // get the translatable strings.. = we reload them again so calling methods get the right data... + this.transStrings = new Gee.HashMap(); + this.findTransStrings(this.tree); + + if (top.contains("Dialog")) { return this.toSourceDialog(false); } @@ -511,6 +446,44 @@ namespace JsRender { */ } + + /** + * + * munge JSON tree into Javascript code. + * + * NOTE - needs a deep copy of original tree, before starting.. + * - so that it does not modify current.. + * + * FIXME: + or / prefixes to properties hide it from renderer. + * FIXME: '*props' - not supported by this.. ?? - upto rendering code.. + * FIXME: needs to understand what properties might be translatable (eg. double quotes) + * + * @arg {object} obj the object or array to munge.. + * @arg {boolean} isListener - is the array being sent a listener.. + * @arg {string} pad - the padding to indent with. + */ + + public string mungeToStringWrap(string pad, string prefix, string suffix) + { + if (this.tree == null) { + return ""; + } + var x = new NodeToJs(this.tree, this.doubleStringProps, pad, null); + x.renderer = this; + x.cur_line = prefix.split("\n").length; + + var ret = x.munge(); + //var nret = x.ret; + + // output both files.. so we can diff them... + //this.writeFile("/tmp/old.js", ret); + //this.writeFile("/tmp/new.js", nret); + return prefix + ret + suffix; + + + } + + public string outputHeader() { @@ -543,8 +516,7 @@ namespace JsRender { //var items = JSON.parse(JSON.stringify(this.items[0])); - var o = this.mungeToString(" "); - + string[] adda = { " = {", "", @@ -581,20 +553,28 @@ namespace JsRender { "};", "" }; - return this.outputHeader() + "\n" + - this.name + string.joinv("\n", adda) + o + string.joinv("\n", addb); - + + return this.mungeToStringWrap(" ", + this.outputHeader() + "\n" + this.name + string.joinv("\n", adda), //header + string.joinv("\n", addb) // footer + ); + } + /** + Bootstrap modal dialog + + */ + public string toSourceModal(bool isPreview) { //var items = JSON.parse(JSON.stringify(this.items[0])); - var o = this.mungeToString(" "); + string[] adda = { " = {", "", @@ -631,12 +611,17 @@ namespace JsRender { "};", "" }; - return this.outputHeader() + "\n" + - this.name + string.joinv("\n", adda) + o + string.joinv("\n", addb); + return this.mungeToStringWrap(" ", + this.outputHeader() + "\n" + this.name + string.joinv("\n", adda), // header + string.joinv("\n", addb) // footer + ); } + + + public string pathToPart() @@ -671,11 +656,14 @@ namespace JsRender { // topItem.background = false; } - var o = this.mungeToString(" "); - var reg = new Regex("[^A-Za-z.]+"); - - string modkey = this.modOrder + "-" + reg.replace(this.name, this.name.length, 0 , "-"); + var modkey = this.modOrder + "-" + this.name; + try { + var reg = new Regex("[^A-Za-z.]+"); + modkey = this.modOrder + "-" + reg.replace(this.name, this.name.length, 0 , "-"); + } catch (RegexError e) { + //noop.. + } string parent = (this.parent.length > 0 ? "'" + this.parent + "'" : "false"); @@ -693,9 +681,9 @@ namespace JsRender { } - - return - this.outputHeader() + "\n" + + + + var pref = this.outputHeader() + "\n" + this.name + " = new Roo.XComponent({\n" + "\n" + @@ -715,10 +703,13 @@ namespace JsRender { " {\n" + " var _this = this;\n" + // bc " var MODULE = this;\n" + /// this looks like a better name. - " return " + o + ";" + + " return "; + + return this.mungeToStringWrap(" ", pref, ";" + " }\n" + - "});\n"; - + "});\n" + ); + }