temple 0.7.5 → 0.7.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -0
- data/CHANGES +4 -0
- data/EXPRESSIONS.md +1 -1
- data/README.md +7 -3
- data/lib/temple/mixins/engine_dsl.rb +16 -1
- data/lib/temple/version.rb +1 -1
- data/test/test_engine.rb +42 -27
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49450d407bc6ae1762271d1ece670cdb9913b787
|
4
|
+
data.tar.gz: 946bbd14856936cb2d7dbbb431ecc8a9df55f26a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26a6a8e828240ea1293548173b2816b4378fce9f1609b946c48317652b02c2eb3e29aec99570e313de2a2155cab975cdc135c3529a209be693f6a9e8279ce97a
|
7
|
+
data.tar.gz: 542489791fab203a48b9810def3718e6416c00be2aa0a86587f4234b4f8d292977e29b4322b709ed2d9164ed1d21c71900c1feb58863a6c74952688622a7a954
|
data/.travis.yml
CHANGED
data/CHANGES
CHANGED
data/EXPRESSIONS.md
CHANGED
data/README.md
CHANGED
@@ -23,6 +23,7 @@ Links
|
|
23
23
|
* API documentation:
|
24
24
|
* Latest Gem: <http://rubydoc.info/gems/temple/frames>
|
25
25
|
* GitHub master: <http://rubydoc.info/github/judofyr/temple/master/frames>
|
26
|
+
* Abstractions: <http://github.com/judofyr/temple/blob/master/EXPRESSIONS.md>
|
26
27
|
|
27
28
|
Overview
|
28
29
|
--------
|
@@ -123,7 +124,7 @@ continue to use the HTML abstraction. Maybe you even want to write your
|
|
123
124
|
compiler in another language? Sexps are easily serialized and if you don't
|
124
125
|
mind working across processes, it's not a problem at all.
|
125
126
|
|
126
|
-
All abstractions used by Temple are documented in
|
127
|
+
All abstractions used by Temple are documented in [EXPRESSIONS.md](EXPRESSIONS.md).
|
127
128
|
|
128
129
|
Compilers
|
129
130
|
---------
|
@@ -246,10 +247,13 @@ as following:
|
|
246
247
|
Engines using Temple
|
247
248
|
--------------------
|
248
249
|
|
249
|
-
* [Slim](
|
250
|
-
* [
|
250
|
+
* [Slim](https://github.com/slim-template/slim)
|
251
|
+
* [Hamlit](https://github.com/k0kubun/hamlit)
|
252
|
+
* [Faml](https://github.com/eagletmt/faml)
|
253
|
+
* [Sal](https://github.com/stonean/sal.rb)
|
251
254
|
* [Temple-Mustache (Example implementation)](https://github.com/minad/temple-mustache)
|
252
255
|
* Temple ERB example implementation (Temple::ERB::Template)
|
256
|
+
* [WLang](https://github.com/blambeau/wlang)
|
253
257
|
|
254
258
|
Acknowledgements
|
255
259
|
----------------
|
@@ -86,7 +86,22 @@ module Temple
|
|
86
86
|
method_name = "FILTER #{name}"
|
87
87
|
c = Class === self ? self : singleton_class
|
88
88
|
filter = c.class_eval { define_method(method_name, &filter); instance_method(method_name) }
|
89
|
-
proc
|
89
|
+
proc do |engine|
|
90
|
+
if filter.arity == 1
|
91
|
+
# the proc takes one argument, e.g. use(:Filter) {|exp| exp }
|
92
|
+
filter.bind(engine)
|
93
|
+
else
|
94
|
+
f = filter.bind(engine).call
|
95
|
+
if f.respond_to? :call
|
96
|
+
# the proc returns a callable object, e.g. use(:Filter) { Filter.new }
|
97
|
+
f
|
98
|
+
else
|
99
|
+
raise(ArgumentError, 'Proc or blocks must return a Callable or a Class') unless f.respond_to? :new
|
100
|
+
# the proc returns a class, e.g. use(:Filter) { Filter }
|
101
|
+
f.new(f.respond_to?(:options) ? engine.options.to_hash.select {|k,v| f.options.valid_key?(k) } : engine.options)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
90
105
|
end
|
91
106
|
|
92
107
|
def chain_element(args, block)
|
data/lib/temple/version.rb
CHANGED
data/test/test_engine.rb
CHANGED
@@ -13,6 +13,15 @@ class Callable2
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
class MySpecialFilter
|
17
|
+
def initialize(opts = {})
|
18
|
+
end
|
19
|
+
|
20
|
+
def call(exp)
|
21
|
+
exp
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
16
25
|
class TestEngine < Temple::Engine
|
17
26
|
use(:Parser) do |input|
|
18
27
|
[:static, input]
|
@@ -22,13 +31,14 @@ class TestEngine < Temple::Engine
|
|
22
31
|
use Temple::HTML::Pretty, pretty: true
|
23
32
|
filter :MultiFlattener
|
24
33
|
generator :ArrayBuffer
|
34
|
+
use(:BeforeBeforeLast) { MySpecialFilter }
|
25
35
|
use :BeforeLast, Callable1.new
|
26
36
|
use(:Last) { Callable2.new }
|
27
37
|
end
|
28
38
|
|
29
39
|
describe Temple::Engine do
|
30
40
|
it 'should build chain' do
|
31
|
-
TestEngine.chain.size.should.equal
|
41
|
+
TestEngine.chain.size.should.equal 9
|
32
42
|
|
33
43
|
TestEngine.chain[0].first.should.equal :Parser
|
34
44
|
TestEngine.chain[0].size.should.equal 2
|
@@ -54,13 +64,17 @@ describe Temple::Engine do
|
|
54
64
|
TestEngine.chain[5].size.should.equal 2
|
55
65
|
TestEngine.chain[5].last.should.be.instance_of Proc
|
56
66
|
|
57
|
-
TestEngine.chain[6].first.should.equal :
|
67
|
+
TestEngine.chain[6].first.should.equal :BeforeBeforeLast
|
58
68
|
TestEngine.chain[6].size.should.equal 2
|
59
69
|
TestEngine.chain[6].last.should.be.instance_of Proc
|
60
70
|
|
61
|
-
TestEngine.chain[7].first.should.equal :
|
71
|
+
TestEngine.chain[7].first.should.equal :BeforeLast
|
62
72
|
TestEngine.chain[7].size.should.equal 2
|
63
73
|
TestEngine.chain[7].last.should.be.instance_of Proc
|
74
|
+
|
75
|
+
TestEngine.chain[8].first.should.equal :Last
|
76
|
+
TestEngine.chain[8].size.should.equal 2
|
77
|
+
TestEngine.chain[8].last.should.be.instance_of Proc
|
64
78
|
end
|
65
79
|
|
66
80
|
it 'should instantiate chain' do
|
@@ -71,48 +85,49 @@ describe Temple::Engine do
|
|
71
85
|
call_chain[3].should.be.instance_of Temple::HTML::Pretty
|
72
86
|
call_chain[4].should.be.instance_of Temple::Filters::MultiFlattener
|
73
87
|
call_chain[5].should.be.instance_of Temple::Generators::ArrayBuffer
|
74
|
-
call_chain[6].should.be.instance_of
|
75
|
-
call_chain[7].should.be.instance_of
|
88
|
+
call_chain[6].should.be.instance_of MySpecialFilter
|
89
|
+
call_chain[7].should.be.instance_of Callable1
|
90
|
+
call_chain[8].should.be.instance_of Callable2
|
76
91
|
end
|
77
92
|
|
78
93
|
it 'should have #append' do
|
79
94
|
engine = TestEngine.new
|
80
95
|
call_chain = engine.send(:call_chain)
|
81
|
-
call_chain.size.should.equal
|
96
|
+
call_chain.size.should.equal 9
|
82
97
|
|
83
98
|
engine.append :MyFilter3 do |exp|
|
84
99
|
exp
|
85
100
|
end
|
86
101
|
|
87
|
-
TestEngine.chain.size.should.equal
|
88
|
-
engine.chain.size.should.equal
|
89
|
-
engine.chain[
|
90
|
-
engine.chain[
|
91
|
-
engine.chain[
|
102
|
+
TestEngine.chain.size.should.equal 9
|
103
|
+
engine.chain.size.should.equal 10
|
104
|
+
engine.chain[9].first.should.equal :MyFilter3
|
105
|
+
engine.chain[9].size.should.equal 2
|
106
|
+
engine.chain[9].last.should.be.instance_of Proc
|
92
107
|
|
93
108
|
call_chain = engine.send(:call_chain)
|
94
|
-
call_chain.size.should.equal
|
95
|
-
call_chain[
|
109
|
+
call_chain.size.should.equal 10
|
110
|
+
call_chain[9].should.be.instance_of Method
|
96
111
|
end
|
97
112
|
|
98
113
|
it 'should have #prepend' do
|
99
114
|
engine = TestEngine.new
|
100
115
|
call_chain = engine.send(:call_chain)
|
101
|
-
call_chain.size.should.equal
|
116
|
+
call_chain.size.should.equal 9
|
102
117
|
|
103
118
|
engine.prepend :MyFilter0 do |exp|
|
104
119
|
exp
|
105
120
|
end
|
106
121
|
|
107
|
-
TestEngine.chain.size.should.equal
|
108
|
-
engine.chain.size.should.equal
|
122
|
+
TestEngine.chain.size.should.equal 9
|
123
|
+
engine.chain.size.should.equal 10
|
109
124
|
engine.chain[0].first.should.equal :MyFilter0
|
110
125
|
engine.chain[0].size.should.equal 2
|
111
126
|
engine.chain[0].last.should.be.instance_of Proc
|
112
127
|
engine.chain[1].first.should.equal :Parser
|
113
128
|
|
114
129
|
call_chain = engine.send(:call_chain)
|
115
|
-
call_chain.size.should.equal
|
130
|
+
call_chain.size.should.equal 10
|
116
131
|
call_chain[0].should.be.instance_of Method
|
117
132
|
end
|
118
133
|
|
@@ -121,8 +136,8 @@ describe Temple::Engine do
|
|
121
136
|
engine.after :Parser, :MyFilter0 do |exp|
|
122
137
|
exp
|
123
138
|
end
|
124
|
-
TestEngine.chain.size.should.equal
|
125
|
-
engine.chain.size.should.equal
|
139
|
+
TestEngine.chain.size.should.equal 9
|
140
|
+
engine.chain.size.should.equal 10
|
126
141
|
engine.chain[0].first.should.equal :Parser
|
127
142
|
engine.chain[1].first.should.equal :MyFilter0
|
128
143
|
engine.chain[2].first.should.equal :MyFilter1
|
@@ -133,8 +148,8 @@ describe Temple::Engine do
|
|
133
148
|
engine.before :MyFilter1, :MyFilter0 do |exp|
|
134
149
|
exp
|
135
150
|
end
|
136
|
-
TestEngine.chain.size.should.equal
|
137
|
-
engine.chain.size.should.equal
|
151
|
+
TestEngine.chain.size.should.equal 9
|
152
|
+
engine.chain.size.should.equal 10
|
138
153
|
engine.chain[0].first.should.equal :Parser
|
139
154
|
engine.chain[1].first.should.equal :MyFilter0
|
140
155
|
engine.chain[2].first.should.equal :MyFilter1
|
@@ -143,8 +158,8 @@ describe Temple::Engine do
|
|
143
158
|
it 'should have #remove' do
|
144
159
|
engine = TestEngine.new
|
145
160
|
engine.remove :MyFilter1
|
146
|
-
TestEngine.chain.size.should.equal
|
147
|
-
engine.chain.size.should.equal
|
161
|
+
TestEngine.chain.size.should.equal 9
|
162
|
+
engine.chain.size.should.equal 8
|
148
163
|
engine.chain[0].first.should.equal :Parser
|
149
164
|
engine.chain[1].first.should.equal :MyFilter2
|
150
165
|
|
@@ -158,17 +173,17 @@ describe Temple::Engine do
|
|
158
173
|
engine.replace :Parser, :MyParser do |exp|
|
159
174
|
exp
|
160
175
|
end
|
161
|
-
engine.chain.size.should.equal
|
176
|
+
engine.chain.size.should.equal 9
|
162
177
|
engine.chain[0].first.should.equal :MyParser
|
163
178
|
end
|
164
179
|
|
165
180
|
it 'should work with inheritance' do
|
166
181
|
inherited_engine = Class.new(TestEngine)
|
167
|
-
inherited_engine.chain.size.should.equal
|
182
|
+
inherited_engine.chain.size.should.equal 9
|
168
183
|
inherited_engine.append :MyFilter3 do |exp|
|
169
184
|
exp
|
170
185
|
end
|
171
|
-
inherited_engine.chain.size.should.equal
|
172
|
-
TestEngine.chain.size.should.equal
|
186
|
+
inherited_engine.chain.size.should.equal 10
|
187
|
+
TestEngine.chain.size.should.equal 9
|
173
188
|
end
|
174
189
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: temple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Magnus Holm
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-06-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: tilt
|