inversion 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/ChangeLog +46 -1
- data/History.rdoc +10 -0
- data/Rakefile +3 -2
- data/lib/inversion.rb +2 -2
- data/lib/inversion/template.rb +16 -2
- data/lib/inversion/template/fortag.rb +6 -1
- data/spec/inversion/template/fortag_spec.rb +132 -0
- data/spec/inversion/template_spec.rb +41 -1
- metadata +71 -72
- metadata.gz.sig +1 -2
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,8 +1,53 @@
|
|
1
|
+
2012-03-13 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* History.rdoc, lib/inversion.rb:
|
4
|
+
Bump the minor version, update History.
|
5
|
+
[2397134edcb3] [tip]
|
6
|
+
|
7
|
+
* lib/inversion/template/fortag.rb, manual/src/tags.page,
|
8
|
+
spec/inversion/template/fortag_spec.rb:
|
9
|
+
Fix a bug with "for" tag iteration over complex data structures
|
10
|
+
[6aa4c3301803]
|
11
|
+
|
12
|
+
2012-03-12 Michael Granger <ged@FaerieMUD.org>
|
13
|
+
|
14
|
+
* .rvm.gems, .rvmrc:
|
15
|
+
Update .rvm files
|
16
|
+
[6fb2d6971357] [github/master]
|
17
|
+
|
18
|
+
2012-03-05 Mahlon E. Smith <mahlon@martini.nu>
|
19
|
+
|
20
|
+
* lib/inversion/template.rb, spec/inversion/template_spec.rb:
|
21
|
+
Err, no. Lets try that again. 10,000 monkeys pounding away at
|
22
|
+
keyboards are responsible. Or maybe just one.
|
23
|
+
[7c42e6b20c11]
|
24
|
+
|
25
|
+
* lib/inversion/template.rb, manual/src/templates.page,
|
26
|
+
spec/inversion/template_spec.rb:
|
27
|
+
Add a configurable delay for stat() on file-based templates, if your
|
28
|
+
application is auto reloading changes and you're worried about the
|
29
|
+
I/O piling up. "template.reload if template.changed?" -- zesty.
|
30
|
+
[51e63e419025]
|
31
|
+
|
32
|
+
2012-02-17 Mahlon E. Smith <mahlon@martini.nu>
|
33
|
+
|
34
|
+
* .rvmrc, lib/inversion/template.rb, spec/inversion/template_spec.rb:
|
35
|
+
Carry options that are set in the global configuration across to the
|
36
|
+
parser.
|
37
|
+
[3dd947d8e4d9]
|
38
|
+
|
39
|
+
2012-02-10 Mahlon E. Smith <mahlon@martini.nu>
|
40
|
+
|
41
|
+
* .rvm.gems, Rakefile, lib/inversion/template.rb:
|
42
|
+
Guard against nil for Inversion::Template config when merging. Bump
|
43
|
+
rspec version, add rdoc/rspec to the RVM gemlist file.
|
44
|
+
[e9ef24491f97]
|
45
|
+
|
1
46
|
2012-01-05 Michael Granger <ged@FaerieMUD.org>
|
2
47
|
|
3
48
|
* .hgtags:
|
4
49
|
Added tag v0.5.0 for changeset 0f4e4aa78d9c
|
5
|
-
[cc3f12489745]
|
50
|
+
[cc3f12489745]
|
6
51
|
|
7
52
|
* .hgsigs:
|
8
53
|
Added signature for changeset 11fb6ed08994
|
data/History.rdoc
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== v0.6.0 [2012-03-13] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
- Fix a bug with "for" tag iteration over complex data structures
|
4
|
+
- Add a configurable delay for checking for changes on file-based
|
5
|
+
templates to avoid a stat() per request.
|
6
|
+
- Carry options that are set in the global configuration across to the
|
7
|
+
parser.
|
8
|
+
- Handle Configurability's configure-with-defaults call.
|
9
|
+
|
10
|
+
|
1
11
|
== v0.5.0 [2012-01-05] Michael Granger <ged@FaerieMUD.org>
|
2
12
|
|
3
13
|
Added an encoding option to Inversion::Template.load for
|
data/Rakefile
CHANGED
@@ -20,8 +20,9 @@ hoespec = Hoe.spec 'inversion' do
|
|
20
20
|
self.developer 'Michael Granger', 'ged@FaerieMUD.org'
|
21
21
|
self.developer 'Mahlon E. Smith', 'mahlon@martini.nu'
|
22
22
|
|
23
|
-
self.dependency 'ripper', '~> 1.0',
|
24
|
-
self.dependency '
|
23
|
+
self.dependency 'ripper', '~> 1.0', :development unless defined?( Encoding )
|
24
|
+
self.dependency 'rdoc', '~> 3.12', :development
|
25
|
+
self.dependency 'rspec', '~> 2.8', :development
|
25
26
|
self.dependency 'tilt', '~> 1.3', :development
|
26
27
|
self.dependency 'sinatra', '~> 1.2', :development
|
27
28
|
self.dependency 'rack-test', '~> 0.6', :development
|
data/lib/inversion.rb
CHANGED
@@ -26,10 +26,10 @@ module Inversion
|
|
26
26
|
require 'inversion/monkeypatches'
|
27
27
|
|
28
28
|
# Library version constant
|
29
|
-
VERSION = '0.
|
29
|
+
VERSION = '0.6.0'
|
30
30
|
|
31
31
|
# Version-control revision constant
|
32
|
-
REVISION = %q$Revision:
|
32
|
+
REVISION = %q$Revision: 2397134edcb3 $
|
33
33
|
|
34
34
|
#
|
35
35
|
# Logging
|
data/lib/inversion/template.rb
CHANGED
@@ -52,6 +52,7 @@ class Inversion::Template
|
|
52
52
|
:template_paths => [],
|
53
53
|
:escape_format => :html,
|
54
54
|
:strip_tag_lines => true,
|
55
|
+
:stat_delay => 0
|
55
56
|
}
|
56
57
|
|
57
58
|
|
@@ -62,6 +63,7 @@ class Inversion::Template
|
|
62
63
|
|
63
64
|
### Configure the templating system.
|
64
65
|
def self::configure( config )
|
66
|
+
return unless config
|
65
67
|
Inversion.log.debug "Merging config %p with current config %p" % [ config, self.config ]
|
66
68
|
self.config = self.config.merge( config )
|
67
69
|
end
|
@@ -122,6 +124,9 @@ class Inversion::Template
|
|
122
124
|
self.log.debug "Parse state is: %p" % [ parsestate ]
|
123
125
|
end
|
124
126
|
|
127
|
+
# carry global template options to the parser.
|
128
|
+
opts = self.class.config.merge( opts )
|
129
|
+
|
125
130
|
@source = source
|
126
131
|
@parser = Inversion::Parser.new( self, opts )
|
127
132
|
@node_tree = [] # Parser expects this to always be an Array
|
@@ -130,6 +135,7 @@ class Inversion::Template
|
|
130
135
|
@attributes = {}
|
131
136
|
@source_file = nil
|
132
137
|
@created_at = Time.now
|
138
|
+
@last_checked = @created_at
|
133
139
|
|
134
140
|
self.parse( source, parsestate )
|
135
141
|
end
|
@@ -158,7 +164,7 @@ class Inversion::Template
|
|
158
164
|
### If the template was loaded from a file, reload and reparse it from the same file.
|
159
165
|
def reload
|
160
166
|
file = self.source_file or
|
161
|
-
raise Inversion::Error, "template was not loaded from a file"
|
167
|
+
raise Inversion::Error, "template was not loaded from a file"
|
162
168
|
|
163
169
|
self.log.debug "Reloading from %s" % [ file ]
|
164
170
|
source = file.read
|
@@ -170,7 +176,15 @@ class Inversion::Template
|
|
170
176
|
### is after the time the template was created.
|
171
177
|
def changed?
|
172
178
|
return false unless file = self.source_file
|
173
|
-
|
179
|
+
now = Time.now
|
180
|
+
|
181
|
+
if now > ( @last_checked + self.options[ :stat_delay ].to_i )
|
182
|
+
if file.mtime > @last_checked
|
183
|
+
@last_checked = now
|
184
|
+
return true
|
185
|
+
end
|
186
|
+
end
|
187
|
+
return false
|
174
188
|
end
|
175
189
|
|
176
190
|
|
@@ -83,10 +83,15 @@ class Inversion::Template::ForTag < Inversion::Template::CodeTag
|
|
83
83
|
### contents for each iteration.
|
84
84
|
def render( state )
|
85
85
|
lvalue = state.eval( self.enumerator ) or return nil
|
86
|
+
lvalue = lvalue.each unless lvalue.respond_to?( :next )
|
86
87
|
|
87
88
|
self.log.debug "Rendering %p via block args: %p" % [ lvalue, self.block_args ]
|
88
89
|
|
89
|
-
|
90
|
+
# Loop will exit as soon as the Enumerator runs out of elements
|
91
|
+
loop do
|
92
|
+
args = Array( lvalue.next )
|
93
|
+
self.log.debug " iterated block args are: %p" % [ args ]
|
94
|
+
|
90
95
|
# Turn the block arguments into an overrides hash by zipping up
|
91
96
|
# the arguments names and values
|
92
97
|
overrides = Hash[ self.block_args.zip(args) ]
|
@@ -11,6 +11,7 @@ BEGIN {
|
|
11
11
|
}
|
12
12
|
|
13
13
|
require 'rspec'
|
14
|
+
require 'ostruct'
|
14
15
|
require 'spec/lib/helpers'
|
15
16
|
require 'inversion/template/fortag'
|
16
17
|
require 'inversion/template/attrtag'
|
@@ -90,6 +91,19 @@ describe Inversion::Template::ForTag do
|
|
90
91
|
render_state.to_s.should == "[x, o][x, x][o, o][o, x]"
|
91
92
|
end
|
92
93
|
|
94
|
+
it "supports iterating over a range" do
|
95
|
+
|
96
|
+
# <?for omarker in tic ?><?for imarker in tac ?>
|
97
|
+
tag = Inversion::Template::ForTag.new( 'i in rng' )
|
98
|
+
|
99
|
+
tag << Inversion::Template::AttrTag.new( 'i' )
|
100
|
+
tag << Inversion::Template::TextNode.new( ' ' )
|
101
|
+
|
102
|
+
render_state = Inversion::RenderState.new( :rng => 0..10 )
|
103
|
+
tag.render( render_state )
|
104
|
+
render_state.to_s.should == "0 1 2 3 4 5 6 7 8 9 10 "
|
105
|
+
end
|
106
|
+
|
93
107
|
it "raises a ParseError if a keyword other than 'in' is used" do
|
94
108
|
expect {
|
95
109
|
Inversion::Template::ForTag.new( 'foo begin bar' )
|
@@ -112,6 +126,124 @@ describe Inversion::Template::ForTag do
|
|
112
126
|
tag.block_args.should == [ :splip, :splorp, :sploop ]
|
113
127
|
tag.enumerator.should == 'splap'
|
114
128
|
end
|
129
|
+
|
130
|
+
it "can be expanded into multiple block arguments from hash pairs" do
|
131
|
+
tag = Inversion::Template::ForTag.new( 'key, value in splap' )
|
132
|
+
|
133
|
+
# [<?attr key?> translates to <?attr value?>]
|
134
|
+
tag << Inversion::Template::TextNode.new( '[' )
|
135
|
+
tag << Inversion::Template::AttrTag.new( 'key' )
|
136
|
+
tag << Inversion::Template::TextNode.new( ' translates to ' )
|
137
|
+
tag << Inversion::Template::AttrTag.new( 'value' )
|
138
|
+
tag << Inversion::Template::TextNode.new( ']' )
|
139
|
+
|
140
|
+
tag.block_args.should == [ :key, :value ]
|
141
|
+
tag.enumerator.should == 'splap'
|
142
|
+
|
143
|
+
render_state = Inversion::RenderState.new( :splap => {'one' => 'uno', 'two' => 'dos'} )
|
144
|
+
tag.render( render_state )
|
145
|
+
|
146
|
+
render_state.to_s.should == '[one translates to uno][two translates to dos]'
|
147
|
+
end
|
148
|
+
|
149
|
+
it "can be expanded into multiple block arguments with complex values" do
|
150
|
+
# [<?attr key?> translates to <?attr value?>]
|
151
|
+
tree = Inversion::Parser.new( nil ).parse( <<-"END_TEMPLATE" )
|
152
|
+
<?for scope, visibilities in method_list ?>
|
153
|
+
<?call scope.first ?> (<?call scope.length ?>) => <?call visibilities[:name] ?>
|
154
|
+
<?if visibilities[:variants] ?>AKA: <?call scope[1..-1].join(', ') ?><?end if ?>
|
155
|
+
<?end for ?>
|
156
|
+
END_TEMPLATE
|
157
|
+
|
158
|
+
# Drop the non-container nodes at the beginning and end
|
159
|
+
tree.delete_if {|node| !node.container? }
|
160
|
+
|
161
|
+
method_list = {
|
162
|
+
[:foo, :foom, :foom_detail] => { :name => 'foo', :variants => true },
|
163
|
+
[:ch] => { :name => 'ch', :variants => false },
|
164
|
+
}
|
165
|
+
|
166
|
+
render_state = Inversion::RenderState.new( :method_list => method_list )
|
167
|
+
tree.first.render( render_state )
|
168
|
+
|
169
|
+
render_state.to_s.should =~ /foo \(3\) => foo\s+AKA: foom, foom_detail/
|
170
|
+
render_state.to_s.should =~ /ch \(1\) => ch/
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
174
|
+
|
175
|
+
|
176
|
+
context "manual examples" do
|
177
|
+
|
178
|
+
it "renders the hexdump example as expected" do
|
179
|
+
tmpl = Inversion::Template.new( <<-END_TEMPLATE )
|
180
|
+
<section class="hexdump">
|
181
|
+
<?for byte, index in frame.header.each_byte.with_index ?>
|
182
|
+
<?if index.modulo(8).zero? ?>
|
183
|
+
<?if index.nonzero? ?>
|
184
|
+
</span><br />
|
185
|
+
<?end if ?>
|
186
|
+
<span class="row"><?attr "0x%08x" % index ?>:
|
187
|
+
<?end if ?>
|
188
|
+
<code><?attr "0x%02x" % byte ?></code>
|
189
|
+
<?end for ?>
|
190
|
+
</span>
|
191
|
+
</section>
|
192
|
+
END_TEMPLATE
|
193
|
+
|
194
|
+
frame = OpenStruct.new
|
195
|
+
frame.header = [
|
196
|
+
0x89, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x82,
|
197
|
+
0x7E, 0x01, 0x00, 0x8a, 0x05, 0x48, 0x65, 0x6c,
|
198
|
+
0x6c, 0x6f, 0x82, 0x7F, 0x00, 0x00, 0x00, 0x00,
|
199
|
+
0x00, 0x01, 0x00, 0x00, 0x13
|
200
|
+
].pack( 'C*' )
|
201
|
+
|
202
|
+
tmpl.frame = frame
|
203
|
+
output = tmpl.render
|
204
|
+
|
205
|
+
output.gsub( /\t+/, '' ).should == (<<-END_OUTPUT).gsub( /\t+/, '' )
|
206
|
+
<section class="hexdump">
|
207
|
+
<span class="row">0x00000000:
|
208
|
+
<code>0x89</code>
|
209
|
+
<code>0x05</code>
|
210
|
+
<code>0x48</code>
|
211
|
+
<code>0x65</code>
|
212
|
+
<code>0x6c</code>
|
213
|
+
<code>0x6c</code>
|
214
|
+
<code>0x6f</code>
|
215
|
+
<code>0x82</code>
|
216
|
+
</span><br />
|
217
|
+
<span class="row">0x00000008:
|
218
|
+
<code>0x7e</code>
|
219
|
+
<code>0x01</code>
|
220
|
+
<code>0x00</code>
|
221
|
+
<code>0x8a</code>
|
222
|
+
<code>0x05</code>
|
223
|
+
<code>0x48</code>
|
224
|
+
<code>0x65</code>
|
225
|
+
<code>0x6c</code>
|
226
|
+
</span><br />
|
227
|
+
<span class="row">0x00000010:
|
228
|
+
<code>0x6c</code>
|
229
|
+
<code>0x6f</code>
|
230
|
+
<code>0x82</code>
|
231
|
+
<code>0x7f</code>
|
232
|
+
<code>0x00</code>
|
233
|
+
<code>0x00</code>
|
234
|
+
<code>0x00</code>
|
235
|
+
<code>0x00</code>
|
236
|
+
</span><br />
|
237
|
+
<span class="row">0x00000018:
|
238
|
+
<code>0x00</code>
|
239
|
+
<code>0x01</code>
|
240
|
+
<code>0x00</code>
|
241
|
+
<code>0x00</code>
|
242
|
+
<code>0x13</code>
|
243
|
+
</span>
|
244
|
+
</section>
|
245
|
+
END_OUTPUT
|
246
|
+
end
|
115
247
|
end
|
116
248
|
end
|
117
249
|
|
@@ -61,6 +61,13 @@ describe Inversion::Template do
|
|
61
61
|
tmpl.render( &renderblock )
|
62
62
|
end
|
63
63
|
|
64
|
+
it "carries its global configuration to the parser" do
|
65
|
+
Inversion::Template.configure( :i_exist => true )
|
66
|
+
tmpl = Inversion::Template.new( '' )
|
67
|
+
parser = tmpl.instance_variable_get( :@parser )
|
68
|
+
parser.options.should have_key( :i_exist )
|
69
|
+
end
|
70
|
+
|
64
71
|
it "can make an human-readable string version of itself suitable for debugging" do
|
65
72
|
IO.should_receive( :read ).with( '/tmp/inspect.tmpl' ).and_return( '<?attr foo ?>' )
|
66
73
|
tmpl = Inversion::Template.load( '/tmp/inspect.tmpl' )
|
@@ -115,6 +122,24 @@ describe Inversion::Template do
|
|
115
122
|
it "knows that it hasn't changed" do
|
116
123
|
@template.should_not be_changed()
|
117
124
|
end
|
125
|
+
|
126
|
+
context "with a stat delay" do
|
127
|
+
|
128
|
+
before( :each ) do
|
129
|
+
@template.options[ :stat_delay ] = 30
|
130
|
+
end
|
131
|
+
|
132
|
+
it "returns unchanged if the delay time hasn't expired" do
|
133
|
+
@template.instance_variable_set( :@last_checked, @timestamp )
|
134
|
+
@template.should_not be_changed()
|
135
|
+
end
|
136
|
+
|
137
|
+
it "returns unchanged if the delay time has expired" do
|
138
|
+
@template.source_file.stub!( :mtime ).and_return( @timestamp - 30 )
|
139
|
+
@template.instance_variable_set( :@last_checked, @timestamp - 30 )
|
140
|
+
@template.should_not be_changed()
|
141
|
+
end
|
142
|
+
end
|
118
143
|
end
|
119
144
|
|
120
145
|
context "that has changed since it was loaded" do
|
@@ -127,8 +152,23 @@ describe Inversion::Template do
|
|
127
152
|
@template.should be_changed()
|
128
153
|
end
|
129
154
|
|
130
|
-
|
155
|
+
context "with a stat delay" do
|
156
|
+
|
157
|
+
before( :each ) do
|
158
|
+
@template.options[ :stat_delay ] = 30
|
159
|
+
end
|
131
160
|
|
161
|
+
it "returns unchanged if the delay time hasn't expired" do
|
162
|
+
@template.instance_variable_set( :@last_checked, @timestamp )
|
163
|
+
@template.should_not be_changed()
|
164
|
+
end
|
165
|
+
|
166
|
+
it "returns changed if the delay time has expired" do
|
167
|
+
@template.instance_variable_set( :@last_checked, @timestamp - 60 )
|
168
|
+
@template.should be_changed()
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
132
172
|
end
|
133
173
|
|
134
174
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inversion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,50 +10,38 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain:
|
13
|
-
- !
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
HIa9EgfFGSUEgvcIvaYqiN4jTUtidfEFw+Ltjs8AP9gWgSIYS6Gr38V0WGFFNzIH
|
42
|
-
|
43
|
-
aOD2wmu9oo/RffW4hS/8GuvfMzcw7CQ355wFR4KB/nyze+EsZ1Y5DerCAagMVuDQ
|
44
|
-
|
45
|
-
U0BLmWDFzPGGWlPeQCrYHCr+AcJz+NRnaHCKLZdSKj/RHuTOt+gblRex8FAh8NeA
|
46
|
-
|
47
|
-
cmlhXe46pZNJgWKbxZah85jIjx95hR8vOI+NAM5iH9kOqK13DrxacTKPhqj5PjwF
|
48
|
-
|
49
|
-
-----END CERTIFICATE-----
|
50
|
-
|
51
|
-
'
|
52
|
-
date: 2012-01-05 00:00:00.000000000 Z
|
13
|
+
- !binary |-
|
14
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURMRENDQWhTZ0F3SUJB
|
15
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREE4TVF3d0NnWURWUVFEREFOblpX
|
16
|
+
UXgKRnpBVkJnb0praWFKay9Jc1pBRVpGZ2RmWVdWeWFXVmZNUk13RVFZS0Na
|
17
|
+
SW1pWlB5TEdRQkdSWURiM0puTUI0WApEVEV3TURreE5qRTBORGcxTVZvWERU
|
18
|
+
RXhNRGt4TmpFME5EZzFNVm93UERFTU1Bb0dBMVVFQXd3RFoyVmtNUmN3CkZR
|
19
|
+
WUtDWkltaVpQeUxHUUJHUllIWDJGbGNtbGxYekVUTUJFR0NnbVNKb21UOGl4
|
20
|
+
a0FSa1dBMjl5WnpDQ0FTSXcKRFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURD
|
21
|
+
Q0FRb0NnZ0VCQUx5Ly9CRnhDMWYvY1BTbnd0SkJXb0ZpRnJpcgpoN1JpY0kr
|
22
|
+
am9xL29jVlhRcUk0VERXUHlGLzh0cWt2dCtyRDk5WDlxczJZZVI4Q1UvWWlJ
|
23
|
+
cExXclFPWVNUNzBKCnZEbjdVdmhiMm11RlZxcTYrdm9iZVRrSUxCRU82cGlv
|
24
|
+
bldERzhqU2JvM3FLbTFSaktKRHdnOXA0d05LaFB1dTgKS0d1ZS9CRmI2N0tm
|
25
|
+
bHF5QXBQbVBlYjNWZGQ5Y2xzcHpxZUZxcDdjVUJNRXBGUzZMV3h5NEdrK3F2
|
26
|
+
RkZKQkpMQgpCVUhFL0xaVkpNVnpmcEM1VXErUW1ZN0IrRkgvUXFObmRuM3RP
|
27
|
+
SGdzUGFkTFROaW11QjFzQ3VMMWE0ejNQZXBkClRlTEJFRm1FYW81RGszSy9R
|
28
|
+
OG84dmxiSUIvakJEVFV4NkRqYmd4dzc3OTA5eDZnSTlkb1U0TEQ1WE1jQ0F3
|
29
|
+
RUEKQWFNNU1EY3dDUVlEVlIwVEJBSXdBREFMQmdOVkhROEVCQU1DQkxBd0hR
|
30
|
+
WURWUjBPQkJZRUZKZW9Ha09yOWw0Qgorc2FNa1cvWlhUNFVlU3ZWTUEwR0NT
|
31
|
+
cUdTSWIzRFFFQkJRVUFBNElCQVFCRzJLT2J2WUkyZUh5eUJVSlNKM2pOCnZF
|
32
|
+
blUzZDYwem5BWGJyU2QycWIzcjFsWTFFUEREM2JjeTBNZ2dDZkdkZzNYdTU0
|
33
|
+
ejIxb3F5SWRrOHVHdFdCUEwKSElhOUVnZkZHU1VFZ3ZjSXZhWXFpTjRqVFV0
|
34
|
+
aWRmRUZ3K0x0anM4QVA5Z1dnU0lZUzZHcjM4VjBXR0ZGTnpJSAphT0Qyd211
|
35
|
+
OW9vL1JmZlc0aFMvOEd1dmZNemN3N0NRMzU1d0ZSNEtCL255emUrRXNaMVk1
|
36
|
+
RGVyQ0FhZ01WdURRClUwQkxtV0RGelBHR1dsUGVRQ3JZSENyK0FjSnorTlJu
|
37
|
+
YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
|
38
|
+
Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
|
39
|
+
cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
40
|
+
date: 2012-03-14 00:00:00.000000000 Z
|
53
41
|
dependencies:
|
54
42
|
- !ruby/object:Gem::Dependency
|
55
43
|
name: hoe-mercurial
|
56
|
-
requirement: &
|
44
|
+
requirement: &70276480362560 !ruby/object:Gem::Requirement
|
57
45
|
none: false
|
58
46
|
requirements:
|
59
47
|
- - ~>
|
@@ -61,10 +49,10 @@ dependencies:
|
|
61
49
|
version: 1.3.1
|
62
50
|
type: :development
|
63
51
|
prerelease: false
|
64
|
-
version_requirements: *
|
52
|
+
version_requirements: *70276480362560
|
65
53
|
- !ruby/object:Gem::Dependency
|
66
54
|
name: hoe-manualgen
|
67
|
-
requirement: &
|
55
|
+
requirement: &70276480378460 !ruby/object:Gem::Requirement
|
68
56
|
none: false
|
69
57
|
requirements:
|
70
58
|
- - ~>
|
@@ -72,10 +60,10 @@ dependencies:
|
|
72
60
|
version: 0.2.0
|
73
61
|
type: :development
|
74
62
|
prerelease: false
|
75
|
-
version_requirements: *
|
63
|
+
version_requirements: *70276480378460
|
76
64
|
- !ruby/object:Gem::Dependency
|
77
65
|
name: hoe-highline
|
78
|
-
requirement: &
|
66
|
+
requirement: &70276480377960 !ruby/object:Gem::Requirement
|
79
67
|
none: false
|
80
68
|
requirements:
|
81
69
|
- - ~>
|
@@ -83,21 +71,32 @@ dependencies:
|
|
83
71
|
version: 0.0.1
|
84
72
|
type: :development
|
85
73
|
prerelease: false
|
86
|
-
version_requirements: *
|
74
|
+
version_requirements: *70276480377960
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rdoc
|
77
|
+
requirement: &70276480377180 !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.12'
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: *70276480377180
|
87
86
|
- !ruby/object:Gem::Dependency
|
88
87
|
name: rspec
|
89
|
-
requirement: &
|
88
|
+
requirement: &70276480376360 !ruby/object:Gem::Requirement
|
90
89
|
none: false
|
91
90
|
requirements:
|
92
91
|
- - ~>
|
93
92
|
- !ruby/object:Gem::Version
|
94
|
-
version: '2.
|
93
|
+
version: '2.8'
|
95
94
|
type: :development
|
96
95
|
prerelease: false
|
97
|
-
version_requirements: *
|
96
|
+
version_requirements: *70276480376360
|
98
97
|
- !ruby/object:Gem::Dependency
|
99
98
|
name: tilt
|
100
|
-
requirement: &
|
99
|
+
requirement: &70276480375580 !ruby/object:Gem::Requirement
|
101
100
|
none: false
|
102
101
|
requirements:
|
103
102
|
- - ~>
|
@@ -105,10 +104,10 @@ dependencies:
|
|
105
104
|
version: '1.3'
|
106
105
|
type: :development
|
107
106
|
prerelease: false
|
108
|
-
version_requirements: *
|
107
|
+
version_requirements: *70276480375580
|
109
108
|
- !ruby/object:Gem::Dependency
|
110
109
|
name: sinatra
|
111
|
-
requirement: &
|
110
|
+
requirement: &70276480374200 !ruby/object:Gem::Requirement
|
112
111
|
none: false
|
113
112
|
requirements:
|
114
113
|
- - ~>
|
@@ -116,10 +115,10 @@ dependencies:
|
|
116
115
|
version: '1.2'
|
117
116
|
type: :development
|
118
117
|
prerelease: false
|
119
|
-
version_requirements: *
|
118
|
+
version_requirements: *70276480374200
|
120
119
|
- !ruby/object:Gem::Dependency
|
121
120
|
name: rack-test
|
122
|
-
requirement: &
|
121
|
+
requirement: &70276480373760 !ruby/object:Gem::Requirement
|
123
122
|
none: false
|
124
123
|
requirements:
|
125
124
|
- - ~>
|
@@ -127,10 +126,10 @@ dependencies:
|
|
127
126
|
version: '0.6'
|
128
127
|
type: :development
|
129
128
|
prerelease: false
|
130
|
-
version_requirements: *
|
129
|
+
version_requirements: *70276480373760
|
131
130
|
- !ruby/object:Gem::Dependency
|
132
131
|
name: simplecov
|
133
|
-
requirement: &
|
132
|
+
requirement: &70276480372880 !ruby/object:Gem::Requirement
|
134
133
|
none: false
|
135
134
|
requirements:
|
136
135
|
- - ~>
|
@@ -138,10 +137,10 @@ dependencies:
|
|
138
137
|
version: '0.4'
|
139
138
|
type: :development
|
140
139
|
prerelease: false
|
141
|
-
version_requirements: *
|
140
|
+
version_requirements: *70276480372880
|
142
141
|
- !ruby/object:Gem::Dependency
|
143
142
|
name: hoe-manualgen
|
144
|
-
requirement: &
|
143
|
+
requirement: &70276480372420 !ruby/object:Gem::Requirement
|
145
144
|
none: false
|
146
145
|
requirements:
|
147
146
|
- - ~>
|
@@ -149,10 +148,10 @@ dependencies:
|
|
149
148
|
version: '0.2'
|
150
149
|
type: :development
|
151
150
|
prerelease: false
|
152
|
-
version_requirements: *
|
151
|
+
version_requirements: *70276480372420
|
153
152
|
- !ruby/object:Gem::Dependency
|
154
153
|
name: trollop
|
155
|
-
requirement: &
|
154
|
+
requirement: &70276480372000 !ruby/object:Gem::Requirement
|
156
155
|
none: false
|
157
156
|
requirements:
|
158
157
|
- - ~>
|
@@ -160,10 +159,10 @@ dependencies:
|
|
160
159
|
version: '1.16'
|
161
160
|
type: :development
|
162
161
|
prerelease: false
|
163
|
-
version_requirements: *
|
162
|
+
version_requirements: *70276480372000
|
164
163
|
- !ruby/object:Gem::Dependency
|
165
164
|
name: highline
|
166
|
-
requirement: &
|
165
|
+
requirement: &70276480371560 !ruby/object:Gem::Requirement
|
167
166
|
none: false
|
168
167
|
requirements:
|
169
168
|
- - ~>
|
@@ -171,10 +170,10 @@ dependencies:
|
|
171
170
|
version: '1.6'
|
172
171
|
type: :development
|
173
172
|
prerelease: false
|
174
|
-
version_requirements: *
|
173
|
+
version_requirements: *70276480371560
|
175
174
|
- !ruby/object:Gem::Dependency
|
176
175
|
name: sysexits
|
177
|
-
requirement: &
|
176
|
+
requirement: &70276480371140 !ruby/object:Gem::Requirement
|
178
177
|
none: false
|
179
178
|
requirements:
|
180
179
|
- - ~>
|
@@ -182,10 +181,10 @@ dependencies:
|
|
182
181
|
version: '1.0'
|
183
182
|
type: :development
|
184
183
|
prerelease: false
|
185
|
-
version_requirements: *
|
184
|
+
version_requirements: *70276480371140
|
186
185
|
- !ruby/object:Gem::Dependency
|
187
186
|
name: rdoc
|
188
|
-
requirement: &
|
187
|
+
requirement: &70276480370680 !ruby/object:Gem::Requirement
|
189
188
|
none: false
|
190
189
|
requirements:
|
191
190
|
- - ~>
|
@@ -193,18 +192,18 @@ dependencies:
|
|
193
192
|
version: '3.10'
|
194
193
|
type: :development
|
195
194
|
prerelease: false
|
196
|
-
version_requirements: *
|
195
|
+
version_requirements: *70276480370680
|
197
196
|
- !ruby/object:Gem::Dependency
|
198
197
|
name: hoe
|
199
|
-
requirement: &
|
198
|
+
requirement: &70276480221500 !ruby/object:Gem::Requirement
|
200
199
|
none: false
|
201
200
|
requirements:
|
202
201
|
- - ~>
|
203
202
|
- !ruby/object:Gem::Version
|
204
|
-
version: '2.
|
203
|
+
version: '2.13'
|
205
204
|
type: :development
|
206
205
|
prerelease: false
|
207
|
-
version_requirements: *
|
206
|
+
version_requirements: *70276480221500
|
208
207
|
description: ! 'Inversion is a templating system for Ruby. It uses the "Inversion
|
209
208
|
of Control"
|
210
209
|
|
@@ -329,7 +328,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
329
328
|
version: '0'
|
330
329
|
requirements: []
|
331
330
|
rubyforge_project: inversion
|
332
|
-
rubygems_version: 1.8.
|
331
|
+
rubygems_version: 1.8.16
|
333
332
|
signing_key:
|
334
333
|
specification_version: 3
|
335
334
|
summary: Inversion is a templating system for Ruby
|
metadata.gz.sig
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
B!�̔�e��k��(�:����$�ni7!!N�<��XK��x���]/~-�mr�N?B2�ֹ�"趓
|
1
|
+
�_k���\�%��2<�\�b�>���Q.ɬ�:%�<��Iw��z#ar�i�3���l(��R0���`0'���!P�֖��;�A@i�4,�ڴC�x�s���������i���������m ^6n��q�P4dR)Ap+�p*�N�����8@�υ�~��?��v�� �5��Q�[ss>����/5=q,���@��Y,>0�[aQ2����۹Ծ����$��>`�0�9�ɇ뛿oU~&՞�3{
|