forked from tower/tower
-
Notifications
You must be signed in to change notification settings - Fork 0
/
renderingHelper.js
72 lines (71 loc) · 2.42 KB
/
renderingHelper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Tower.View.RenderingHelper = {
partial: function(path, options, callback) {
var item, locals, name, prefixes, template, tmpl, _i, _len, _ref;
try {
if (typeof options === "function") {
callback = options;
options = {};
}
options || (options = {});
options.locals || (options.locals = {});
locals = options.locals;
path = path.split("/");
path[path.length - 1] = "_" + path[path.length - 1];
path = path.join("/");
prefixes = options.prefixes;
if (this._context) prefixes || (prefixes = [this._context.collectionName]);
template = this._readTemplate(path, prefixes, options.type || Tower.View.engine);
template = this.renderWithEngine(String(template));
if (options.collection) {
name = options.as || Tower.Support.String.camelize(options.collection[0].constructor.name, true);
tmpl = eval("(function(data) { with(data) { this." + name + " = " + name + "; " + (String(template)) + " } })");
_ref = options.collection;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
item = _ref[_i];
locals[name] = item;
tmpl.call(this, locals);
delete this[name];
}
} else {
tmpl = "(function(data) { with(data) { " + (String(template)) + " } })";
eval(tmpl).call(this, locals);
}
} catch (error) {
console.log(error);
}
return null;
},
page: function() {
var args, browserTitle, options;
args = Tower.Support.Array.args(arguments);
options = Tower.Support.Array.extractOptions(args);
browserTitle = args.shift() || options.title;
return this.contentFor("title", function() {
return title(browserTitle);
});
},
urlFor: function() {
return Tower.urlFor.apply(Tower, arguments);
},
yields: function(key) {
var ending, value;
value = this[key];
if (typeof value === "function") {
eval("(" + (String(value)) + ")()");
} else {
ending = value.match(/\n$/) ? "\n" : "";
text(value.replace(/\n$/, "").replace(/^(?!\s+$)/mg, __ck.repeat(' ', __ck.tabs)) + ending);
}
return null;
},
hasContentFor: function(key) {
return !!(this.hasOwnProperty(key) && this[key] && this[key] !== "");
},
has: function(key) {
return !!(this.hasOwnProperty(key) && this[key] && this[key] !== "");
},
contentFor: function(key, block) {
this[key] = block;
return null;
}
};