}
- /*
- setNSID : function(id)
- {
-
- this.items[0]['|module'] = id;
-
-
- },
-
-
- getType: function() {
- return 'Roo';
- },
-
- */
+
- public override void removeFiles() {
- var html = GLib.Path.get_dirname(this.path) +"/templates/" + name + ".html";
- if (FileUtils.test(html, FileTest.EXISTS)) {
- GLib.FileUtils.remove(html);
- }
- var js = GLib.Path.get_dirname(this.path) +"/" + name + ".html";
- if (FileUtils.test(js, FileTest.EXISTS)) {
- GLib.FileUtils.remove(js);
+ public override void removeFiles() {
+ var html = GLib.Path.get_dirname(this.path) +"/templates/" + name + ".html";
+ if (FileUtils.test(html, FileTest.EXISTS)) {
+ GLib.FileUtils.remove(html);
+ }
+ var js = GLib.Path.get_dirname(this.path) +"/" + name + ".html";
+ if (FileUtils.test(js, FileTest.EXISTS)) {
+ GLib.FileUtils.remove(js);
+ }
}
- }
public override void loadItems() throws GLib.Error // : function(cb, sync) == original was async.
{
- print("load Items!");
+ GLib.debug("load Items!");
if (this.tree != null) {
return;
}
this.tree.loadFromJson(tree_base, int.parse(bjs_version_str));
}
this.loaded = true;
-
+ this.toSource(); // force it to number the lines...
}
- /**
- * old code had broken xtypes and used arrays differently,
- * this code should try and clean it up..
- *
- *
- * /
- fixItems : function(node, fixthis)
- {
- if (fixthis) {
- // fix xtype.
- var fn = this.guessName(node);
- //print("guessname got " + fn);
- if (fn) {
- var bits = fn.split('.');
- node.xtype = bits.pop();
- node['|xns'] = bits.join('.');
-
- }
- // fix array???
-
-
- }
- if (!node.items || !node.items.length) {
- return;
- }
- var _this = this;
- var aitems = [];
- var nitems = [];
- node.items.forEach(function(i) {
-
-
-
- _this.fixItems(i, true);
- if (i.xtype == 'Array') {
- aitems.push(i);
- return;
- }
- nitems.push(i);
- });
- node.items = nitems;
-
- if (!aitems.length) {
- return;
- }
-
- aitems.forEach(function(i) {
-
- if (!i.items || !i.items.length) {
- return;
- }
- var prop = i['*prop'] + '[]';
- // colModel to cm?
- i.items.forEach(function(c) {
- c['*prop'] = prop;
- node.items.push(c);
-
- });
-
-
- });
-
-
- // array handling..
-
-
-
-
-
- },
- */
+
public override void save()
- {
+ {
print("--- JsRender.Roo.save");
print("save() - reset transStrings\n");
- }
+ }
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);
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);
this.transStrings.set(str,
- GLib.Checksum.compute_for_string (ChecksumType.MD5, str)
+ GLib.Checksum.compute_for_string (ChecksumType.MD5, str.strip())
);
continue;
}
*
*
*/
+ public override string toSourceCode()
+ {
+ this.transStrings = new Gee.HashMap<string,string>();
+ this.findTransStrings(this.tree);
+ return this.toSource();
+ }
+
public override string toSource()
{
// dump the file tree back out to a string.
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<string,string>();
+ this.findTransStrings(this.tree);
+
+
if (top.contains("Dialog")) {
return this.toSourceDialog(false);
}
*/
}
+
+ /**
+ *
+ * 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()
{
//var items = JSON.parse(JSON.stringify(this.items[0]));
- var o = this.mungeToString(" ");
-
+
string[] adda = { " = {",
"",
"};",
""
};
- 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
+ );
+
//var items = JSON.parse(JSON.stringify(this.items[0]));
- var o = this.mungeToString(" ");
+
string[] adda = { " = {",
"",
return this.mungeToStringWrap(" ",
this.outputHeader() + "\n" + this.name + string.joinv("\n", adda), // header
string.joinv("\n", addb) // footer
- )
- return this.outputHeader() + "\n" +
- this.name + string.joinv("\n", adda) + o + string.joinv("\n", addb);
+ );
}
- this.mungeToStringWrap(pad, prefix, footer)
- {
-
- }
+
// 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");
}
-
- return
- this.outputHeader() + "\n" +
+
+
+ var pref = this.outputHeader() + "\n" +
this.name + " = new Roo.XComponent({\n" +
"\n" +
" {\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"
+ );
+
}