handlebars_assets 0.8.1 → 0.23.9
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.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/.ruby-gemset +1 -0
- data/Appraisals +15 -0
- data/CHANGELOG.md +159 -1
- data/README.md +182 -72
- data/Rakefile +5 -1
- data/gemfiles/rails_4_1.gemfile +8 -0
- data/gemfiles/rails_4_2.gemfile +8 -0
- data/gemfiles/rails_5.gemfile +8 -0
- data/gemfiles/sprockets_2.gemfile +7 -0
- data/gemfiles/sprockets_3.gemfile +7 -0
- data/gemfiles/tilt_1.gemfile +7 -0
- data/gemfiles/tilt_2.gemfile +7 -0
- data/handlebars_assets.gemspec +14 -7
- data/lib/handlebars_assets/config.rb +92 -4
- data/lib/handlebars_assets/engine.rb +8 -5
- data/lib/handlebars_assets/handlebars.rb +27 -3
- data/lib/handlebars_assets/handlebars_template.rb +267 -0
- data/lib/handlebars_assets/version.rb +1 -1
- data/lib/handlebars_assets.rb +48 -11
- data/test/edge/handlebars.js +3 -1913
- data/test/handlebars_assets/compiling_test.rb +30 -0
- data/test/handlebars_assets/hamlbars_test.rb +3 -3
- data/test/handlebars_assets/handlebars_processor_test.rb +17 -0
- data/test/handlebars_assets/shared/adapter_tests.rb +199 -0
- data/test/handlebars_assets/slimbars_test.rb +28 -0
- data/test/handlebars_assets/tilt_handlebars_test.rb +6 -132
- data/test/patch/patch.js +10 -0
- data/test/test_helper.rb +18 -14
- data/vendor/assets/javascripts/handlebars.js +5189 -1918
- data/vendor/assets/javascripts/handlebars.runtime.js +1779 -235
- metadata +101 -55
- data/.rvmrc +0 -1
- data/Gemfile.lock +0 -32
- data/lib/handlebars_assets/tilt_handlebars.rb +0 -105
- data/test/handlebars_assets/tilt_edge_test.rb +0 -26
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module HandlebarsAssets
|
4
|
+
class CompilingTest < ::MiniTest::Test
|
5
|
+
|
6
|
+
def teardown
|
7
|
+
HandlebarsAssets::Config.reset!
|
8
|
+
HandlebarsAssets::Handlebars.reset!
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_custom_handlebars
|
12
|
+
source = "This is {{handlebars}}"
|
13
|
+
|
14
|
+
HandlebarsAssets::Config.compiler_path = File.expand_path '../../edge', __FILE__
|
15
|
+
|
16
|
+
compiled = Handlebars.precompile(source, HandlebarsAssets::Config.options)
|
17
|
+
assert_match /PRECOMPILE CALLED/, compiled
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_patching_handlebars
|
21
|
+
source = "This is {{nested.handlebars}}"
|
22
|
+
|
23
|
+
HandlebarsAssets::Config.patch_path = File.expand_path '../../patch', __FILE__
|
24
|
+
HandlebarsAssets::Config.patch_files = ['patch.js']
|
25
|
+
|
26
|
+
compiled = Handlebars.precompile(source, HandlebarsAssets::Config.options)
|
27
|
+
assert_match /CALLED PATCH/, compiled
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
module HandlebarsAssets
|
4
|
-
class HamlbarsTest <
|
4
|
+
class HamlbarsTest < ::Minitest::Test
|
5
5
|
include SprocketsScope
|
6
6
|
include CompilerSupport
|
7
7
|
|
8
8
|
def compile_haml(source)
|
9
|
-
Haml::Engine.new(source, HandlebarsAssets::Config.haml_options).render
|
9
|
+
(Haml::Engine.new(source, HandlebarsAssets::Config.haml_options).render).chomp
|
10
10
|
end
|
11
11
|
|
12
12
|
def teardown
|
@@ -20,7 +20,7 @@ module HandlebarsAssets
|
|
20
20
|
scope = make_scope root, file
|
21
21
|
source = "%p This is {{handlebars}}"
|
22
22
|
|
23
|
-
template = HandlebarsAssets::
|
23
|
+
template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
|
24
24
|
|
25
25
|
assert_equal hbs_compiled('test_render', compile_haml(source)), template.render(scope, {})
|
26
26
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require_relative 'shared/adapter_tests'
|
3
|
+
|
4
|
+
module HandlebarsAssets
|
5
|
+
class HandlebarsProcessorTest < Minitest::Test
|
6
|
+
include AdapterTests
|
7
|
+
|
8
|
+
def teardown
|
9
|
+
HandlebarsAssets::Config.reset!
|
10
|
+
HandlebarsAssets::Handlebars.reset!
|
11
|
+
end
|
12
|
+
|
13
|
+
def render_it(scope, source)
|
14
|
+
HandlebarsAssets::HandlebarsProcessor.call(filename: scope.pathname.to_s, data: source)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,199 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'haml'
|
3
|
+
require 'slim'
|
4
|
+
|
5
|
+
module AdapterTests
|
6
|
+
include CompilerSupport
|
7
|
+
include SprocketsScope
|
8
|
+
|
9
|
+
def compile_haml(source)
|
10
|
+
::Haml::Engine.new(source, HandlebarsAssets::Config.haml_options).render
|
11
|
+
end
|
12
|
+
|
13
|
+
def compile_slim(source)
|
14
|
+
::Slim::Template.new(HandlebarsAssets::Config.slim_options) { source }.render
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_render
|
18
|
+
root = '/myapp/app/assets/templates'
|
19
|
+
file = 'test_render.hbs'
|
20
|
+
scope = make_scope root, file
|
21
|
+
source = "This is {{handlebars}}"
|
22
|
+
|
23
|
+
assert_equal hbs_compiled('test_render', source), render_it(scope, source)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Sprockets does not add nested root paths (i.e.
|
27
|
+
# app/assets/javascripts/templates is rooted at app/assets/javascripts)
|
28
|
+
def test_template_misnaming
|
29
|
+
root = '/myapp/app/assets/javascripts'
|
30
|
+
file = 'templates/test_template_misnaming.hbs'
|
31
|
+
scope = make_scope root, file
|
32
|
+
source = "This is {{handlebars}}"
|
33
|
+
|
34
|
+
assert_equal hbs_compiled('test_template_misnaming', source), render_it(scope, source)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_path_prefix
|
38
|
+
root = '/myapp/app/assets/javascripts'
|
39
|
+
file = 'app/templates/test_path_prefix.hbs'
|
40
|
+
scope = make_scope root, file
|
41
|
+
source = "This is {{handlebars}}"
|
42
|
+
|
43
|
+
HandlebarsAssets::Config.path_prefix = 'app/templates'
|
44
|
+
|
45
|
+
assert_equal hbs_compiled('test_path_prefix', source), render_it(scope, source)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_underscore_partials
|
49
|
+
root = '/myapp/app/assets/javascripts'
|
50
|
+
file1 = 'app/templates/_test_underscore.hbs'
|
51
|
+
scope1 = make_scope root, file1
|
52
|
+
file2 = 'app/templates/some/thing/_test_underscore.hbs'
|
53
|
+
scope2 = make_scope root, file2
|
54
|
+
source = "This is {{handlebars}}"
|
55
|
+
|
56
|
+
HandlebarsAssets::Config.path_prefix = 'app/templates'
|
57
|
+
|
58
|
+
assert_equal hbs_compiled_partial('_test_underscore', source), render_it(scope1, source)
|
59
|
+
|
60
|
+
assert_equal hbs_compiled_partial('some/thing/_test_underscore', source), render_it(scope2, source)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_chomped_underscore_partials
|
64
|
+
assert_equal HandlebarsAssets::Config.chomp_underscore_for_partials?, false
|
65
|
+
|
66
|
+
HandlebarsAssets::Config.chomp_underscore_for_partials = true
|
67
|
+
assert_equal HandlebarsAssets::Config.chomp_underscore_for_partials?, true
|
68
|
+
|
69
|
+
root = '/myapp/app/assets/javascripts'
|
70
|
+
file1 = 'app/templates/_test_underscore.hbs'
|
71
|
+
scope1 = make_scope root, file1
|
72
|
+
file2 = 'app/templates/some/thing/_test_underscore.hbs'
|
73
|
+
scope2 = make_scope root, file2
|
74
|
+
source = "This is {{handlebars}}"
|
75
|
+
|
76
|
+
HandlebarsAssets::Config.path_prefix = 'app/templates'
|
77
|
+
|
78
|
+
assert_equal hbs_compiled_partial('test_underscore', source), render_it(scope1, source)
|
79
|
+
|
80
|
+
assert_equal hbs_compiled_partial('some/thing/test_underscore', source), render_it(scope2, source)
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_without_known_helpers_opt
|
85
|
+
root = '/myapp/app/assets/templates'
|
86
|
+
file = 'test_without_known.hbs'
|
87
|
+
scope = make_scope root, file
|
88
|
+
source = "{{#with author}}By {{first_name}} {{last_name}}{{/with}}"
|
89
|
+
|
90
|
+
assert_equal hbs_compiled('test_without_known', source), render_it(scope, source)
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_known_helpers_opt
|
94
|
+
root = '/myapp/app/assets/templates'
|
95
|
+
file = 'test_known.hbs'
|
96
|
+
scope = make_scope root, file
|
97
|
+
source = "{{#with author}}By {{first_name}} {{last_name}}{{/with}}"
|
98
|
+
|
99
|
+
HandlebarsAssets::Config.known_helpers_only = true
|
100
|
+
|
101
|
+
assert_equal hbs_compiled('test_known', source), render_it(scope, source)
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_with_custom_helpers
|
105
|
+
root = '/myapp/app/assets/templates'
|
106
|
+
file = 'test_custom_helper.hbs'
|
107
|
+
scope = make_scope root, file
|
108
|
+
source = "{{#custom author}}By {{first_name}} {{last_name}}{{/custom}}"
|
109
|
+
|
110
|
+
assert_equal hbs_compiled('test_custom_helper', source), render_it(scope, source)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_with_custom_known_helpers
|
114
|
+
root = '/myapp/app/assets/templates'
|
115
|
+
file = 'test_custom_known_helper.hbs'
|
116
|
+
scope = make_scope root, file
|
117
|
+
source = "{{#custom author}}By {{first_name}} {{last_name}}{{/custom}}"
|
118
|
+
|
119
|
+
HandlebarsAssets::Config.known_helpers_only = true
|
120
|
+
HandlebarsAssets::Config.known_helpers = %w(custom)
|
121
|
+
|
122
|
+
assert_equal hbs_compiled('test_custom_known_helper', source), render_it(scope, source)
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_template_namespace
|
126
|
+
root = '/myapp/app/assets/javascripts/templates'
|
127
|
+
file = 'test_template_namespace.hbs'
|
128
|
+
scope = make_scope root, file
|
129
|
+
source = "This is {{handlebars}}"
|
130
|
+
|
131
|
+
HandlebarsAssets::Config.template_namespace = 'JST'
|
132
|
+
|
133
|
+
assert_equal hbs_compiled('test_template_namespace', source), render_it(scope, source)
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_ember_render
|
137
|
+
root = '/myapp/app/assets/templates'
|
138
|
+
file = 'test_render.hbs'
|
139
|
+
scope = make_scope root, file
|
140
|
+
source = "This is {{handlebars}}"
|
141
|
+
|
142
|
+
HandlebarsAssets::Config.ember = true
|
143
|
+
HandlebarsAssets::Config.multiple_frameworks = false
|
144
|
+
|
145
|
+
expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("This is {{handlebars}}");};
|
146
|
+
assert_equal expected_compiled, render_it(scope, source)
|
147
|
+
end
|
148
|
+
|
149
|
+
def test_multiple_frameworks_with_ember_render
|
150
|
+
root = '/myapp/app/assets/templates'
|
151
|
+
non_ember = 'test_render.hbs'
|
152
|
+
non_ember_but_with_ember = 'test_member.hbs'
|
153
|
+
ember_ext_no_hbs = 'test_render.ember'
|
154
|
+
ember_ext = 'test_render.ember.hbs'
|
155
|
+
ember_with_haml = 'test_render.ember.hamlbars'
|
156
|
+
ember_with_slim = 'test_render.ember.slimbars'
|
157
|
+
ember_ext_with_erb = 'test_render.ember.hbs.erb'
|
158
|
+
|
159
|
+
HandlebarsAssets::Config.ember = true
|
160
|
+
HandlebarsAssets::Config.multiple_frameworks = true
|
161
|
+
|
162
|
+
# File without ember extension should compile to default namespace
|
163
|
+
scope = make_scope root, non_ember
|
164
|
+
source = "This is {{handlebars}}"
|
165
|
+
assert_equal hbs_compiled('test_render', source), render_it(scope, source)
|
166
|
+
|
167
|
+
# File without ember extension but with ember in it should compile to default namespace
|
168
|
+
scope = make_scope root, non_ember_but_with_ember
|
169
|
+
source = "This is {{handlebars}}"
|
170
|
+
assert_equal hbs_compiled('test_member', source), render_it(scope, source)
|
171
|
+
|
172
|
+
# File with ember extension should compile to ember specific namespace
|
173
|
+
expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("This is {{handlebars}}");};
|
174
|
+
scope = make_scope root, ember_ext_no_hbs
|
175
|
+
assert_equal expected_compiled, render_it(scope, source)
|
176
|
+
|
177
|
+
# File with ember and erb extension should compile to ember specific namespace
|
178
|
+
expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("This is {{handlebars}}");};
|
179
|
+
scope = make_scope root, ember_ext_with_erb
|
180
|
+
assert_equal expected_compiled, render_it(scope, source)
|
181
|
+
|
182
|
+
# File with ember.hbs extension should compile to ember specific namespace
|
183
|
+
expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("This is {{handlebars}}");};
|
184
|
+
scope = make_scope root, ember_ext
|
185
|
+
assert_equal expected_compiled, render_it(scope, source)
|
186
|
+
|
187
|
+
# File with ember.hamlbars extension should compile to ember specific namespace
|
188
|
+
expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("<p>This is {{handlebars}}</p>");};
|
189
|
+
scope = make_scope root, ember_with_haml
|
190
|
+
source = "%p This is {{handlebars}}"
|
191
|
+
assert_equal expected_compiled, render_it(scope, source)
|
192
|
+
|
193
|
+
# File with ember.slimbars extension should compile to ember specific namespace
|
194
|
+
expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("<p>This is {{handlebars}}</p>");};
|
195
|
+
source = "p This is {{handlebars}}"
|
196
|
+
scope = make_scope root, ember_with_slim
|
197
|
+
assert_equal expected_compiled, render_it(scope, source)
|
198
|
+
end
|
199
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module HandlebarsAssets
|
4
|
+
class SlimbarsTest < ::Minitest::Test
|
5
|
+
include SprocketsScope
|
6
|
+
include CompilerSupport
|
7
|
+
|
8
|
+
def compile_slim(source)
|
9
|
+
Slim::Template.new(HandlebarsAssets::Config.slim_options) { source }.render
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
HandlebarsAssets::Config.reset!
|
14
|
+
HandlebarsAssets::Handlebars.reset!
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_render_slim
|
18
|
+
root = '/myapp/app/assets/templates'
|
19
|
+
file = 'test_render.slimbars'
|
20
|
+
scope = make_scope root, file
|
21
|
+
source = "p This is {{handlebars}}"
|
22
|
+
|
23
|
+
template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
|
24
|
+
|
25
|
+
assert_equal hbs_compiled('test_render', compile_slim(source)), template.render(scope, {})
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,144 +1,18 @@
|
|
1
1
|
require 'test_helper'
|
2
|
+
require_relative 'shared/adapter_tests'
|
2
3
|
|
3
4
|
module HandlebarsAssets
|
4
|
-
class
|
5
|
-
include
|
6
|
-
include SprocketsScope
|
5
|
+
class HandlebarsTemplateTest < Minitest::Test
|
6
|
+
include AdapterTests
|
7
7
|
|
8
8
|
def teardown
|
9
9
|
HandlebarsAssets::Config.reset!
|
10
10
|
HandlebarsAssets::Handlebars.reset!
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
scope = make_scope root, file
|
17
|
-
source = "This is {{handlebars}}"
|
18
|
-
|
19
|
-
template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
|
20
|
-
|
21
|
-
assert_equal hbs_compiled('test_render', source), template.render(scope, {})
|
22
|
-
end
|
23
|
-
|
24
|
-
# Sprockets does not add nested root paths (i.e.
|
25
|
-
# app/assets/javascripts/templates is rooted at app/assets/javascripts)
|
26
|
-
def test_template_misnaming
|
27
|
-
root = '/myapp/app/assets/javascripts'
|
28
|
-
file = 'templates/test_template_misnaming.hbs'
|
29
|
-
scope = make_scope root, file
|
30
|
-
source = "This is {{handlebars}}"
|
31
|
-
|
32
|
-
template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
|
33
|
-
|
34
|
-
assert_equal hbs_compiled('test_template_misnaming', source), template.render(scope, {})
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_path_prefix
|
38
|
-
root = '/myapp/app/assets/javascripts'
|
39
|
-
file = 'app/templates/test_path_prefix.hbs'
|
40
|
-
scope = make_scope root, file
|
41
|
-
source = "This is {{handlebars}}"
|
42
|
-
|
43
|
-
HandlebarsAssets::Config.path_prefix = 'app/templates'
|
44
|
-
|
45
|
-
template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
|
46
|
-
|
47
|
-
assert_equal hbs_compiled('test_path_prefix', source), template.render(scope, {})
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_underscore_partials
|
51
|
-
root = '/myapp/app/assets/javascripts'
|
52
|
-
file1 = 'app/templates/_test_underscore.hbs'
|
53
|
-
scope1 = make_scope root, file1
|
54
|
-
file2 = 'app/templates/some/thing/_test_underscore.hbs'
|
55
|
-
scope2 = make_scope root, file2
|
56
|
-
source = "This is {{handlebars}}"
|
57
|
-
|
58
|
-
HandlebarsAssets::Config.path_prefix = 'app/templates'
|
59
|
-
|
60
|
-
template1 = HandlebarsAssets::TiltHandlebars.new(scope1.pathname.to_s) { source }
|
61
|
-
|
62
|
-
assert_equal hbs_compiled_partial('_test_underscore', source), template1.render(scope1, {})
|
63
|
-
|
64
|
-
template2 = HandlebarsAssets::TiltHandlebars.new(scope2.pathname.to_s) { source }
|
65
|
-
|
66
|
-
assert_equal hbs_compiled_partial('_some_thing_test_underscore', source), template2.render(scope2, {})
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_without_known_helpers_opt
|
70
|
-
root = '/myapp/app/assets/templates'
|
71
|
-
file = 'test_without_known.hbs'
|
72
|
-
scope = make_scope root, file
|
73
|
-
source = "{{#with author}}By {{first_name}} {{last_name}}{{/with}}"
|
74
|
-
|
75
|
-
template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
|
76
|
-
|
77
|
-
assert_equal hbs_compiled('test_without_known', source), template.render(scope, {})
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_known_helpers_opt
|
81
|
-
root = '/myapp/app/assets/templates'
|
82
|
-
file = 'test_known.hbs'
|
83
|
-
scope = make_scope root, file
|
84
|
-
source = "{{#with author}}By {{first_name}} {{last_name}}{{/with}}"
|
85
|
-
|
86
|
-
HandlebarsAssets::Config.known_helpers_only = true
|
87
|
-
|
88
|
-
template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
|
89
|
-
|
90
|
-
assert_equal hbs_compiled('test_known', source), template.render(scope, {})
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_with_custom_helpers
|
94
|
-
root = '/myapp/app/assets/templates'
|
95
|
-
file = 'test_custom_helper.hbs'
|
96
|
-
scope = make_scope root, file
|
97
|
-
source = "{{#custom author}}By {{first_name}} {{last_name}}{{/custom}}"
|
98
|
-
|
99
|
-
template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
|
100
|
-
|
101
|
-
assert_equal hbs_compiled('test_custom_helper', source), template.render(scope, {})
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_with_custom_known_helpers
|
105
|
-
root = '/myapp/app/assets/templates'
|
106
|
-
file = 'test_custom_known_helper.hbs'
|
107
|
-
scope = make_scope root, file
|
108
|
-
source = "{{#custom author}}By {{first_name}} {{last_name}}{{/custom}}"
|
109
|
-
|
110
|
-
HandlebarsAssets::Config.known_helpers_only = true
|
111
|
-
HandlebarsAssets::Config.known_helpers = %w(custom)
|
112
|
-
|
113
|
-
template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
|
114
|
-
|
115
|
-
assert_equal hbs_compiled('test_custom_known_helper', source), template.render(scope, {})
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_template_namespace
|
119
|
-
root = '/myapp/app/assets/javascripts'
|
120
|
-
file = 'test_template_namespace.hbs'
|
121
|
-
scope = make_scope root, file
|
122
|
-
source = "This is {{handlebars}}"
|
123
|
-
|
124
|
-
HandlebarsAssets::Config.template_namespace = 'JST'
|
125
|
-
|
126
|
-
template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
|
127
|
-
|
128
|
-
assert_equal hbs_compiled('test_template_namespace', source), template.render(scope, {})
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_ember_render
|
132
|
-
root = '/myapp/app/assets/templates'
|
133
|
-
file = 'test_render.hbs'
|
134
|
-
scope = make_scope root, file
|
135
|
-
source = "This is {{handlebars}}"
|
136
|
-
|
137
|
-
HandlebarsAssets::Config.ember = true
|
138
|
-
template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
|
139
|
-
|
140
|
-
expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("This is {{handlebars}}");};
|
141
|
-
assert_equal expected_compiled, template.render(scope, {})
|
13
|
+
def render_it(scope, source)
|
14
|
+
template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
|
15
|
+
template.render(scope, {})
|
142
16
|
end
|
143
17
|
end
|
144
18
|
end
|
data/test/patch/patch.js
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
var originalLookup = Handlebars.JavaScriptCompiler.prototype.nameLookup;
|
2
|
+
|
3
|
+
Handlebars.JavaScriptCompiler.prototype.nameLookup = function(parent, name, type) {
|
4
|
+
if (type === 'context') {
|
5
|
+
return '"CALLED PATCH"';
|
6
|
+
}
|
7
|
+
else {
|
8
|
+
return originalLookup.call(this, parent, name, type);
|
9
|
+
}
|
10
|
+
};
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'handlebars_assets'
|
2
2
|
require 'handlebars_assets/config'
|
3
|
-
require 'handlebars_assets/
|
3
|
+
require 'handlebars_assets/handlebars_template'
|
4
4
|
require 'handlebars_assets/handlebars'
|
5
5
|
|
6
|
-
require '
|
6
|
+
require 'minitest/autorun'
|
7
7
|
|
8
8
|
module SprocketsScope
|
9
9
|
# Try to act like sprockets.
|
@@ -23,29 +23,29 @@ module CompilerSupport
|
|
23
23
|
|
24
24
|
def compile_hbs(source)
|
25
25
|
compiler_src = Pathname(HandlebarsAssets::Config.compiler_path).join(HandlebarsAssets::Config.compiler).read
|
26
|
-
ExecJS.compile(compiler_src).call('Handlebars.precompile', source, HandlebarsAssets::Config.options)
|
26
|
+
ExecJS.compile("var window = {}; " + compiler_src).call('Handlebars.precompile', source, HandlebarsAssets::Config.options)
|
27
27
|
end
|
28
28
|
|
29
29
|
def hbs_compiled(template_name, source)
|
30
|
-
compiled_hbs = compile_hbs(source)
|
30
|
+
compiled_hbs = compile_hbs(source).strip
|
31
31
|
template_namespace = HandlebarsAssets::Config.template_namespace
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
33
|
+
<<-END_EXPECTED
|
34
|
+
(function() {
|
35
|
+
this.#{template_namespace} || (this.#{template_namespace} = {});
|
36
|
+
this.#{template_namespace}[#{template_name.dump}] = Handlebars.template(#{compiled_hbs});
|
37
|
+
return this.#{template_namespace}[#{template_name.dump}];
|
38
|
+
}).call(this);
|
39
39
|
END_EXPECTED
|
40
40
|
end
|
41
41
|
|
42
42
|
def hbs_compiled_partial(partial_name, source)
|
43
43
|
compiled_hbs = compile_hbs(source)
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
45
|
+
<<-END_EXPECTED
|
46
|
+
(function() {
|
47
|
+
Handlebars.registerPartial(#{partial_name.dump}, Handlebars.template(#{compiled_hbs}));
|
48
|
+
}).call(this);
|
49
49
|
END_EXPECTED
|
50
50
|
end
|
51
51
|
end
|
@@ -55,12 +55,15 @@ module HandlebarsAssets
|
|
55
55
|
extend self
|
56
56
|
|
57
57
|
def reset!
|
58
|
+
@chomp_underscore_for_partials = nil
|
58
59
|
@compiler = nil
|
59
60
|
@compiler_path = nil
|
60
61
|
@haml_options = nil
|
61
62
|
@known_helpers = nil
|
62
63
|
@known_helpers_only = nil
|
63
64
|
@options = nil
|
65
|
+
@patch_files = nil
|
66
|
+
@patch_path = nil
|
64
67
|
@path_prefix = nil
|
65
68
|
@template_namespace = nil
|
66
69
|
@ember = nil
|
@@ -73,6 +76,7 @@ module HandlebarsAssets
|
|
73
76
|
def self.reset!
|
74
77
|
@context = nil
|
75
78
|
@source = nil
|
79
|
+
@patch_path = nil
|
76
80
|
@path = nil
|
77
81
|
@assets_path = nil
|
78
82
|
end
|