handlebars_assets 0.22.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8de571e23c242b137be55601f8747404dd31a3ac
4
- data.tar.gz: 29a1f7ae70c9076bbaebfc8315cc9a7ea67a4ac4
3
+ metadata.gz: 889627ed5b4b89f37958d5d20a0b7e851839ecd3
4
+ data.tar.gz: 3863d8bb5d37a1ee791d4bd7a5385d6c9a94c9aa
5
5
  SHA512:
6
- metadata.gz: 1150eea0f96089095b79f70926bc14610d26b437122c162feeccfc7903dcffd66567f88c003f474811533f595cd9529fff87292266854e6d7433351c15e8643c
7
- data.tar.gz: 992ca4a7b02b8f17a5eecea7f2b21653dd50cf614b4de74d837e058af4dcc63945e63b59e6e242f4425f12bf3e445f6b9094eab84cd2931f3b170d814cd8b491
6
+ metadata.gz: 11e90da756a16a8196c511ec8c823d69230fc2c1885a740b6087ac4103b9c66922a6cde90d8cd1d3a229e84742618e80320dd90c53af040c9b5e8bb9dd1353da
7
+ data.tar.gz: e5856bd91e60f25dd84ad23fbc938f8e136bbf8292fee9ec6e43a27afb36b3609dda6438639a6816cf4ead01055fd527b3f0f02da3b8c4480effffff9cece33c
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  pkg/*
4
4
  Gemfile.lock
5
+ gemfiles/*.lock
@@ -0,0 +1,15 @@
1
+ appraise "sprockets-3" do
2
+ gem "sprockets", "3.0.0"
3
+ end
4
+
5
+ appraise "sprockets-2" do
6
+ gem "sprockets", "2.3.3"
7
+ end
8
+
9
+ appraise "tilt-2" do
10
+ gem "tilt", "2.0.1"
11
+ end
12
+
13
+ appraise "tilt-1" do
14
+ gem "tilt", "1.4.1"
15
+ end
data/Rakefile CHANGED
@@ -1,5 +1,7 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
1
3
  require "bundler/gem_tasks"
2
- require 'rake/testtask'
4
+ require "rake/testtask"
3
5
 
4
6
  Rake::TestTask.new do |t|
5
7
  t.libs << 'test'
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rails", "4.1.14"
6
+ gem "rails-sprockets", "2.3.3"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rails", "4.2.5"
6
+ gem "rails-sprockets", "2.3.3"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rails", "5.0.0.beta1"
6
+ gem "rails-sprockets", "3.0.0"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "sprockets", "2.3.3"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "sprockets", "3.0.0"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "tilt", "1.4.1"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "tilt", "2.0.1"
6
+
7
+ gemspec :path => "../"
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.email = ["leshill@gmail.com"]
11
11
  s.homepage = "https://github.com/leshill/handlebars_assets"
12
12
  s.summary = "Compile Handlebars templates in the Rails asset pipeline."
13
- s.description = "A Railities Gem to compile hbs assets"
13
+ s.description = "A Railties Gem to compile hbs assets"
14
14
 
15
15
  s.rubyforge_project = "handlebars_assets"
16
16
 
@@ -20,15 +20,16 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  s.add_runtime_dependency "execjs", "~> 2.0"
23
- s.add_runtime_dependency "tilt", "~> 1.2"
23
+ s.add_runtime_dependency "tilt", ">= 1.2"
24
24
  s.add_runtime_dependency "multi_json", "~> 1.0"
25
- s.add_runtime_dependency "sprockets", ">= 2.0.0", "< 4.0"
25
+ s.add_runtime_dependency "sprockets", ">= 2.0.0"
26
26
 
27
27
  s.add_development_dependency "minitest", '~> 5.5'
28
28
  s.add_development_dependency "haml", '~> 4.0'
29
29
  s.add_development_dependency "rake", '~> 10.0'
30
30
  s.add_development_dependency "slim", '~> 3.0'
31
- s.add_development_dependency 'json', '~> 1.7'
31
+ s.add_development_dependency "json", '~> 1.7'
32
+ s.add_development_dependency "appraisal"
32
33
 
33
34
  s.post_install_message = "Remember to rake assets:clean or rake assets:purge on update! this is required because of handlebars updates"
34
35
  end
@@ -4,6 +4,7 @@ module HandlebarsAssets
4
4
  autoload(:Config, 'handlebars_assets/config')
5
5
  autoload(:Handlebars, 'handlebars_assets/handlebars')
6
6
  autoload(:HandlebarsTemplate, 'handlebars_assets/handlebars_template')
7
+ autoload(:HandlebarsProcessor, 'handlebars_assets/handlebars_template')
7
8
 
8
9
  PATH = File.expand_path('../../vendor/assets/javascripts', __FILE__)
9
10
 
@@ -16,6 +17,7 @@ module HandlebarsAssets
16
17
  end
17
18
 
18
19
  def self.register_extensions(sprockets_environment)
20
+ if Gem::Version.new(Sprockets::VERSION) < Gem::Version.new('3')
19
21
  Config.handlebars_extensions.each do |ext|
20
22
  sprockets_environment.register_engine(ext, HandlebarsTemplate)
21
23
  end
@@ -29,12 +31,21 @@ module HandlebarsAssets
29
31
  sprockets_environment.register_engine(ext, HandlebarsTemplate)
30
32
  end
31
33
  end
34
+ else
35
+ sprockets_environment.register_mime_type 'text/x-handlebars-template', extensions: Config.handlebars_extensions
36
+ if Config.slim_enabled? && Config.slim_available?
37
+ sprockets_environment.register_mime_type 'text/x-handlebars-template', extensions: Config.slimbars_extensions
38
+ end
39
+ if Config.haml_enabled? && Config.haml_available?
40
+ sprockets_environment.register_mime_type 'text/x-handlebars-template', extensions: Config.hamlbars_extensions
41
+ end
42
+ sprockets_environment.register_transformer 'text/x-handlebars-template', 'application/javascript', HandlebarsProcessor
43
+ end
32
44
  end
33
45
 
34
46
  def self.add_to_asset_versioning(sprockets_environment)
35
- sprockets_environment.config.version += "-#{HandlebarsAssets::VERSION}"
47
+ sprockets_environment.version += "-#{HandlebarsAssets::VERSION}"
36
48
  end
37
-
38
49
  end
39
50
 
40
51
  # Register the engine (which will register extension in the app)
@@ -2,8 +2,12 @@ module HandlebarsAssets
2
2
  # NOTE: must be an engine because we are including assets in the gem
3
3
  class Engine < ::Rails::Engine
4
4
  initializer "handlebars_assets.assets.register", :group => :all do |app|
5
- ::HandlebarsAssets::register_extensions(app.assets)
6
- app.assets.version += "#{::HandlebarsAssets::VERSION}"
5
+ config.assets.configure do |sprockets_env|
6
+ ::HandlebarsAssets::register_extensions(sprockets_env)
7
+ if Gem::Version.new(Sprockets::VERSION) < Gem::Version.new('3')
8
+ ::HandlebarsAssets::add_to_asset_versioning(sprockets_env)
9
+ end
10
+ end
7
11
  end
8
12
  end
9
13
  end
@@ -12,15 +12,76 @@ module HandlebarsAssets
12
12
  end
13
13
  end
14
14
 
15
+ # Sprockets <= 3
15
16
  class HandlebarsTemplate < Tilt::Template
16
-
17
- include Unindent
18
-
19
17
  def self.default_mime_type
20
18
  'application/javascript'
21
19
  end
22
20
 
23
21
  def initialize_engine
22
+ HandlebarsRenderer.initialize_engine
23
+ end
24
+
25
+ def prepare
26
+ @engine = renderer.choose_engine(data)
27
+ end
28
+
29
+ def evaluate(scope, locals, &block)
30
+ source = @engine.render(scope, locals, &block)
31
+ renderer.compile(source)
32
+ end
33
+
34
+ private
35
+
36
+ def renderer
37
+ @renderer ||= HandlebarsRenderer.new(path: @file)
38
+ end
39
+ end
40
+
41
+ # Sprockets 4
42
+ class HandlebarsProcessor
43
+
44
+ def self.instance
45
+ @instance ||= new
46
+ end
47
+
48
+ def self.call(input)
49
+ instance.call(input)
50
+ end
51
+
52
+ def self.cache_key
53
+ instance.cache_key
54
+ end
55
+
56
+ attr_reader :cache_key
57
+
58
+ def initialize(options = {})
59
+ @cache_key = [self.class.name, ::HandlebarsAssets::VERSION, options].freeze
60
+ end
61
+
62
+ def call(input)
63
+ renderer = HandlebarsRenderer.new(path: input[:filename])
64
+ engine = renderer.choose_engine(input[:data])
65
+ renderer.compile(engine.render)
66
+ end
67
+ end
68
+
69
+ class NoOpEngine
70
+ def initialize(data)
71
+ @data = data
72
+ end
73
+
74
+ def render(*args)
75
+ @data
76
+ end
77
+ end
78
+
79
+ class HandlebarsRenderer
80
+ include Unindent
81
+
82
+ def self.initialize_engine
83
+ return if @initialized
84
+
24
85
  begin
25
86
  require 'haml'
26
87
  rescue LoadError
@@ -31,28 +92,26 @@ module HandlebarsAssets
31
92
  rescue LoadError
32
93
  # slim not available
33
94
  end
95
+
96
+ @initialized = true
34
97
  end
35
98
 
36
- def prepare
37
- @template_path = TemplatePath.new(@file)
38
- @engine =
39
- if @template_path.is_haml?
40
- Haml::Engine.new(data, HandlebarsAssets::Config.haml_options)
41
- elsif @template_path.is_slim?
42
- Slim::Template.new(HandlebarsAssets::Config.slim_options) { data }
43
- else
44
- nil
45
- end
99
+ def initialize(options)
100
+ self.class.initialize_engine
101
+ @template_path = TemplatePath.new(options[:path])
46
102
  end
47
103
 
48
- def evaluate(scope, locals, &block)
49
- source =
50
- if @engine
51
- @engine.render(scope, locals, &block)
52
- else
53
- data
54
- end
104
+ def choose_engine(data)
105
+ if @template_path.is_haml?
106
+ Haml::Engine.new(data, HandlebarsAssets::Config.haml_options)
107
+ elsif @template_path.is_slim?
108
+ Slim::Template.new(HandlebarsAssets::Config.slim_options) { data }
109
+ else
110
+ NoOpEngine.new(data)
111
+ end
112
+ end
55
113
 
114
+ def compile(source)
56
115
  # remove trailing \n on file, for some reason the directives pipeline adds this
57
116
  source.chomp!($/)
58
117
 
@@ -1,3 +1,3 @@
1
1
  module HandlebarsAssets
2
- VERSION = "0.22.0"
2
+ VERSION = "0.23.0"
3
3
  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
@@ -1,238 +1,18 @@
1
1
  require 'test_helper'
2
- require 'haml'
3
- require 'slim'
2
+ require_relative 'shared/adapter_tests'
4
3
 
5
4
  module HandlebarsAssets
6
5
  class HandlebarsTemplateTest < Minitest::Test
7
- include CompilerSupport
8
- include SprocketsScope
6
+ include AdapterTests
9
7
 
10
8
  def teardown
11
9
  HandlebarsAssets::Config.reset!
12
10
  HandlebarsAssets::Handlebars.reset!
13
11
  end
14
12
 
15
- def compile_haml(source)
16
- ::Haml::Engine.new(source, HandlebarsAssets::Config.haml_options).render
17
- end
18
-
19
- def compile_slim(source)
20
- ::Slim::Template.new(HandlebarsAssets::Config.slim_options) { source }.render
21
- end
22
-
23
- def test_render
24
- root = '/myapp/app/assets/templates'
25
- file = 'test_render.hbs'
26
- scope = make_scope root, file
27
- source = "This is {{handlebars}}"
28
-
29
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
30
-
31
- assert_equal hbs_compiled('test_render', source), template.render(scope, {})
32
- end
33
-
34
- # Sprockets does not add nested root paths (i.e.
35
- # app/assets/javascripts/templates is rooted at app/assets/javascripts)
36
- def test_template_misnaming
37
- root = '/myapp/app/assets/javascripts'
38
- file = 'templates/test_template_misnaming.hbs'
39
- scope = make_scope root, file
40
- source = "This is {{handlebars}}"
41
-
42
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
43
-
44
- assert_equal hbs_compiled('test_template_misnaming', source), template.render(scope, {})
45
- end
46
-
47
- def test_path_prefix
48
- root = '/myapp/app/assets/javascripts'
49
- file = 'app/templates/test_path_prefix.hbs'
50
- scope = make_scope root, file
51
- source = "This is {{handlebars}}"
52
-
53
- HandlebarsAssets::Config.path_prefix = 'app/templates'
54
-
55
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
56
-
57
- assert_equal hbs_compiled('test_path_prefix', source), template.render(scope, {})
58
- end
59
-
60
- def test_underscore_partials
61
- root = '/myapp/app/assets/javascripts'
62
- file1 = 'app/templates/_test_underscore.hbs'
63
- scope1 = make_scope root, file1
64
- file2 = 'app/templates/some/thing/_test_underscore.hbs'
65
- scope2 = make_scope root, file2
66
- source = "This is {{handlebars}}"
67
-
68
- HandlebarsAssets::Config.path_prefix = 'app/templates'
69
-
70
- template1 = HandlebarsAssets::HandlebarsTemplate.new(scope1.pathname.to_s) { source }
71
-
72
- assert_equal hbs_compiled_partial('_test_underscore', source), template1.render(scope1, {})
73
-
74
- template2 = HandlebarsAssets::HandlebarsTemplate.new(scope2.pathname.to_s) { source }
75
-
76
- assert_equal hbs_compiled_partial('some/thing/_test_underscore', source), template2.render(scope2, {})
77
- end
78
-
79
- def test_chomped_underscore_partials
80
- assert_equal HandlebarsAssets::Config.chomp_underscore_for_partials?, false
81
-
82
- HandlebarsAssets::Config.chomp_underscore_for_partials = true
83
- assert_equal HandlebarsAssets::Config.chomp_underscore_for_partials?, true
84
-
85
- root = '/myapp/app/assets/javascripts'
86
- file1 = 'app/templates/_test_underscore.hbs'
87
- scope1 = make_scope root, file1
88
- file2 = 'app/templates/some/thing/_test_underscore.hbs'
89
- scope2 = make_scope root, file2
90
- source = "This is {{handlebars}}"
91
-
92
- HandlebarsAssets::Config.path_prefix = 'app/templates'
93
-
94
- template1 = HandlebarsAssets::HandlebarsTemplate.new(scope1.pathname.to_s) { source }
95
-
96
- assert_equal hbs_compiled_partial('test_underscore', source), template1.render(scope1, {})
97
-
98
- template2 = HandlebarsAssets::HandlebarsTemplate.new(scope2.pathname.to_s) { source }
99
-
100
- assert_equal hbs_compiled_partial('some/thing/test_underscore', source), template2.render(scope2, {})
101
-
102
- end
103
-
104
- def test_without_known_helpers_opt
105
- root = '/myapp/app/assets/templates'
106
- file = 'test_without_known.hbs'
107
- scope = make_scope root, file
108
- source = "{{#with author}}By {{first_name}} {{last_name}}{{/with}}"
109
-
110
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
111
-
112
- assert_equal hbs_compiled('test_without_known', source), template.render(scope, {})
113
- end
114
-
115
- def test_known_helpers_opt
116
- root = '/myapp/app/assets/templates'
117
- file = 'test_known.hbs'
118
- scope = make_scope root, file
119
- source = "{{#with author}}By {{first_name}} {{last_name}}{{/with}}"
120
-
121
- HandlebarsAssets::Config.known_helpers_only = true
122
-
13
+ def render_it(scope, source)
123
14
  template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
124
-
125
- assert_equal hbs_compiled('test_known', source), template.render(scope, {})
126
- end
127
-
128
- def test_with_custom_helpers
129
- root = '/myapp/app/assets/templates'
130
- file = 'test_custom_helper.hbs'
131
- scope = make_scope root, file
132
- source = "{{#custom author}}By {{first_name}} {{last_name}}{{/custom}}"
133
-
134
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
135
-
136
- assert_equal hbs_compiled('test_custom_helper', source), template.render(scope, {})
137
- end
138
-
139
- def test_with_custom_known_helpers
140
- root = '/myapp/app/assets/templates'
141
- file = 'test_custom_known_helper.hbs'
142
- scope = make_scope root, file
143
- source = "{{#custom author}}By {{first_name}} {{last_name}}{{/custom}}"
144
-
145
- HandlebarsAssets::Config.known_helpers_only = true
146
- HandlebarsAssets::Config.known_helpers = %w(custom)
147
-
148
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
149
-
150
- assert_equal hbs_compiled('test_custom_known_helper', source), template.render(scope, {})
151
- end
152
-
153
- def test_template_namespace
154
- root = '/myapp/app/assets/javascripts/templates'
155
- file = 'test_template_namespace.hbs'
156
- scope = make_scope root, file
157
- source = "This is {{handlebars}}"
158
-
159
- HandlebarsAssets::Config.template_namespace = 'JST'
160
-
161
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
162
-
163
- assert_equal hbs_compiled('test_template_namespace', source), template.render(scope, {})
164
- end
165
-
166
- def test_ember_render
167
- root = '/myapp/app/assets/templates'
168
- file = 'test_render.hbs'
169
- scope = make_scope root, file
170
- source = "This is {{handlebars}}"
171
-
172
- HandlebarsAssets::Config.ember = true
173
- HandlebarsAssets::Config.multiple_frameworks = false
174
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
175
-
176
- expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("This is {{handlebars}}");};
177
- assert_equal expected_compiled, template.render(scope, {})
178
- end
179
-
180
- def test_multiple_frameworks_with_ember_render
181
- root = '/myapp/app/assets/templates'
182
- non_ember = 'test_render.hbs'
183
- non_ember_but_with_ember = 'test_member.hbs'
184
- ember_ext_no_hbs = 'test_render.ember'
185
- ember_ext = 'test_render.ember.hbs'
186
- ember_with_haml = 'test_render.ember.hamlbars'
187
- ember_with_slim = 'test_render.ember.slimbars'
188
- ember_ext_with_erb = 'test_render.ember.hbs.erb'
189
-
190
- HandlebarsAssets::Config.ember = true
191
- HandlebarsAssets::Config.multiple_frameworks = true
192
-
193
- # File without ember extension should compile to default namespace
194
- scope = make_scope root, non_ember
195
- source = "This is {{handlebars}}"
196
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
197
- assert_equal hbs_compiled('test_render', source), template.render(scope, {})
198
-
199
- # File without ember extension but with ember in it should compile to default namespace
200
- scope = make_scope root, non_ember_but_with_ember
201
- source = "This is {{handlebars}}"
202
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
203
- assert_equal hbs_compiled('test_member', source), template.render(scope, {})
204
-
205
- # File with ember extension should compile to ember specific namespace
206
- expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("This is {{handlebars}}");};
207
- scope = make_scope root, ember_ext_no_hbs
208
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
209
- assert_equal expected_compiled, template.render(scope, {})
210
-
211
- # File with ember and erb extension should compile to ember specific namespace
212
- expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("This is {{handlebars}}");};
213
- scope = make_scope root, ember_ext_with_erb
214
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
215
- assert_equal expected_compiled, template.render(scope, {})
216
-
217
- # File with ember.hbs extension should compile to ember specific namespace
218
- expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("This is {{handlebars}}");};
219
- scope = make_scope root, ember_ext
220
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { source }
221
- assert_equal expected_compiled, template.render(scope, {})
222
-
223
- # File with ember.hamlbars extension should compile to ember specific namespace
224
- expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("<p>This is {{handlebars}}</p>");};
225
- scope = make_scope root, ember_with_haml
226
- source = "%p This is {{handlebars}}"
227
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { compile_haml(source) }
228
- assert_equal expected_compiled, template.render(scope, {})
229
-
230
- # File with ember.slimbars extension should compile to ember specific namespace
231
- expected_compiled = %{window.Ember.TEMPLATES["test_render"] = Ember.Handlebars.compile("<p>This is {{handlebars}}</p>");};
232
- source = "p This is {{handlebars}}"
233
- scope = make_scope root, ember_with_slim
234
- template = HandlebarsAssets::HandlebarsTemplate.new(scope.pathname.to_s) { compile_slim(source) }
235
- assert_equal expected_compiled, template.render(scope, {})
15
+ template.render(scope, {})
236
16
  end
237
17
  end
238
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: handlebars_assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.0
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Hill
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-24 00:00:00.000000000 Z
11
+ date: 2016-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: execjs
@@ -28,14 +28,14 @@ dependencies:
28
28
  name: tilt
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.2'
41
41
  - !ruby/object:Gem::Dependency
@@ -59,9 +59,6 @@ dependencies:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.0.0
62
- - - "<"
63
- - !ruby/object:Gem::Version
64
- version: '4.0'
65
62
  type: :runtime
66
63
  prerelease: false
67
64
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,9 +66,6 @@ dependencies:
69
66
  - - ">="
70
67
  - !ruby/object:Gem::Version
71
68
  version: 2.0.0
72
- - - "<"
73
- - !ruby/object:Gem::Version
74
- version: '4.0'
75
69
  - !ruby/object:Gem::Dependency
76
70
  name: minitest
77
71
  requirement: !ruby/object:Gem::Requirement
@@ -142,7 +136,21 @@ dependencies:
142
136
  - - "~>"
143
137
  - !ruby/object:Gem::Version
144
138
  version: '1.7'
145
- description: A Railities Gem to compile hbs assets
139
+ - !ruby/object:Gem::Dependency
140
+ name: appraisal
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: A Railties Gem to compile hbs assets
146
154
  email:
147
155
  - leshill@gmail.com
148
156
  executables: []
@@ -151,11 +159,19 @@ extra_rdoc_files: []
151
159
  files:
152
160
  - ".gitignore"
153
161
  - ".ruby-gemset"
162
+ - Appraisals
154
163
  - CHANGELOG.md
155
164
  - Gemfile
156
165
  - MIT-LICENSE
157
166
  - README.md
158
167
  - Rakefile
168
+ - gemfiles/rails_4_1.gemfile
169
+ - gemfiles/rails_4_2.gemfile
170
+ - gemfiles/rails_5.gemfile
171
+ - gemfiles/sprockets_2.gemfile
172
+ - gemfiles/sprockets_3.gemfile
173
+ - gemfiles/tilt_1.gemfile
174
+ - gemfiles/tilt_2.gemfile
159
175
  - handlebars_assets.gemspec
160
176
  - lib/handlebars_assets.rb
161
177
  - lib/handlebars_assets/config.rb
@@ -166,6 +182,8 @@ files:
166
182
  - test/edge/handlebars.js
167
183
  - test/handlebars_assets/compiling_test.rb
168
184
  - test/handlebars_assets/hamlbars_test.rb
185
+ - test/handlebars_assets/handlebars_processor_test.rb
186
+ - test/handlebars_assets/shared/adapter_tests.rb
169
187
  - test/handlebars_assets/slimbars_test.rb
170
188
  - test/handlebars_assets/tilt_handlebars_test.rb
171
189
  - test/patch/patch.js
@@ -193,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
211
  version: '0'
194
212
  requirements: []
195
213
  rubyforge_project: handlebars_assets
196
- rubygems_version: 2.2.2
214
+ rubygems_version: 2.4.5.1
197
215
  signing_key:
198
216
  specification_version: 4
199
217
  summary: Compile Handlebars templates in the Rails asset pipeline.
@@ -201,7 +219,10 @@ test_files:
201
219
  - test/edge/handlebars.js
202
220
  - test/handlebars_assets/compiling_test.rb
203
221
  - test/handlebars_assets/hamlbars_test.rb
222
+ - test/handlebars_assets/handlebars_processor_test.rb
223
+ - test/handlebars_assets/shared/adapter_tests.rb
204
224
  - test/handlebars_assets/slimbars_test.rb
205
225
  - test/handlebars_assets/tilt_handlebars_test.rb
206
226
  - test/patch/patch.js
207
227
  - test/test_helper.rb
228
+ has_rdoc: