handlebars_assets 0.0.3 → 0.1.0

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,20 +1,29 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- handlebars_assets (0.0.3)
5
- therubyracer
4
+ handlebars_assets (0.1.0)
5
+ execjs
6
6
  tilt
7
7
 
8
8
  GEM
9
9
  remote: http://rubygems.org/
10
10
  specs:
11
+ activesupport (3.1.0)
12
+ multi_json (~> 1.0)
13
+ execjs (1.2.4)
14
+ multi_json (~> 1.0)
11
15
  libv8 (3.3.10.2)
12
- therubyracer (0.9.3)
16
+ multi_json (1.0.3)
17
+ rake (0.9.2)
18
+ therubyracer (0.9.4)
13
19
  libv8 (~> 3.3.10)
14
- tilt (1.3.2)
20
+ tilt (1.3.3)
15
21
 
16
22
  PLATFORMS
17
23
  ruby
18
24
 
19
25
  DEPENDENCIES
26
+ activesupport (~> 3.1.0)
20
27
  handlebars_assets!
28
+ rake
29
+ therubyracer
@@ -0,0 +1,3 @@
1
+ ## v0.1.0
2
+
3
+ * use execjs (@spraints)
data/README.md CHANGED
@@ -82,3 +82,7 @@ Once you've made your great commits
82
82
  # Author
83
83
 
84
84
  Les Hill : @leshill
85
+
86
+ # Contributors
87
+
88
+ Matt Burke : @spraints ( execjs support )
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'test'
6
+ t.test_files = FileList['test/**/*_test.rb']
7
+ end
@@ -18,6 +18,10 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_runtime_dependency "therubyracer"
21
+ s.add_runtime_dependency "execjs"
22
22
  s.add_runtime_dependency "tilt"
23
+
24
+ s.add_development_dependency "activesupport", "~> 3.1.0"
25
+ s.add_development_dependency "therubyracer"
26
+ s.add_development_dependency "rake"
23
27
  end
@@ -3,6 +3,5 @@ require 'handlebars_assets/engine'
3
3
 
4
4
  module HandlebarsAssets
5
5
  autoload(:Handlebars, 'handlebars_assets/handlebars')
6
- autoload(:Loader, 'handlebars_assets/loader')
7
6
  autoload(:TiltHandlebars, 'handlebars_assets/tilt_handlebars')
8
7
  end
@@ -1,17 +1,29 @@
1
- # Based on https://github.com/cowboyd/handlebars.rb
1
+ # Based on https://github.com/josh/ruby-coffee-script
2
+ require 'execjs'
3
+ require 'pathname'
4
+
2
5
  module HandlebarsAssets
3
- module Handlebars
4
- @loader = Loader.new
6
+ class Handlebars
7
+ class << self
8
+ def precompile(*args)
9
+ context.call('Handlebars.precompile', *args)
10
+ end
5
11
 
6
- module_function
12
+ private
13
+ def context
14
+ @context ||= ExecJS.compile(source)
15
+ end
7
16
 
8
- def precompile(*args)
9
- handlebars.precompile(*args)
10
- end
17
+ def source
18
+ @source ||= path.read
19
+ end
20
+
21
+ def path
22
+ @path ||= assets_path.join('javascripts', 'handlebars.js')
23
+ end
11
24
 
12
- def handlebars
13
- Handlebars.module_eval do
14
- @loader.require('handlebars')
25
+ def assets_path
26
+ @assets_path ||= Pathname(__FILE__).dirname.join('..','..','vendor','assets')
15
27
  end
16
28
  end
17
29
  end
