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.
- data/Gemfile.lock +13 -4
- data/HISTORY.md +3 -0
- data/README.md +4 -0
- data/Rakefile +6 -0
- data/handlebars_assets.gemspec +5 -1
- data/lib/handlebars_assets.rb +0 -1
- data/lib/handlebars_assets/handlebars.rb +22 -10
- data/lib/handlebars_assets/version.rb +1 -1
- data/test/handlebars_assets/tilt_handlebars_test.rb +31 -0
- data/test/test_helper.rb +6 -0
- metadata +47 -10
- data/lib/handlebars_assets/loader.rb +0 -28
data/Gemfile.lock
CHANGED
@@ -1,20 +1,29 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
handlebars_assets (0.0
|
5
|
-
|
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
|
-
|
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.
|
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
|
data/HISTORY.md
ADDED
data/README.md
CHANGED
data/Rakefile
CHANGED
data/handlebars_assets.gemspec
CHANGED
@@ -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 "
|
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
|
data/lib/handlebars_assets.rb
CHANGED
@@ -1,17 +1,29 @@
|
|
1
|
-
# Based on https://github.com/
|
1
|
+
# Based on https://github.com/josh/ruby-coffee-script
|
2
|
+
require 'execjs'
|
3
|
+
require 'pathname'
|
4
|
+
|
2
5
|
module HandlebarsAssets
|
3
|
-
|
4
|
-
|
6
|
+
class Handlebars
|
7
|
+
class << self
|
8
|
+
def precompile(*args)
|
9
|
+
context.call('Handlebars.precompile', *args)
|
10
|
+
end
|
5
11
|
|
6
|
-
|
12
|
+
private
|
13
|
+
def context
|
14
|
+
@context ||= ExecJS.compile(source)
|
15
|
+
end
|
7
16
|
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
-
|
13
|
-
|
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
|
@@ -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
|
data/test/test_helper.rb
ADDED
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
|
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-
|
12
|
+
date: 2011-09-09 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
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: *
|
24
|
+
version_requirements: *70162067012660
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: tilt
|
27
|
-
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: *
|
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.
|
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
|