steering 1.1.1 → 1.2.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/README.md +14 -0
- data/lib/steering.rb +14 -3
- data/lib/steering/version.rb +1 -1
- data/test/fixtures/bar.hb +1 -0
- data/test/fixtures/foo.hb +1 -0
- data/test/fixtures/hello.handlebars +1 -0
- data/test/steering_test.rb +52 -7
- metadata +9 -3
data/README.md
CHANGED
@@ -73,6 +73,20 @@ Report bugs on the [GitHub issue tracker](http://github.com/pixeltrix/steering/i
|
|
73
73
|
|
74
74
|
## Changelog
|
75
75
|
|
76
|
+
### 1.2.0
|
77
|
+
|
78
|
+
* The `compile_to_file` method now takes an options hash which takes the following options:
|
79
|
+
|
80
|
+
`:extension` - the extension of the file to which the template is compiled
|
81
|
+
`:partial` - register the template as a partial with Handlebars
|
82
|
+
|
83
|
+
*Daniel Demmel*
|
84
|
+
|
85
|
+
* The `render` method now takes `extra` argument which is passed on to `context_for`.
|
86
|
+
This can be used to pass precompiled partials or helpers to the ExecJS context.
|
87
|
+
|
88
|
+
*Daniel Demmel*
|
89
|
+
|
76
90
|
### 1.1.1
|
77
91
|
|
78
92
|
* Bumped steering-source version to 1.0.rc.1
|
data/lib/steering.rb
CHANGED
@@ -48,12 +48,21 @@ module Steering
|
|
48
48
|
Source.context.call("Handlebars.precompile", template, { :knownHelpers => known_helpers })
|
49
49
|
end
|
50
50
|
|
51
|
-
def compile_to_file(template, file,
|
51
|
+
def compile_to_file(template, file, options = {})
|
52
|
+
if options.is_a?(String)
|
53
|
+
extension = options
|
54
|
+
partial = false
|
55
|
+
else
|
56
|
+
extension = options[:extension] || ".handlebars"
|
57
|
+
partial = options[:partial] || false
|
58
|
+
end
|
59
|
+
|
52
60
|
File.open(file, 'w') do |f|
|
53
61
|
name = File.basename(template, extension)
|
54
62
|
template = File.read(template)
|
55
63
|
f.write("\nHandlebars.templates = Handlebars.templates || {};")
|
56
64
|
f.write("\nHandlebars.templates['#{name}'] = Handlebars.template(#{compile(template)});\n")
|
65
|
+
f.write("Handlebars.registerPartial('#{name}', Handlebars.templates['#{name}']);\n") if partial
|
57
66
|
end
|
58
67
|
end
|
59
68
|
|
@@ -65,8 +74,10 @@ module Steering
|
|
65
74
|
Source.known_helpers
|
66
75
|
end
|
67
76
|
|
68
|
-
def render(template,
|
69
|
-
|
77
|
+
def render(template, *args)
|
78
|
+
locals = args.last.is_a?(Hash) ? args.pop : {}
|
79
|
+
extra = args.first.to_s
|
80
|
+
context_for(template, extra).call("template", locals)
|
70
81
|
end
|
71
82
|
end
|
72
83
|
end
|
data/lib/steering/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
Hello {{ name }}
|
@@ -0,0 +1 @@
|
|
1
|
+
Hello {{ name }}
|
@@ -0,0 +1 @@
|
|
1
|
+
Hello {{ name }}
|
data/test/steering_test.rb
CHANGED
@@ -3,11 +3,14 @@ require "stringio"
|
|
3
3
|
require "test/unit"
|
4
4
|
|
5
5
|
class SteeringTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
FIXTURE_PATH = File.expand_path("../fixtures", __FILE__)
|
7
|
+
JS_FUNCTION_PATTERN = /^function\s*\(.*?\)\s*\{.*\}$/m
|
8
|
+
HB_PREAMBLE = /Handlebars\.templates\s*=\s*Handlebars.templates\s\|\|\s*\{\};/
|
9
|
+
HB_ASSIGNMENT = /Handlebars\.templates\['\w+'\]\s*=/
|
10
|
+
HB_TEMPLATE = /Handlebars\.template\(function\s*\(.*?\)\s*\{.*\}\);/m
|
11
|
+
HB_PARTIAL = /Handlebars\.registerPartial\('\w+',\sHandlebars\.templates\['\w+'\]\);/
|
12
|
+
HB_TEMPLATE_PATTERN = /^\n#{HB_PREAMBLE}\n#{HB_ASSIGNMENT}\s*#{HB_TEMPLATE}\s*$/m
|
13
|
+
HB_TEMPLATE_PATTERN_PARTIAL = /^\n#{HB_PREAMBLE}\n#{HB_ASSIGNMENT}\s*#{HB_TEMPLATE}\n#{HB_PARTIAL}\n*$/m
|
11
14
|
|
12
15
|
def test_version
|
13
16
|
assert_equal Steering::Source::VERSION, Steering.version
|
@@ -29,8 +32,8 @@ class SteeringTest < Test::Unit::TestCase
|
|
29
32
|
end
|
30
33
|
|
31
34
|
def test_compile_file
|
32
|
-
file = "
|
33
|
-
compiled_file = "
|
35
|
+
file = fixture_path("hello.handlebars")
|
36
|
+
compiled_file = fixture_path("hello.js")
|
34
37
|
|
35
38
|
Steering.compile_to_file(file, compiled_file)
|
36
39
|
compiled_source = File.read(compiled_file)
|
@@ -40,6 +43,42 @@ class SteeringTest < Test::Unit::TestCase
|
|
40
43
|
File.delete(compiled_file) if File.exists?(compiled_file)
|
41
44
|
end
|
42
45
|
|
46
|
+
def test_compile_file_extension
|
47
|
+
file = fixture_path("foo.hb")
|
48
|
+
compiled_file = fixture_path("foo.js")
|
49
|
+
|
50
|
+
Steering.compile_to_file(file, compiled_file, ".hb")
|
51
|
+
compiled_source = File.read(compiled_file)
|
52
|
+
|
53
|
+
assert_match HB_TEMPLATE_PATTERN, compiled_source
|
54
|
+
ensure
|
55
|
+
File.delete(compiled_file) if File.exists?(compiled_file)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_compile_file_extension_option
|
59
|
+
file = fixture_path("bar.hb")
|
60
|
+
compiled_file = fixture_path("bar.js")
|
61
|
+
|
62
|
+
Steering.compile_to_file(file, compiled_file, :extension => ".hb")
|
63
|
+
compiled_source = File.read(compiled_file)
|
64
|
+
|
65
|
+
assert_match HB_TEMPLATE_PATTERN, compiled_source
|
66
|
+
ensure
|
67
|
+
File.delete(compiled_file) if File.exists?(compiled_file)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_compile_file_partial
|
71
|
+
file = fixture_path("hello.handlebars")
|
72
|
+
compiled_file = fixture_path("hello.js")
|
73
|
+
|
74
|
+
Steering.compile_to_file(file, compiled_file, :partial => true)
|
75
|
+
compiled_source = File.read(compiled_file)
|
76
|
+
|
77
|
+
assert_match HB_TEMPLATE_PATTERN_PARTIAL, compiled_source
|
78
|
+
ensure
|
79
|
+
File.delete(compiled_file) if File.exists?(compiled_file)
|
80
|
+
end
|
81
|
+
|
43
82
|
def test_context_for
|
44
83
|
context = Steering.context_for("Hello {{ name }}")
|
45
84
|
assert_equal "Hello Andrew", context.call("template", :name => "Andrew")
|
@@ -59,4 +98,10 @@ class SteeringTest < Test::Unit::TestCase
|
|
59
98
|
assert_equal "bar", e.message
|
60
99
|
end
|
61
100
|
end
|
101
|
+
|
102
|
+
private
|
103
|
+
|
104
|
+
def fixture_path(path)
|
105
|
+
File.join(FIXTURE_PATH, path)
|
106
|
+
end
|
62
107
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steering
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -61,6 +61,9 @@ files:
|
|
61
61
|
- lib/steering.rb
|
62
62
|
- lib/steering/version.rb
|
63
63
|
- steering.gemspec
|
64
|
+
- test/fixtures/bar.hb
|
65
|
+
- test/fixtures/foo.hb
|
66
|
+
- test/fixtures/hello.handlebars
|
64
67
|
- test/steering_test.rb
|
65
68
|
homepage: https://github.com/pixeltrix/steering
|
66
69
|
licenses: []
|
@@ -76,7 +79,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
79
|
version: '0'
|
77
80
|
segments:
|
78
81
|
- 0
|
79
|
-
hash:
|
82
|
+
hash: 113054895620168692
|
80
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
84
|
none: false
|
82
85
|
requirements:
|
@@ -85,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
88
|
version: '0'
|
86
89
|
segments:
|
87
90
|
- 0
|
88
|
-
hash:
|
91
|
+
hash: 113054895620168692
|
89
92
|
requirements: []
|
90
93
|
rubyforge_project:
|
91
94
|
rubygems_version: 1.8.24
|
@@ -93,4 +96,7 @@ signing_key:
|
|
93
96
|
specification_version: 3
|
94
97
|
summary: Ruby Handlebars.js Compiler
|
95
98
|
test_files:
|
99
|
+
- test/fixtures/bar.hb
|
100
|
+
- test/fixtures/foo.hb
|
101
|
+
- test/fixtures/hello.handlebars
|
96
102
|
- test/steering_test.rb
|