@@ -1,3 +1,3 @@
1
1
  module HandlebarsAssets
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+
3
+ module HandlebarsAssets
4
+ class TiltHandlebarsTest < Test::Unit::TestCase
5
+ def test_render
6
+ # Try to act like sprockets.
7
+ scope = Object.new
8
+ class << scope
9
+ def logical_path ; 'x11' ; end
10
+ end
11
+ template = HandlebarsAssets::TiltHandlebars.new('/myapp/app/assets/templates/x11.jst.hbs') { "This is {{handlebars}}" }
12
+ assert_equal <<END_EXPECTED, template.render(scope, {})
13
+ function(context) {
14
+ return HandlebarsTemplates["x11"](context);
15
+ };
16
+ this.HandlebarsTemplates || (this.HandlebarsTemplates = {});
17
+ this.HandlebarsTemplates["x11"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
18
+ helpers = helpers || Handlebars.helpers;
19
+ var buffer = "", stack1, self=this, functionType="function", helperMissing=helpers.helperMissing, undef=void 0, escapeExpression=this.escapeExpression;
20
+
21
+
22
+ buffer += "This is ";
23
+ stack1 = helpers.handlebars || depth0.handlebars
24
+ if(typeof stack1 === functionType) { stack1 = stack1.call(depth0, { hash: {} }); }
25
+ else if(stack1=== undef) { stack1 = helperMissing.call(depth0, "handlebars", { hash: {} }); }
26
+ buffer += escapeExpression(stack1);
27
+ return buffer;});
28
+ END_EXPECTED
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,6 @@
1
+ require 'active_support/core_ext/string/starts_ends_with'
2
+
3
+ require 'handlebars_assets/tilt_handlebars'
4
+ require 'handlebars_assets/handlebars'
5
+
6
+ require 'test/unit'
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.0.3
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-01 00:00:00.000000000Z
12
+ date: 2011-09-09 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: therubyracer
16
- requirement: &70230656005660 !ruby/object:Gem::Requirement
15
+ name: execjs
16
+ requirement: &70162067012660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70230656005660
24
+ version_requirements: *70162067012660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: tilt
27
- requirement: &70230656005240 !ruby/object:Gem::Requirement
27
+ requirement: &70162067012160 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,40 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70230656005240
35
+ version_requirements: *70162067012160
36
+ - !ruby/object:Gem::Dependency
37
+ name: activesupport
38
+ requirement: &70162067011380 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 3.1.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70162067011380
47
+ - !ruby/object:Gem::Dependency
48
+ name: therubyracer
49
+ requirement: &70162067010880 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70162067010880
58
+ - !ruby/object:Gem::Dependency
59
+ name: rake
60
+ requirement: &70162067010420 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70162067010420
36
69
  description: Compile Handlebars templates in the Rails asset pipeline.
37
70
  email:
38
71
  - leshill@gmail.com
@@ -44,15 +77,17 @@ files:
44
77
  - .rvmrc
45
78
  - Gemfile
46
79
  - Gemfile.lock
80
+ - HISTORY.md
47
81
  - README.md
48
82
  - Rakefile
49
83
  - handlebars_assets.gemspec
50
84
  - lib/handlebars_assets.rb
51
85
  - lib/handlebars_assets/engine.rb
52
86
  - lib/handlebars_assets/handlebars.rb
53
- - lib/handlebars_assets/loader.rb
54
87
  - lib/handlebars_assets/tilt_handlebars.rb
55
88
  - lib/handlebars_assets/version.rb
89
+ - test/handlebars_assets/tilt_handlebars_test.rb
90
+ - test/test_helper.rb
56
91
  - vendor/assets/javascripts/handlebars.js
57
92
  homepage: ''
58
93
  licenses: []
@@ -74,8 +109,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
109
  version: '0'
75
110
  requirements: []
76
111
  rubyforge_project: handlebars_assets
77
- rubygems_version: 1.8.6
112
+ rubygems_version: 1.8.10
78
113
  signing_key:
79
114
  specification_version: 3
80
115
  summary: Compile Handlebars templates in the Rails asset pipeline.
81
- test_files: []
116
+ test_files:
117
+ - test/handlebars_assets/tilt_handlebars_test.rb
118
+ - test/test_helper.rb
@@ -1,28 +0,0 @@
1
- # Based on https://github.com/cowboyd/handlebars.rb
2
- require 'v8'
3
- require 'pathname'
4
-
5
- module HandlebarsAssets
6
- class Loader
7
- def initialize
8
- @cxt = V8::Context.new
9
- @path = Pathname(__FILE__).dirname.join('..','..','vendor','assets','javascripts')
10
- @modules = {}
11
- end
12
-
13
- def require(modname)
14
- unless mod = @modules[modname]
15
- filename = modname =~ /\.js$/ ? modname : "#{modname}.js"
16
- filepath = @path.join(filename)
17
- fail LoadError, "no such file: #{filename}" unless filepath.exist?
18
- load = @cxt.eval("(function(require, module, exports) {#{File.read(filepath)} module.exports = Handlebars;})", filepath.expand_path)
19
- object = @cxt['Object']
20
- mod = object.new
21
- mod['exports'] = object.new
22
- @modules[modname] = mod
23
- load.call(method(:require), mod, mod.exports)
24
- end
25
- return mod.exports
26
- end
27
- end
28
- end