hogan_assets 1.5.1 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +3 -3
- data/README.md +1 -1
- data/lib/hogan_assets/version.rb +1 -1
- data/test/hogan_assets/tilt_test.rb +15 -10
- data/test/test_helper.rb +9 -0
- data/vendor/assets/javascripts/hogan.js +67 -35
- metadata +24 -37
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZTEyZTQxNDZlYWQ1MzA5NzAzZTZmZTAxOGMwZmI3M2VhZTU5MDBlZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
M2UzMmZiMGU1YTRhNzU4ZDNkNzAzMWI1NDYwMzRjYmFiMWZlZjNlZA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
M2FiNzhkM2U3MzcxODI5ZTI1YWYxMjM1YjAwODZhMDJjMjhmOGNmMzNkNzc3
|
10
|
+
Y2VjZmViN2U4OTM3MDU5NmUyNTAyMTVhNzU2NWExMGQxMTdiYzAyMTk4OWVl
|
11
|
+
YjlkZTY5OGY4NzRkMDdkZGQ2OGFjOTljYjg3MzQ3OTY5ZjFiOGY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NDA1ODgyYjBkMDQ2MjRmMWRkOGEyM2FlMmJiMDM0MGIxOGJjMTI1MjdjMWQ5
|
14
|
+
OTE3OGY4YzdlNjE1NGZjZDFlNzdjN2VhYzVlZjhmZTBkYjIzZmYzYzg1ZWU5
|
15
|
+
NTQwYmRjZmM3ZmZhYWJlODY5YmZlMTZmYzhmNzk0NGZmOTUwMDc=
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
hogan_assets (1.
|
4
|
+
hogan_assets (1.6.0)
|
5
5
|
execjs (>= 1.2.9)
|
6
6
|
sprockets (>= 2.0.3)
|
7
7
|
tilt (>= 1.3.3)
|
@@ -21,8 +21,8 @@ GEM
|
|
21
21
|
multi_json (~> 1.0)
|
22
22
|
haml (3.1.6)
|
23
23
|
hike (1.2.1)
|
24
|
-
multi_json (1.
|
25
|
-
rack (1.
|
24
|
+
multi_json (1.7.1)
|
25
|
+
rack (1.5.2)
|
26
26
|
slim (1.3.4)
|
27
27
|
temple (~> 0.5.5)
|
28
28
|
tilt (~> 1.3.3)
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
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
|
7
|
+
This gem contains **hogan.js 3.0.0** as of this [commit](https://github.com/twitter/hogan.js/commit/9a9eb1ab8fbbfedc9de73aeac4f9c1798d190a21)
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
data/lib/hogan_assets/version.rb
CHANGED
@@ -15,22 +15,24 @@ module HoganAssets
|
|
15
15
|
def test_render
|
16
16
|
scope = make_scope '/myapp/app/assets/javascripts', 'path/to/template.mustache'
|
17
17
|
|
18
|
-
|
18
|
+
source = "This is {{mustache}}"
|
19
|
+
template = HoganAssets::Tilt.new(scope.s_path) { source }
|
19
20
|
|
20
21
|
assert_equal <<-END_EXPECTED, template.render(scope, {})
|
21
22
|
this.HoganTemplates || (this.HoganTemplates = {});
|
22
|
-
this.HoganTemplates[
|
23
|
+
this.HoganTemplates["path/to/template"] = new Hogan.Template(#{compiled_template source}, "", Hogan, {});
|
23
24
|
END_EXPECTED
|
24
25
|
end
|
25
26
|
|
26
27
|
def test_hamstache_render
|
27
28
|
scope = make_scope '/myapp/app/assets/javascripts', 'path/to/template.hamstache'
|
28
29
|
|
29
|
-
|
30
|
+
source = "%p This is {{mustache}}"
|
31
|
+
template = HoganAssets::Tilt.new(scope.s_path) { source }
|
30
32
|
|
31
33
|
assert_equal <<-END_EXPECTED, template.render(scope, {})
|
32
34
|
this.HoganTemplates || (this.HoganTemplates = {});
|
33
|
-
this.HoganTemplates[
|
35
|
+
this.HoganTemplates["path/to/template"] = new Hogan.Template(#{compiled_template haml_compiled scope, source}, "", Hogan, {});
|
34
36
|
END_EXPECTED
|
35
37
|
end
|
36
38
|
|
@@ -41,11 +43,12 @@ module HoganAssets
|
|
41
43
|
|
42
44
|
scope = make_scope '/myapp/app/assets/javascripts', 'path/to/template.mustache'
|
43
45
|
|
44
|
-
|
46
|
+
source = "This is {{mustache}}"
|
47
|
+
template = HoganAssets::Tilt.new(scope.s_path) { source }
|
45
48
|
|
46
49
|
assert_equal <<-END_EXPECTED, template.render(scope, {})
|
47
50
|
this.HoganTemplates || (this.HoganTemplates = {});
|
48
|
-
this.HoganTemplates[
|
51
|
+
this.HoganTemplates["path/to/template"] = new Hogan.Template(#{compiled_template source}, "This is {{mustache}}", Hogan, {});
|
49
52
|
END_EXPECTED
|
50
53
|
end
|
51
54
|
|
@@ -56,11 +59,12 @@ module HoganAssets
|
|
56
59
|
|
57
60
|
scope = make_scope '/myapp/app/assets/javascripts', 'app/templates/template.mustache'
|
58
61
|
|
59
|
-
|
62
|
+
source = "This is {{mustache}}"
|
63
|
+
template = HoganAssets::Tilt.new(scope.s_path) { source }
|
60
64
|
|
61
65
|
assert_equal <<-END_EXPECTED, template.render(scope, {})
|
62
66
|
this.HoganTemplates || (this.HoganTemplates = {});
|
63
|
-
this.HoganTemplates[
|
67
|
+
this.HoganTemplates["template"] = new Hogan.Template(#{compiled_template source}, "", Hogan, {});
|
64
68
|
END_EXPECTED
|
65
69
|
end
|
66
70
|
|
@@ -71,11 +75,12 @@ module HoganAssets
|
|
71
75
|
|
72
76
|
scope = make_scope '/myapp/app/assets/javascripts', 'path/to/template.mustache'
|
73
77
|
|
74
|
-
|
78
|
+
source = "This is {{mustache}}"
|
79
|
+
template = HoganAssets::Tilt.new(scope.s_path) { source }
|
75
80
|
|
76
81
|
assert_equal <<-END_EXPECTED, template.render(scope, {})
|
77
82
|
this.JST || (this.JST = {});
|
78
|
-
this.JST[
|
83
|
+
this.JST["path/to/template"] = new Hogan.Template(#{compiled_template source}, "", Hogan, {});
|
79
84
|
END_EXPECTED
|
80
85
|
end
|
81
86
|
|
data/test/test_helper.rb
CHANGED
@@ -11,7 +11,16 @@ module HoganAssets::Config
|
|
11
11
|
|
12
12
|
end
|
13
13
|
end
|
14
|
+
|
14
15
|
module TestSupport
|
16
|
+
def compiled_template(text)
|
17
|
+
HoganAssets::Hogan.compile(text)
|
18
|
+
end
|
19
|
+
|
20
|
+
def haml_compiled(scope, text)
|
21
|
+
Haml::Engine.new(text, HoganAssets::Config.haml_options.merge(@options)).render(scope, {})
|
22
|
+
end
|
23
|
+
|
15
24
|
# Try to act like sprockets.
|
16
25
|
def make_scope(root, file)
|
17
26
|
Class.new do
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
/*!
|
2
2
|
* Copyright 2011 Twitter, Inc.
|
3
3
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
* you may not use this file except in compliance with the License.
|
@@ -22,7 +22,7 @@ var Hogan = {};
|
|
22
22
|
codeObj = codeObj || {};
|
23
23
|
this.r = codeObj.code || this.r;
|
24
24
|
this.c = compiler;
|
25
|
-
this.options = options;
|
25
|
+
this.options = options || {};
|
26
26
|
this.text = text || '';
|
27
27
|
this.partials = codeObj.partials || {};
|
28
28
|
this.subs = codeObj.subs || {};
|
@@ -73,14 +73,18 @@ var Hogan = {};
|
|
73
73
|
this.partials[symbol].base = template;
|
74
74
|
|
75
75
|
if (partial.subs) {
|
76
|
-
|
77
|
-
|
78
|
-
|
76
|
+
// Make sure we consider parent template now
|
77
|
+
if (this.activeSub === undefined) {
|
78
|
+
// Store parent template text in partials.stackText to perform substitutions in child templates correctly
|
79
|
+
partials.stackText = this.text;
|
80
|
+
}
|
81
|
+
template = createSpecializedPartial(template, partial.subs, partial.partials, partials.stackText || this.text);
|
82
|
+
}
|
79
83
|
this.partials[symbol].instance = template;
|
80
84
|
return template;
|
81
85
|
},
|
82
86
|
|
83
|
-
// tries to find a partial in the
|
87
|
+
// tries to find a partial in the current scope and render it
|
84
88
|
rp: function(symbol, context, partials, indent) {
|
85
89
|
var partial = this.ep(symbol, partials);
|
86
90
|
if (!partial) {
|
@@ -118,7 +122,7 @@ var Hogan = {};
|
|
118
122
|
val = this.ms(val, ctx, partials, inverted, start, end, tags);
|
119
123
|
}
|
120
124
|
|
121
|
-
pass =
|
125
|
+
pass = !!val;
|
122
126
|
|
123
127
|
if (!inverted && pass && ctx) {
|
124
128
|
ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]);
|
@@ -129,20 +133,23 @@ var Hogan = {};
|
|
129
133
|
|
130
134
|
// find values with dotted names
|
131
135
|
d: function(key, ctx, partials, returnFound) {
|
132
|
-
var
|
136
|
+
var found,
|
137
|
+
names = key.split('.'),
|
133
138
|
val = this.f(names[0], ctx, partials, returnFound),
|
139
|
+
doModelGet = this.options.modelGet,
|
134
140
|
cx = null;
|
135
141
|
|
136
142
|
if (key === '.' && isArray(ctx[ctx.length - 2])) {
|
137
|
-
|
138
|
-
}
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
143
|
+
val = ctx[ctx.length - 1];
|
144
|
+
} else {
|
145
|
+
for (var i = 1; i < names.length; i++) {
|
146
|
+
found = findInScope(names[i], val, doModelGet);
|
147
|
+
if (found != null) {
|
148
|
+
cx = val;
|
149
|
+
val = found;
|
150
|
+
} else {
|
151
|
+
val = '';
|
152
|
+
}
|
146
153
|
}
|
147
154
|
}
|
148
155
|
|
@@ -163,12 +170,13 @@ var Hogan = {};
|
|
163
170
|
f: function(key, ctx, partials, returnFound) {
|
164
171
|
var val = false,
|
165
172
|
v = null,
|
166
|
-
found = false
|
173
|
+
found = false,
|
174
|
+
doModelGet = this.options.modelGet;
|
167
175
|
|
168
176
|
for (var i = ctx.length - 1; i >= 0; i--) {
|
169
177
|
v = ctx[i];
|
170
|
-
|
171
|
-
|
178
|
+
val = findInScope(key, v, doModelGet);
|
179
|
+
if (val != null) {
|
172
180
|
found = true;
|
173
181
|
break;
|
174
182
|
}
|
@@ -217,14 +225,16 @@ var Hogan = {};
|
|
217
225
|
|
218
226
|
// method replace section
|
219
227
|
ms: function(func, ctx, partials, inverted, start, end, tags) {
|
220
|
-
var
|
228
|
+
var textSource,
|
229
|
+
cx = ctx[ctx.length - 1],
|
221
230
|
result = func.call(cx);
|
222
231
|
|
223
232
|
if (typeof result == 'function') {
|
224
233
|
if (inverted) {
|
225
234
|
return true;
|
226
235
|
} else {
|
227
|
-
|
236
|
+
textSource = (this.activeSub && this.subsText[this.activeSub]) ? this.subsText[this.activeSub] : this.text;
|
237
|
+
return this.ls(result, cx, partials, textSource.substring(start, end), tags);
|
228
238
|
}
|
229
239
|
}
|
230
240
|
|
@@ -246,13 +256,33 @@ var Hogan = {};
|
|
246
256
|
sub: function(name, context, partials, indent) {
|
247
257
|
var f = this.subs[name];
|
248
258
|
if (f) {
|
259
|
+
this.activeSub = name;
|
249
260
|
f(context, partials, this, indent);
|
261
|
+
this.activeSub = false;
|
250
262
|
}
|
251
263
|
}
|
252
264
|
|
253
265
|
};
|
254
266
|
|
255
|
-
|
267
|
+
//Find a key in an object
|
268
|
+
function findInScope(key, scope, doModelGet) {
|
269
|
+
var val, checkVal;
|
270
|
+
|
271
|
+
if (scope && typeof scope == 'object') {
|
272
|
+
|
273
|
+
if (scope[key] != null) {
|
274
|
+
val = scope[key];
|
275
|
+
|
276
|
+
// try lookup with get for backbone or similar model data
|
277
|
+
} else if (doModelGet && scope.get && typeof scope.get == 'function') {
|
278
|
+
val = scope.get(key);
|
279
|
+
}
|
280
|
+
}
|
281
|
+
|
282
|
+
return val;
|
283
|
+
}
|
284
|
+
|
285
|
+
function createSpecializedPartial(instance, subs, partials, childText) {
|
256
286
|
function PartialTemplate() {};
|
257
287
|
PartialTemplate.prototype = instance;
|
258
288
|
function Substitutions() {};
|
@@ -260,10 +290,12 @@ var Hogan = {};
|
|
260
290
|
var key;
|
261
291
|
var partial = new PartialTemplate();
|
262
292
|
partial.subs = new Substitutions();
|
293
|
+
partial.subsText = {}; //hehe. substext.
|
263
294
|
partial.ib();
|
264
295
|
|
265
296
|
for (key in subs) {
|
266
297
|
partial.subs[key] = subs[key];
|
298
|
+
partial.subsText[key] = childText;
|
267
299
|
}
|
268
300
|
|
269
301
|
for (key in partials) {
|
@@ -276,9 +308,9 @@ var Hogan = {};
|
|
276
308
|
var rAmp = /&/g,
|
277
309
|
rLt = /</g,
|
278
310
|
rGt = />/g,
|
279
|
-
rApos
|
311
|
+
rApos = /\'/g,
|
280
312
|
rQuot = /\"/g,
|
281
|
-
hChars
|
313
|
+
hChars = /[&<>\"\']/;
|
282
314
|
|
283
315
|
function coerceToString(val) {
|
284
316
|
return String((val === null || val === undefined) ? '' : val);
|
@@ -288,10 +320,10 @@ var Hogan = {};
|
|
288
320
|
str = coerceToString(str);
|
289
321
|
return hChars.test(str) ?
|
290
322
|
str
|
291
|
-
.replace(rAmp,'&')
|
292
|
-
.replace(rLt,'<')
|
293
|
-
.replace(rGt,'>')
|
294
|
-
.replace(rApos,''')
|
323
|
+
.replace(rAmp, '&')
|
324
|
+
.replace(rLt, '<')
|
325
|
+
.replace(rGt, '>')
|
326
|
+
.replace(rApos, ''')
|
295
327
|
.replace(rQuot, '"') :
|
296
328
|
str;
|
297
329
|
}
|
@@ -385,7 +417,7 @@ var Hogan = {};
|
|
385
417
|
).split(' ');
|
386
418
|
|
387
419
|
otag = delimiters[0];
|
388
|
-
ctag = delimiters[1];
|
420
|
+
ctag = delimiters[delimiters.length - 1];
|
389
421
|
|
390
422
|
return closeIndex + close.length - 1;
|
391
423
|
}
|
@@ -671,7 +703,7 @@ var Hogan = {};
|
|
671
703
|
return 't.b(' + s + ');';
|
672
704
|
}
|
673
705
|
|
674
|
-
Hogan.walk = function
|
706
|
+
Hogan.walk = function(nodelist, context) {
|
675
707
|
var func;
|
676
708
|
for (var i = 0, l = nodelist.length; i < l; i++) {
|
677
709
|
func = Hogan.codegen[nodelist[i].tag];
|
@@ -683,13 +715,13 @@ var Hogan = {};
|
|
683
715
|
Hogan.parse = function(tokens, text, options) {
|
684
716
|
options = options || {};
|
685
717
|
return buildTree(tokens, '', [], options.sectionTags || []);
|
686
|
-
}
|
718
|
+
}
|
687
719
|
|
688
720
|
Hogan.cache = {};
|
689
721
|
|
690
722
|
Hogan.cacheKey = function(text, options) {
|
691
|
-
return [text, !!options.asString, !!options.disableLambda].join('||');
|
692
|
-
}
|
723
|
+
return [text, !!options.asString, !!options.disableLambda, options.delimiters, !!options.modelGet].join('||');
|
724
|
+
}
|
693
725
|
|
694
726
|
Hogan.compile = function(text, options) {
|
695
727
|
options = options || {};
|
@@ -702,6 +734,6 @@ var Hogan = {};
|
|
702
734
|
|
703
735
|
template = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options);
|
704
736
|
return this.cache[key] = template;
|
705
|
-
}
|
737
|
+
}
|
706
738
|
})(typeof exports !== 'undefined' ? exports : Hogan);
|
707
739
|
|
metadata
CHANGED
@@ -1,112 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hogan_assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 1.5.1
|
4
|
+
version: 1.6.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Les Hill
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-03-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: execjs
|
16
|
-
version_requirements: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 1.2.9
|
22
15
|
requirement: !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
16
|
requirements:
|
25
17
|
- - ! '>='
|
26
18
|
- !ruby/object:Gem::Version
|
27
19
|
version: 1.2.9
|
28
20
|
type: :runtime
|
29
21
|
prerelease: false
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: tilt
|
32
22
|
version_requirements: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
23
|
requirements:
|
35
24
|
- - ! '>='
|
36
25
|
- !ruby/object:Gem::Version
|
37
|
-
version: 1.
|
26
|
+
version: 1.2.9
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: tilt
|
38
29
|
requirement: !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
30
|
requirements:
|
41
31
|
- - ! '>='
|
42
32
|
- !ruby/object:Gem::Version
|
43
33
|
version: 1.3.3
|
44
34
|
type: :runtime
|
45
35
|
prerelease: false
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: sprockets
|
48
36
|
version_requirements: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
37
|
requirements:
|
51
38
|
- - ! '>='
|
52
39
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
40
|
+
version: 1.3.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sprockets
|
54
43
|
requirement: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
44
|
requirements:
|
57
45
|
- - ! '>='
|
58
46
|
- !ruby/object:Gem::Version
|
59
47
|
version: 2.0.3
|
60
48
|
type: :runtime
|
61
49
|
prerelease: false
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: debugger
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
51
|
requirements:
|
67
52
|
- - ! '>='
|
68
53
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
54
|
+
version: 2.0.3
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: debugger
|
70
57
|
requirement: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
58
|
requirements:
|
73
59
|
- - ! '>='
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: '0'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: haml
|
80
64
|
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
65
|
requirements:
|
83
66
|
- - ! '>='
|
84
67
|
- !ruby/object:Gem::Version
|
85
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: haml
|
86
71
|
requirement: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
72
|
requirements:
|
89
73
|
- - ! '>='
|
90
74
|
- !ruby/object:Gem::Version
|
91
75
|
version: '0'
|
92
76
|
type: :development
|
93
77
|
prerelease: false
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: slim
|
96
78
|
version_requirements: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
79
|
requirements:
|
99
80
|
- - ! '>='
|
100
81
|
- !ruby/object:Gem::Version
|
101
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: slim
|
102
85
|
requirement: !ruby/object:Gem::Requirement
|
103
|
-
none: false
|
104
86
|
requirements:
|
105
87
|
- - ! '>='
|
106
88
|
- !ruby/object:Gem::Version
|
107
89
|
version: '0'
|
108
90
|
type: :development
|
109
91
|
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
110
97
|
description: Use compiled hogan.js (mustache) JavaScript templates with sprockets
|
111
98
|
and the Rails asset pipeline.
|
112
99
|
email:
|
@@ -137,27 +124,26 @@ files:
|
|
137
124
|
- vendor/assets/javascripts/hogan.js
|
138
125
|
homepage: https://github.com/leshill/hogan_assets
|
139
126
|
licenses: []
|
127
|
+
metadata: {}
|
140
128
|
post_install_message:
|
141
129
|
rdoc_options: []
|
142
130
|
require_paths:
|
143
131
|
- lib
|
144
132
|
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
133
|
requirements:
|
147
134
|
- - ! '>='
|
148
135
|
- !ruby/object:Gem::Version
|
149
136
|
version: '0'
|
150
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
138
|
requirements:
|
153
139
|
- - ! '>='
|
154
140
|
- !ruby/object:Gem::Version
|
155
141
|
version: '0'
|
156
142
|
requirements: []
|
157
143
|
rubyforge_project:
|
158
|
-
rubygems_version:
|
144
|
+
rubygems_version: 2.0.3
|
159
145
|
signing_key:
|
160
|
-
specification_version:
|
146
|
+
specification_version: 4
|
161
147
|
summary: Use compiled hogan.js (mustache) JavaScript templates with sprockets and
|
162
148
|
the Rails asset pipeline.
|
163
149
|
test_files:
|
@@ -165,3 +151,4 @@ test_files:
|
|
165
151
|
- test/hogan_assets/config_test.rb
|
166
152
|
- test/hogan_assets/tilt_test.rb
|
167
153
|
- test/test_helper.rb
|
154
|
+
has_rdoc:
|