handlebars_assets 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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