hogan_assets 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|