handlebars_assets 0.7.1 → 0.7.2

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.
@@ -1,3 +1,10 @@
1
+ ## On master
2
+
3
+ ## 0.7.2 (2012-12-25)
4
+
5
+ * Note use of `rake assets:precompile` in README
6
+ * Strip leading whitespace from compiled templates - @trkoch
7
+
1
8
  ## 0.7.1 (2012-12-4)
2
9
 
3
10
  * Use edge version of `handlebars.js` ([this commit](https://github.com/wycats/handlebars.js/commit/bd0490145438e8f9df05abd2f4c25687bac81326)) to fix regression with context functions
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- handlebars_assets (0.7.1)
4
+ handlebars_assets (0.7.2)
5
5
  execjs (>= 1.2.9)
6
6
  sprockets (>= 2.0.3)
7
7
  tilt
@@ -15,7 +15,7 @@ GEM
15
15
  hike (1.2.1)
16
16
  multi_json (1.4.0)
17
17
  rack (1.4.1)
18
- rake (0.9.2.2)
18
+ rake (10.0.3)
19
19
  sprockets (2.8.1)
20
20
  hike (~> 1.2)
21
21
  multi_json (~> 1.0)
data/README.md CHANGED
@@ -52,6 +52,10 @@ If you need to compile your JavaScript templates in the browser as well, you sho
52
52
 
53
53
  `handlebars_assets` also works when you are precompiling your assets.
54
54
 
55
+ ### `rake assets:precompile`
56
+
57
+ If you are using `rake assets:precompile`, you have to re-run the `rake` command to rebuild any changed templates. See the [Rails guide](http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets) for more details.
58
+
55
59
  ### Heroku
56
60
 
57
61
  If you are deploying to Heroku, be sure to read the [Rails guide](http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets) and in your `config/application.rb` set:
@@ -170,6 +174,7 @@ Follow me on [Github](https://github.com/leshill) and [Twitter](https://twitter.
170
174
  * Ken Mayer (@kmayer) : Quick fix for template\_namespace option
171
175
  * Brad Murray (@wyaeld) : Generic options support
172
176
  * Blake Williams (@BlakeWilliams) : .handlebars extension
177
+ * Tristan Koch (@trkoch) : Strip leading whitespace from compiled templates
173
178
 
174
179
  # Contributing
175
180
 
@@ -1,8 +1,20 @@
1
1
  require 'tilt'
2
2
 
3
3
  module HandlebarsAssets
4
+ module Unindent
5
+ # http://bit.ly/aze9FV
6
+ # Strip leading whitespace from each line that is the same as the
7
+ # amount of whitespace on the first line of the string.
8
+ # Leaves _additional_ indentation on later lines intact.
9
+ def unindent(heredoc)
10
+ heredoc.gsub /^#{heredoc[/\A\s*/]}/, ''
11
+ end
12
+ end
13
+
4
14
  class TiltHandlebars < Tilt::Template
5
15
 
16
+ include Unindent
17
+
6
18
  def self.default_mime_type
7
19
  'application/javascript'
8
20
  end
@@ -21,13 +33,13 @@ module HandlebarsAssets
21
33
  template_namespace = HandlebarsAssets::Config.template_namespace
22
34
 
23
35
  if template_path.is_partial?
24
- <<-PARTIAL
36
+ unindent <<-PARTIAL
25
37
  (function() {
26
38
  Handlebars.registerPartial(#{template_path.name}, Handlebars.template(#{compiled_hbs}));
27
39
  }).call(this);
28
40
  PARTIAL
29
41
  else
30
- <<-TEMPLATE
42
+ unindent <<-TEMPLATE
31
43
  (function() {
32
44
  this.#{template_namespace} || (this.#{template_namespace} = {});
33
45
  this.#{template_namespace}[#{template_path.name}] = Handlebars.template(#{compiled_hbs});
@@ -1,3 +1,3 @@
1
1
  module HandlebarsAssets
2
- VERSION = "0.7.1"
2
+ VERSION = "0.7.2"
3
3
  end
@@ -1,32 +1,14 @@
1
1
  require 'test_helper'
2
2
 
3
3
  module HandlebarsAssets
4
- class TiltHandlebarsTest < Test::Unit::TestCase
4
+ class HamlbarsTest < Test::Unit::TestCase
5
5
  include SprocketsScope
6
+ include CompilerSupport
6
7
 
7
- def expected_haml_compiled(source)
8
+ def compile_haml(source)
8
9
  Haml::Engine.new(source, HandlebarsAssets::Config.haml_options).render
9
10
  end
10
11
 
11
- def expected_hbs_compiled(source)
12
- compiler_src = Pathname(HandlebarsAssets::Config.compiler_path).join(HandlebarsAssets::Config.compiler).read
13
- ExecJS.compile(compiler_src).call('Handlebars.precompile', source, HandlebarsAssets::Config.options)
14
- end
15
-
16
- def haml_compiled(template_name, source)
17
- compiled_haml = expected_haml_compiled(source)
18
- compiled_hbs = expected_hbs_compiled(compiled_haml)
19
- template_namespace = HandlebarsAssets::Config.template_namespace
20
-
21
- <<END_EXPECTED
22
- (function() {
23
- this.#{template_namespace} || (this.#{template_namespace} = {});
24
- this.#{template_namespace}[#{template_name.dump}] = Handlebars.template(#{compiled_hbs});
25
- return this.#{template_namespace}[#{template_name.dump}];
26
- }).call(this);
27
- END_EXPECTED
28
- end
29
-
30
12
  def teardown
31
13
  HandlebarsAssets::Config.reset!
32
14
  HandlebarsAssets::Handlebars.reset!
@@ -40,7 +22,7 @@ END_EXPECTED
40
22
 
41
23
  template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
42
24
 
43
- assert_equal haml_compiled('test_render', source), template.render(scope, {})
25
+ assert_equal hbs_compiled('test_render', compile_haml(source)), template.render(scope, {})
44
26
  end
45
27
  end
46
28
  end
@@ -1,28 +1,9 @@
1
1
  require 'test_helper'
2
2
 
3
3
  module HandlebarsAssets
4
- class TiltHandlebarsTest < Test::Unit::TestCase
4
+ class TiltEdgeTest < Test::Unit::TestCase
5
5
  include SprocketsScope
6
-
7
- def hbs_edge_compiled(template_name)
8
- <<END_EXPECTED
9
- (function() {
10
- this.HandlebarsTemplates || (this.HandlebarsTemplates = {});
11
- this.HandlebarsTemplates[\"#{template_name}\"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
12
- helpers = helpers || Handlebars.helpers;
13
- var buffer = \"\", stack1, foundHelper, functionType=\"function\", escapeExpression=this.escapeExpression;
14
-
15
-
16
- buffer += \"This is \";
17
- foundHelper = helpers.handlebars;
18
- if (foundHelper) { stack1 = foundHelper.call(depth0, {hash:{}}); }
19
- else { stack1 = depth0.handlebars; stack1 = typeof stack1 === functionType ? stack1() : stack1; }
20
- buffer += escapeExpression(stack1);
21
- return buffer;});
22
- return this.HandlebarsTemplates[\"#{template_name}\"];
23
- }).call(this);
24
- END_EXPECTED
25
- end
6
+ include CompilerSupport
26
7
 
27
8
  def teardown
28
9
  HandlebarsAssets::Config.reset!
@@ -33,12 +14,13 @@ END_EXPECTED
33
14
  root = '/myapp/app/assets/templates'
34
15
  file = 'test_render.hbs'
35
16
  scope = make_scope root, file
17
+ source = "This is {{handlebars}}"
36
18
 
37
19
  HandlebarsAssets::Config.compiler_path = File.expand_path '../../edge', __FILE__
38
20
 
39
- template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { "This is {{handlebars}}" }
21
+ template = HandlebarsAssets::TiltHandlebars.new(scope.pathname.to_s) { source }
40
22
 
41
- assert_equal hbs_edge_compiled('test_render'), template.render(scope, {})
23
+ assert_equal hbs_compiled('test_render', source), template.render(scope, {})
42
24
  end
43
25
  end
44
26
  end
@@ -2,36 +2,9 @@ require 'test_helper'
2
2
 
3
3
  module HandlebarsAssets
4
4
  class TiltHandlebarsTest < Test::Unit::TestCase
5
+ include CompilerSupport
5
6
  include SprocketsScope
6
7
 
7
- def expected_compiled(source)
8
- compiler_src = Pathname(HandlebarsAssets::Config.compiler_path).join(HandlebarsAssets::Config.compiler).read
9
- ExecJS.compile(compiler_src).call('Handlebars.precompile', source, HandlebarsAssets::Config.options)
10
- end
11
-
12
- def hbs_compiled(template_name, source)
13
- compiled_hbs = expected_compiled(source)
14
- template_namespace = HandlebarsAssets::Config.template_namespace
15
-
16
- <<END_EXPECTED
17
- (function() {
18
- this.#{template_namespace} || (this.#{template_namespace} = {});
19
- this.#{template_namespace}[#{template_name.dump}] = Handlebars.template(#{compiled_hbs});
20
- return this.#{template_namespace}[#{template_name.dump}];
21
- }).call(this);
22
- END_EXPECTED
23
- end
24
-
25
- def hbs_compiled_partial(partial_name, source)
26
- compiled_hbs = expected_compiled(source)
27
-
28
- <<END_EXPECTED
29
- (function() {
30
- Handlebars.registerPartial(#{partial_name.dump}, Handlebars.template(#{compiled_hbs}));
31
- }).call(this);
32
- END_EXPECTED
33
- end
34
-
35
8
  def teardown
36
9
  HandlebarsAssets::Config.reset!
37
10
  HandlebarsAssets::Handlebars.reset!
@@ -18,6 +18,38 @@ module SprocketsScope
18
18
  end
19
19
  end
20
20
 
21
+ module CompilerSupport
22
+ include HandlebarsAssets::Unindent
23
+
24
+ def compile_hbs(source)
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)
27
+ end
28
+
29
+ def hbs_compiled(template_name, source)
30
+ compiled_hbs = compile_hbs(source)
31
+ template_namespace = HandlebarsAssets::Config.template_namespace
32
+
33
+ unindent <<-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
+ END_EXPECTED
40
+ end
41
+
42
+ def hbs_compiled_partial(partial_name, source)
43
+ compiled_hbs = compile_hbs(source)
44
+
45
+ unindent <<-END_EXPECTED
46
+ (function() {
47
+ Handlebars.registerPartial(#{partial_name.dump}, Handlebars.template(#{compiled_hbs}));
48
+ }).call(this);
49
+ END_EXPECTED
50
+ end
51
+ end
52
+
21
53
  module HandlebarsAssets
22
54
  module Config
23
55
  extend self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: handlebars_assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,88 +9,88 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-05 00:00:00.000000000 Z
12
+ date: 2012-12-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: execjs
16
16
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
17
  requirements:
19
18
  - - ! '>='
20
19
  - !ruby/object:Gem::Version
21
20
  version: 1.2.9
22
- type: :runtime
21
+ none: false
23
22
  prerelease: false
23
+ type: :runtime
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
25
  requirements:
27
26
  - - ! '>='
28
27
  - !ruby/object:Gem::Version
29
28
  version: 1.2.9
29
+ none: false
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: tilt
32
32
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
33
  requirements:
35
34
  - - ! '>='
36
35
  - !ruby/object:Gem::Version
37
36
  version: '0'
38
- type: :runtime
37
+ none: false
39
38
  prerelease: false
39
+ type: :runtime
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
41
  requirements:
43
42
  - - ! '>='
44
43
  - !ruby/object:Gem::Version
45
44
  version: '0'
45
+ none: false
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: sprockets
48
48
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
49
  requirements:
51
50
  - - ! '>='
52
51
  - !ruby/object:Gem::Version
53
52
  version: 2.0.3
54
- type: :runtime
53
+ none: false
55
54
  prerelease: false
55
+ type: :runtime
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
57
  requirements:
59
58
  - - ! '>='
60
59
  - !ruby/object:Gem::Version
61
60
  version: 2.0.3
61
+ none: false
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: rake
64
64
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
65
  requirements:
67
66
  - - ! '>='
68
67
  - !ruby/object:Gem::Version
69
68
  version: '0'
70
- type: :development
69
+ none: false
71
70
  prerelease: false
71
+ type: :development
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
73
  requirements:
75
74
  - - ! '>='
76
75
  - !ruby/object:Gem::Version
77
76
  version: '0'
77
+ none: false
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: haml
80
80
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
81
  requirements:
83
82
  - - ! '>='
84
83
  - !ruby/object:Gem::Version
85
84
  version: '0'
86
- type: :development
85
+ none: false
87
86
  prerelease: false
87
+ type: :development
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
89
  requirements:
91
90
  - - ! '>='
92
91
  - !ruby/object:Gem::Version
93
92
  version: '0'
93
+ none: false
94
94
  description: Compile Handlebars templates in the Rails asset pipeline.
95
95
  email:
96
96
  - leshill@gmail.com
@@ -127,17 +127,17 @@ rdoc_options: []
127
127
  require_paths:
128
128
  - lib
129
129
  required_ruby_version: !ruby/object:Gem::Requirement
130
- none: false
131
130
  requirements:
132
131
  - - ! '>='
133
132
  - !ruby/object:Gem::Version
134
133
  version: '0'
135
- required_rubygems_version: !ruby/object:Gem::Requirement
136
134
  none: false
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
136
  requirements:
138
137
  - - ! '>='
139
138
  - !ruby/object:Gem::Version
140
139
  version: '0'
140
+ none: false
141
141
  requirements: []
142
142
  rubyforge_project: handlebars_assets
143
143
  rubygems_version: 1.8.24