inversion 0.5.0 → 0.6.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.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{
|