hogan_assets 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +1 -1
- data/README.md +2 -2
- data/hogan_assets.gemspec +1 -1
- data/lib/hogan_assets/tilt.rb +1 -1
- data/lib/hogan_assets/version.rb +1 -1
- data/test/hogan_assets/tilt_test.rb +2 -2
- data/vendor/assets/javascripts/hogan.js +161 -99
- metadata +10 -9
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
**HoganAssets** compiles your [mustache](http://mustache.github.com/) templates with [hogan.js](http://twitter.github.com/hogan.js/) on **sprockets** and the Rails asset pipeline.
|
4
4
|
|
5
|
-
**hogan.js** is a templating engine developed at [Twitter](http://twitter.com) that follows the **mustache** spec and compiles the templates to JavaScript. The first bit is *cool*, since
|
5
|
+
**hogan.js** is a templating engine developed at [Twitter](http://twitter.com) that follows the **mustache** spec and compiles the templates to JavaScript. The first bit is *cool*, since **mustache** is *cool*. The second bit is **awesome and full of win** because we can now compile our **mustache** templates on the server using the asset pipeline/sprockets.
|
6
6
|
|
7
|
-
This gem contains **hogan.js v1.0.
|
7
|
+
This gem contains **hogan.js v1.0.4**
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
data/hogan_assets.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
|
|
6
6
|
gem.email = ["leshill@gmail.com"]
|
7
7
|
gem.description = %q{Use compiled hogan.js (mustache) JavaScript templates with sprockets and the Rails asset pipeline.}
|
8
8
|
gem.summary = %q{Use compiled hogan.js (mustache) JavaScript templates with sprockets and the Rails asset pipeline.}
|
9
|
-
gem.homepage = ""
|
9
|
+
gem.homepage = "https://github.com/leshill/hogan_assets"
|
10
10
|
|
11
11
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
12
|
gem.files = `git ls-files`.split("\n")
|
data/lib/hogan_assets/tilt.rb
CHANGED
@@ -11,7 +11,7 @@ module HoganAssets
|
|
11
11
|
<<-TEMPLATE
|
12
12
|
(function() {
|
13
13
|
this.HoganTemplates || (this.HoganTemplates = {});
|
14
|
-
this.HoganTemplates[#{template_name}] = new
|
14
|
+
this.HoganTemplates[#{template_name}] = new Hogan.Template(#{code});
|
15
15
|
this.HoganTemplates[#{template_name}].r = #{compiled_template};
|
16
16
|
return HoganTemplates[#{template_name}];
|
17
17
|
}).call(this);
|
data/lib/hogan_assets/version.rb
CHANGED
@@ -15,8 +15,8 @@ module HoganAssets
|
|
15
15
|
assert_equal <<END_EXPECTED, template.render(scope, {})
|
16
16
|
(function() {
|
17
17
|
this.HoganTemplates || (this.HoganTemplates = {});
|
18
|
-
this.HoganTemplates["path/to/template"] = new
|
19
|
-
this.HoganTemplates["path/to/template"].r = function(
|
18
|
+
this.HoganTemplates["path/to/template"] = new Hogan.Template("This is {{mustache}}");
|
19
|
+
this.HoganTemplates["path/to/template"].r = function(c,p,i){i = i || "";var b = i + "";var _ = this;b += "This is ";b += (_.v(_.f("mustache",c,p,0)));return b;;};
|
20
20
|
return HoganTemplates["path/to/template"];
|
21
21
|
}).call(this);
|
22
22
|
END_EXPECTED
|
@@ -13,21 +13,33 @@
|
|
13
13
|
* limitations under the License.
|
14
14
|
*/
|
15
15
|
|
16
|
-
var HoganTemplate = (function () {
|
17
16
|
|
18
|
-
|
19
|
-
|
17
|
+
|
18
|
+
var Hogan = {};
|
19
|
+
|
20
|
+
(function (Hogan) {
|
21
|
+
Hogan.Template = function constructor(renderFunc, text, compiler) {
|
22
|
+
if (renderFunc) {
|
23
|
+
this.r = renderFunc;
|
24
|
+
}
|
25
|
+
this.c = compiler;
|
26
|
+
this.text = text || '';
|
20
27
|
}
|
21
28
|
|
22
|
-
|
29
|
+
Hogan.Template.prototype = {
|
23
30
|
// render: replaced by generated code.
|
24
|
-
r: function (context, partials) { return ''; },
|
31
|
+
r: function (context, partials, indent) { return ''; },
|
25
32
|
|
26
33
|
// variable escaping
|
27
34
|
v: hoganEscape,
|
28
35
|
|
29
|
-
render: function render(context, partials) {
|
30
|
-
return this.
|
36
|
+
render: function render(context, partials, indent) {
|
37
|
+
return this.ri([context], partials || {}, indent);
|
38
|
+
},
|
39
|
+
|
40
|
+
// render internal -- a hook for overrides that catches partials too
|
41
|
+
ri: function (context, partials, indent) {
|
42
|
+
return this.r(context, partials, indent);
|
31
43
|
},
|
32
44
|
|
33
45
|
// tries to find a partial in the curent scope and render it
|
@@ -38,7 +50,11 @@ var HoganTemplate = (function () {
|
|
38
50
|
return '';
|
39
51
|
}
|
40
52
|
|
41
|
-
|
53
|
+
if (this.c && typeof partial == 'string') {
|
54
|
+
partial = this.c.compile(partial);
|
55
|
+
}
|
56
|
+
|
57
|
+
return partial.ri(context, partials, indent);
|
42
58
|
},
|
43
59
|
|
44
60
|
// render a section
|
@@ -47,8 +63,7 @@ var HoganTemplate = (function () {
|
|
47
63
|
tail = context[context.length - 1];
|
48
64
|
|
49
65
|
if (!isArray(tail)) {
|
50
|
-
buf = section(context, partials);
|
51
|
-
return buf;
|
66
|
+
return buf = section(context, partials);
|
52
67
|
}
|
53
68
|
|
54
69
|
for (var i = 0; i < tail.length; i++) {
|
@@ -56,19 +71,20 @@ var HoganTemplate = (function () {
|
|
56
71
|
buf += section(context, partials);
|
57
72
|
context.pop();
|
58
73
|
}
|
74
|
+
|
59
75
|
return buf;
|
60
76
|
},
|
61
77
|
|
62
78
|
// maybe start a section
|
63
|
-
s: function(val, ctx, partials, inverted, start, end) {
|
79
|
+
s: function(val, ctx, partials, inverted, start, end, tags) {
|
64
80
|
var pass;
|
65
81
|
|
66
82
|
if (isArray(val) && val.length === 0) {
|
67
83
|
return false;
|
68
84
|
}
|
69
85
|
|
70
|
-
if (
|
71
|
-
val = this.ls(val, ctx, partials, start, end);
|
86
|
+
if (typeof val == 'function') {
|
87
|
+
val = this.ls(val, ctx, partials, inverted, start, end, tags);
|
72
88
|
}
|
73
89
|
|
74
90
|
pass = (val === '') || !!val;
|
@@ -82,7 +98,6 @@ var HoganTemplate = (function () {
|
|
82
98
|
|
83
99
|
// find values with dotted names
|
84
100
|
d: function(key, ctx, partials, returnFound) {
|
85
|
-
|
86
101
|
var names = key.split('.'),
|
87
102
|
val = this.f(names[0], ctx, partials, returnFound),
|
88
103
|
cx = null;
|
@@ -140,11 +155,12 @@ var HoganTemplate = (function () {
|
|
140
155
|
},
|
141
156
|
|
142
157
|
// higher order templates
|
143
|
-
ho: function(val, cx, partials, text) {
|
158
|
+
ho: function(val, cx, partials, text, tags) {
|
159
|
+
var compiler = this.c;
|
144
160
|
var t = val.call(cx, text, function(t) {
|
145
|
-
return
|
161
|
+
return compiler.compile(t, {delimiters: tags}).render(cx, partials);
|
146
162
|
});
|
147
|
-
var s =
|
163
|
+
var s = compiler.compile(t.toString(), {delimiters: tags}).render(cx, partials);
|
148
164
|
this.b = s;
|
149
165
|
return false;
|
150
166
|
},
|
@@ -153,45 +169,74 @@ var HoganTemplate = (function () {
|
|
153
169
|
b: '',
|
154
170
|
|
155
171
|
// lambda replace section
|
156
|
-
ls: function(val, ctx, partials, start, end) {
|
172
|
+
ls: function(val, ctx, partials, inverted, start, end, tags) {
|
157
173
|
var cx = ctx[ctx.length - 1],
|
158
|
-
t =
|
174
|
+
t = null;
|
159
175
|
|
160
|
-
if (val.length > 0) {
|
161
|
-
return this.ho(val, cx, partials, this.text.substring(start, end));
|
176
|
+
if (!inverted && this.c && val.length > 0) {
|
177
|
+
return this.ho(val, cx, partials, this.text.substring(start, end), tags);
|
162
178
|
}
|
163
179
|
|
180
|
+
t = val.call(cx);
|
181
|
+
|
164
182
|
if (typeof t == 'function') {
|
165
|
-
|
183
|
+
if (inverted) {
|
184
|
+
return true;
|
185
|
+
} else if (this.c) {
|
186
|
+
return this.ho(t, cx, partials, this.text.substring(start, end), tags);
|
187
|
+
}
|
166
188
|
}
|
189
|
+
|
167
190
|
return t;
|
168
191
|
},
|
169
192
|
|
170
193
|
// lambda replace variable
|
171
194
|
lv: function(val, ctx, partials) {
|
172
195
|
var cx = ctx[ctx.length - 1];
|
173
|
-
|
196
|
+
var result = val.call(cx);
|
197
|
+
if (typeof result == 'function') {
|
198
|
+
result = result.call(cx);
|
199
|
+
}
|
200
|
+
result = result.toString();
|
201
|
+
|
202
|
+
if (this.c && ~result.indexOf("{{")) {
|
203
|
+
return this.c.compile(result).render(cx, partials);
|
204
|
+
}
|
205
|
+
|
206
|
+
return result;
|
174
207
|
}
|
208
|
+
|
175
209
|
};
|
176
210
|
|
177
|
-
var rAmp = /&/g,
|
178
|
-
|
211
|
+
var rAmp = /&/g,
|
212
|
+
rLt = /</g,
|
213
|
+
rGt = />/g,
|
214
|
+
rApos =/\'/g,
|
215
|
+
rQuot = /\"/g,
|
216
|
+
hChars =/[&<>\"\']/;
|
217
|
+
|
179
218
|
function hoganEscape(str) {
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
219
|
+
str = String((str === null || str === undefined) ? '' : str);
|
220
|
+
return hChars.test(str) ?
|
221
|
+
str
|
222
|
+
.replace(rAmp,'&')
|
223
|
+
.replace(rLt,'<')
|
224
|
+
.replace(rGt,'>')
|
225
|
+
.replace(rApos,''')
|
226
|
+
.replace(rQuot, '"') :
|
227
|
+
str;
|
184
228
|
}
|
185
229
|
|
186
230
|
var isArray = Array.isArray || function(a) {
|
187
231
|
return Object.prototype.toString.call(a) === '[object Array]';
|
188
232
|
};
|
189
233
|
|
190
|
-
|
191
|
-
|
234
|
+
})(typeof exports !== 'undefined' ? exports : Hogan);
|
235
|
+
|
236
|
+
|
192
237
|
|
193
|
-
var Hogan = (function () {
|
194
238
|
|
239
|
+
(function (Hogan) {
|
195
240
|
// Setup regex assignments
|
196
241
|
// remove whitespace according to Mustache spec
|
197
242
|
var rIsWhitespace = /\S/,
|
@@ -204,7 +249,7 @@ var Hogan = (function () {
|
|
204
249
|
'<': 6, '=': 7, '_v': 8, '{': 9, '&': 10
|
205
250
|
};
|
206
251
|
|
207
|
-
function scan(text) {
|
252
|
+
Hogan.scan = function scan(text, delimiters) {
|
208
253
|
var len = text.length,
|
209
254
|
IN_TEXT = 0,
|
210
255
|
IN_TAG_TYPE = 1,
|
@@ -232,7 +277,7 @@ var Hogan = (function () {
|
|
232
277
|
for (var j = lineStart; j < tokens.length; j++) {
|
233
278
|
isAllWhitespace =
|
234
279
|
(tokens[j].tag && tagTypes[tokens[j].tag] < tagTypes['_v']) ||
|
235
|
-
|
280
|
+
(!tokens[j].tag && tokens[j].match(rIsWhitespace) === null);
|
236
281
|
if (!isAllWhitespace) {
|
237
282
|
return false;
|
238
283
|
}
|
@@ -243,9 +288,14 @@ var Hogan = (function () {
|
|
243
288
|
|
244
289
|
function filterLine(haveSeenTag, noNewLine) {
|
245
290
|
addBuf();
|
291
|
+
|
246
292
|
if (haveSeenTag && lineIsWhitespace()) {
|
247
|
-
for (var j = lineStart; j < tokens.length; j++) {
|
293
|
+
for (var j = lineStart, next; j < tokens.length; j++) {
|
248
294
|
if (!tokens[j].tag) {
|
295
|
+
if ((next = tokens[j+1]) && next.tag == '>') {
|
296
|
+
// set indent to token value
|
297
|
+
next.indent = tokens[j].toString()
|
298
|
+
}
|
249
299
|
tokens.splice(j, 1);
|
250
300
|
}
|
251
301
|
}
|
@@ -260,13 +310,22 @@ var Hogan = (function () {
|
|
260
310
|
function changeDelimiters(text, index) {
|
261
311
|
var close = '=' + ctag,
|
262
312
|
closeIndex = text.indexOf(close, index),
|
263
|
-
delimiters = trim(
|
264
|
-
|
313
|
+
delimiters = trim(
|
314
|
+
text.substring(text.indexOf('=', index) + 1, closeIndex)
|
315
|
+
).split(' ');
|
316
|
+
|
265
317
|
otag = delimiters[0];
|
266
318
|
ctag = delimiters[1];
|
319
|
+
|
267
320
|
return closeIndex + close.length - 1;
|
268
321
|
}
|
269
322
|
|
323
|
+
if (delimiters) {
|
324
|
+
delimiters = delimiters.split(' ');
|
325
|
+
otag = delimiters[0];
|
326
|
+
ctag = delimiters[1];
|
327
|
+
}
|
328
|
+
|
270
329
|
for (i = 0; i < len; i++) {
|
271
330
|
if (state == IN_TEXT) {
|
272
331
|
if (tagChange(otag, text, i)) {
|
@@ -284,7 +343,6 @@ var Hogan = (function () {
|
|
284
343
|
i += otag.length - 1;
|
285
344
|
tag = tagTypes[text.charAt(i + 1)];
|
286
345
|
tagType = tag ? text.charAt(i + 1) : '_v';
|
287
|
-
seenTag = i;
|
288
346
|
if (tagType == '=') {
|
289
347
|
i = changeDelimiters(text, i);
|
290
348
|
state = IN_TEXT;
|
@@ -294,15 +352,20 @@ var Hogan = (function () {
|
|
294
352
|
}
|
295
353
|
state = IN_TAG;
|
296
354
|
}
|
355
|
+
seenTag = i;
|
297
356
|
} else {
|
298
357
|
if (tagChange(ctag, text, i)) {
|
299
|
-
|
300
|
-
|
301
|
-
i: (tagType == '/') ? seenTag - 1 : i + 1});
|
358
|
+
tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag,
|
359
|
+
i: (tagType == '/') ? seenTag - ctag.length : i + otag.length});
|
302
360
|
buf = '';
|
361
|
+
i += ctag.length - 1;
|
303
362
|
state = IN_TEXT;
|
304
363
|
if (tagType == '{') {
|
305
|
-
|
364
|
+
if (ctag == '}}') {
|
365
|
+
i++;
|
366
|
+
} else {
|
367
|
+
cleanTripleStache(tokens[tokens.length - 1]);
|
368
|
+
}
|
306
369
|
}
|
307
370
|
} else {
|
308
371
|
buf += text.charAt(i);
|
@@ -315,6 +378,12 @@ var Hogan = (function () {
|
|
315
378
|
return tokens;
|
316
379
|
}
|
317
380
|
|
381
|
+
function cleanTripleStache(token) {
|
382
|
+
if (token.n.substr(token.n.length - 1) === '}') {
|
383
|
+
token.n = token.n.substring(0, token.n.length - 1);
|
384
|
+
}
|
385
|
+
}
|
386
|
+
|
318
387
|
function trim(s) {
|
319
388
|
if (s.trim) {
|
320
389
|
return s.trim();
|
@@ -344,8 +413,7 @@ var Hogan = (function () {
|
|
344
413
|
|
345
414
|
while (tokens.length > 0) {
|
346
415
|
token = tokens.shift();
|
347
|
-
if (token.tag == '#' || token.tag == '^' ||
|
348
|
-
isOpener(token, customTags)) {
|
416
|
+
if (token.tag == '#' || token.tag == '^' || isOpener(token, customTags)) {
|
349
417
|
stack.push(token);
|
350
418
|
token.nodes = buildTree(tokens, token.tag, stack, customTags);
|
351
419
|
instructions.push(token);
|
@@ -388,16 +456,16 @@ var Hogan = (function () {
|
|
388
456
|
}
|
389
457
|
}
|
390
458
|
|
391
|
-
function
|
392
|
-
|
393
|
-
|
459
|
+
function writeCode(tree) {
|
460
|
+
return 'i = i || "";var b = i + "";var _ = this;' + walk(tree) + 'return b;';
|
461
|
+
}
|
462
|
+
|
463
|
+
Hogan.generate = function (code, text, options) {
|
394
464
|
if (options.asString) {
|
395
|
-
return 'function(
|
465
|
+
return 'function(c,p,i){' + code + ';}';
|
396
466
|
}
|
397
467
|
|
398
|
-
|
399
|
-
template.r = new Function('cx', 'p', code);
|
400
|
-
return template;
|
468
|
+
return new Hogan.Template(new Function('c', 'p', 'i', code), text, Hogan);
|
401
469
|
}
|
402
470
|
|
403
471
|
function esc(s) {
|
@@ -417,28 +485,28 @@ var Hogan = (function () {
|
|
417
485
|
var tag = tree[i].tag;
|
418
486
|
if (tag == '#') {
|
419
487
|
code += section(tree[i].nodes, tree[i].n, chooseMethod(tree[i].n),
|
420
|
-
tree[i].i, tree[i].end);
|
488
|
+
tree[i].i, tree[i].end, tree[i].otag + " " + tree[i].ctag);
|
421
489
|
} else if (tag == '^') {
|
422
490
|
code += invertedSection(tree[i].nodes, tree[i].n,
|
423
491
|
chooseMethod(tree[i].n));
|
424
492
|
} else if (tag == '<' || tag == '>') {
|
425
|
-
code += partial(tree[i]
|
493
|
+
code += partial(tree[i]);
|
426
494
|
} else if (tag == '{' || tag == '&') {
|
427
495
|
code += tripleStache(tree[i].n, chooseMethod(tree[i].n));
|
428
496
|
} else if (tag == '\n') {
|
429
|
-
code += text('
|
497
|
+
code += text('"\\n"' + (tree.length-1 == i ? '' : ' + i'));
|
430
498
|
} else if (tag == '_v') {
|
431
499
|
code += variable(tree[i].n, chooseMethod(tree[i].n));
|
432
500
|
} else if (tag === undefined) {
|
433
|
-
code += text(tree[i]);
|
501
|
+
code += text('"' + esc(tree[i]) + '"');
|
434
502
|
}
|
435
503
|
}
|
436
504
|
return code;
|
437
505
|
}
|
438
506
|
|
439
|
-
function section(nodes, id, method, start, end) {
|
507
|
+
function section(nodes, id, method, start, end, tags) {
|
440
508
|
return 'if(_.s(_.' + method + '("' + esc(id) + '",c,p,1),' +
|
441
|
-
'c,p,0,' + start + ',' + end + ')){' +
|
509
|
+
'c,p,0,' + start + ',' + end + ', "' + tags + '")){' +
|
442
510
|
'b += _.rs(c,p,' +
|
443
511
|
'function(c,p){ var b = "";' +
|
444
512
|
walk(nodes) +
|
@@ -447,13 +515,13 @@ var Hogan = (function () {
|
|
447
515
|
}
|
448
516
|
|
449
517
|
function invertedSection(nodes, id, method) {
|
450
|
-
return 'if (!_.s(_.' + method + '("' + esc(id) + '",c,p,1),c,p,1,0,0)){' +
|
518
|
+
return 'if (!_.s(_.' + method + '("' + esc(id) + '",c,p,1),c,p,1,0,0,"")){' +
|
451
519
|
walk(nodes) +
|
452
520
|
'};';
|
453
521
|
}
|
454
522
|
|
455
|
-
function partial(
|
456
|
-
return 'b += _.rp("' + esc(
|
523
|
+
function partial(tok) {
|
524
|
+
return 'b += _.rp("' + esc(tok.n) + '",c,p,"' + (tok.indent || '') + '");';
|
457
525
|
}
|
458
526
|
|
459
527
|
function tripleStache(id, method) {
|
@@ -465,50 +533,44 @@ var Hogan = (function () {
|
|
465
533
|
}
|
466
534
|
|
467
535
|
function text(id) {
|
468
|
-
return 'b +=
|
536
|
+
return 'b += ' + id + ';';
|
469
537
|
}
|
470
538
|
|
471
|
-
|
472
|
-
|
539
|
+
Hogan.parse = function(tokens, options) {
|
540
|
+
options = options || {};
|
541
|
+
return buildTree(tokens, '', [], options.sectionTags || []);
|
542
|
+
},
|
473
543
|
|
474
|
-
|
475
|
-
options = options || {};
|
476
|
-
return buildTree(tokens, '', [], options.sectionTags || []);
|
477
|
-
},
|
544
|
+
Hogan.cache = {};
|
478
545
|
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
546
|
+
Hogan.compile = function(text, options) {
|
547
|
+
// options
|
548
|
+
//
|
549
|
+
// asString: false (default)
|
550
|
+
//
|
551
|
+
// sectionTags: [{o: '_foo', c: 'foo'}]
|
552
|
+
// An array of object with o and c fields that indicate names for custom
|
553
|
+
// section tags. The example above allows parsing of {{_foo}}{{/foo}}.
|
554
|
+
//
|
555
|
+
// delimiters: A string that overrides the default delimiters.
|
556
|
+
// Example: "<% %>"
|
557
|
+
//
|
558
|
+
options = options || {};
|
559
|
+
|
560
|
+
var key = text + '||' + !!options.asString;
|
561
|
+
|
562
|
+
var t = this.cache[key];
|
563
|
+
|
564
|
+
if (t) {
|
565
|
+
return t;
|
498
566
|
}
|
499
|
-
});
|
500
|
-
})();
|
501
|
-
|
502
|
-
// Export the hogan constructor for Node.js and CommonJS.
|
503
|
-
if (typeof module !== 'undefined' && module.exports) {
|
504
|
-
module.exports = Hogan;
|
505
|
-
module.exports.Template = HoganTemplate;
|
506
|
-
} else if (typeof exports !== 'undefined') {
|
507
|
-
exports.Hogan = Hogan;
|
508
|
-
exports.HoganTemplate = HoganTemplate;
|
509
|
-
}
|
510
567
|
|
511
|
-
|
568
|
+
t = this.generate(writeCode(this.parse(this.scan(text, options.delimiters), options)), text, options);
|
569
|
+
return this.cache[key] = t;
|
570
|
+
};
|
571
|
+
})(typeof exports !== 'undefined' ? exports : Hogan);
|
572
|
+
|
573
|
+
|
512
574
|
if (typeof define === 'function' && define.amd) {
|
513
|
-
|
575
|
+
define(Hogan);
|
514
576
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hogan_assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-08 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: execjs
|
16
|
-
requirement: &
|
16
|
+
requirement: &70264420834000 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.2.9
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70264420834000
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: tilt
|
27
|
-
requirement: &
|
27
|
+
requirement: &70264420833500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.3.3
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70264420833500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: sprockets
|
38
|
-
requirement: &
|
38
|
+
requirement: &70264420833020 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: 2.0.3
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70264420833020
|
47
47
|
description: Use compiled hogan.js (mustache) JavaScript templates with sprockets
|
48
48
|
and the Rails asset pipeline.
|
49
49
|
email:
|
@@ -68,7 +68,7 @@ files:
|
|
68
68
|
- test/hogan_assets/tilt_test.rb
|
69
69
|
- test/test_helper.rb
|
70
70
|
- vendor/assets/javascripts/hogan.js
|
71
|
-
homepage:
|
71
|
+
homepage: https://github.com/leshill/hogan_assets
|
72
72
|
licenses: []
|
73
73
|
post_install_message:
|
74
74
|
rdoc_options: []
|
@@ -96,3 +96,4 @@ summary: Use compiled hogan.js (mustache) JavaScript templates with sprockets an
|
|
96
96
|
test_files:
|
97
97
|
- test/hogan_assets/tilt_test.rb
|
98
98
|
- test/test_helper.rb
|
99
|
+
has_rdoc:
|