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 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] [tip]
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', :development unless defined?( Encoding )
24
- self.dependency 'rspec', '~> 2.6', :development
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.5.0'
29
+ VERSION = '0.6.0'
30
30
 
31
31
  # Version-control revision constant
32
- REVISION = %q$Revision: 11fb6ed08994 $
32
+ REVISION = %q$Revision: 2397134edcb3 $
33
33
 
34
34
  #
35
35
  # Logging
@@ -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
- return ( file.mtime > @created_at )
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
- lvalue.each do |*args|
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
+ &nbsp;<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
+ &nbsp;<code>0x89</code>
209
+ &nbsp;<code>0x05</code>
210
+ &nbsp;<code>0x48</code>
211
+ &nbsp;<code>0x65</code>
212
+ &nbsp;<code>0x6c</code>
213
+ &nbsp;<code>0x6c</code>
214
+ &nbsp;<code>0x6f</code>
215
+ &nbsp;<code>0x82</code>
216
+ </span><br />
217
+ <span class="row">0x00000008:
218
+ &nbsp;<code>0x7e</code>
219
+ &nbsp;<code>0x01</code>
220
+ &nbsp;<code>0x00</code>
221
+ &nbsp;<code>0x8a</code>
222
+ &nbsp;<code>0x05</code>
223
+ &nbsp;<code>0x48</code>
224
+ &nbsp;<code>0x65</code>
225
+ &nbsp;<code>0x6c</code>
226
+ </span><br />
227
+ <span class="row">0x00000010:
228
+ &nbsp;<code>0x6c</code>
229
+ &nbsp;<code>0x6f</code>
230
+ &nbsp;<code>0x82</code>
231
+ &nbsp;<code>0x7f</code>
232
+ &nbsp;<code>0x00</code>
233
+ &nbsp;<code>0x00</code>
234
+ &nbsp;<code>0x00</code>
235
+ &nbsp;<code>0x00</code>
236
+ </span><br />
237
+ <span class="row">0x00000018:
238
+ &nbsp;<code>0x00</code>
239
+ &nbsp;<code>0x01</code>
240
+ &nbsp;<code>0x00</code>
241
+ &nbsp;<code>0x00</code>
242
+ &nbsp;<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
- end
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.5.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
- - ! '-----BEGIN CERTIFICATE-----
14
-
15
- MIIDLDCCAhSgAwIBAgIBADANBgkqhkiG9w0BAQUFADA8MQwwCgYDVQQDDANnZWQx
16
-
17
- FzAVBgoJkiaJk/IsZAEZFgdfYWVyaWVfMRMwEQYKCZImiZPyLGQBGRYDb3JnMB4X
18
-
19
- DTEwMDkxNjE0NDg1MVoXDTExMDkxNjE0NDg1MVowPDEMMAoGA1UEAwwDZ2VkMRcw
20
-
21
- FQYKCZImiZPyLGQBGRYHX2FlcmllXzETMBEGCgmSJomT8ixkARkWA29yZzCCASIw
22
-
23
- DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALy//BFxC1f/cPSnwtJBWoFiFrir
24
-
25
- h7RicI+joq/ocVXQqI4TDWPyF/8tqkvt+rD99X9qs2YeR8CU/YiIpLWrQOYST70J
26
-
27
- vDn7Uvhb2muFVqq6+vobeTkILBEO6pionWDG8jSbo3qKm1RjKJDwg9p4wNKhPuu8
28
-
29
- KGue/BFb67KflqyApPmPeb3Vdd9clspzqeFqp7cUBMEpFS6LWxy4Gk+qvFFJBJLB
30
-
31
- BUHE/LZVJMVzfpC5Uq+QmY7B+FH/QqNndn3tOHgsPadLTNimuB1sCuL1a4z3Pepd
32
-
33
- TeLBEFmEao5Dk3K/Q8o8vlbIB/jBDTUx6Djbgxw77909x6gI9doU4LD5XMcCAwEA
34
-
35
- AaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFJeoGkOr9l4B
36
-
37
- +saMkW/ZXT4UeSvVMA0GCSqGSIb3DQEBBQUAA4IBAQBG2KObvYI2eHyyBUJSJ3jN
38
-
39
- vEnU3d60znAXbrSd2qb3r1lY1EPDD3bcy0MggCfGdg3Xu54z21oqyIdk8uGtWBPL
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: &70112213964960 !ruby/object:Gem::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: *70112213964960
52
+ version_requirements: *70276480362560
65
53
  - !ruby/object:Gem::Dependency
66
54
  name: hoe-manualgen
67
- requirement: &70112213964400 !ruby/object:Gem::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: *70112213964400
63
+ version_requirements: *70276480378460
76
64
  - !ruby/object:Gem::Dependency
77
65
  name: hoe-highline
78
- requirement: &70112213963860 !ruby/object:Gem::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: *70112213963860
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: &70112213961800 !ruby/object:Gem::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.6'
93
+ version: '2.8'
95
94
  type: :development
96
95
  prerelease: false
97
- version_requirements: *70112213961800
96
+ version_requirements: *70276480376360
98
97
  - !ruby/object:Gem::Dependency
99
98
  name: tilt
100
- requirement: &70112213960480 !ruby/object:Gem::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: *70112213960480
107
+ version_requirements: *70276480375580
109
108
  - !ruby/object:Gem::Dependency
110
109
  name: sinatra
111
- requirement: &70112213959200 !ruby/object:Gem::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: *70112213959200
118
+ version_requirements: *70276480374200
120
119
  - !ruby/object:Gem::Dependency
121
120
  name: rack-test
122
- requirement: &70112213974620 !ruby/object:Gem::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: *70112213974620
129
+ version_requirements: *70276480373760
131
130
  - !ruby/object:Gem::Dependency
132
131
  name: simplecov
133
- requirement: &70112213973840 !ruby/object:Gem::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: *70112213973840
140
+ version_requirements: *70276480372880
142
141
  - !ruby/object:Gem::Dependency
143
142
  name: hoe-manualgen
144
- requirement: &70112213973160 !ruby/object:Gem::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: *70112213973160
151
+ version_requirements: *70276480372420
153
152
  - !ruby/object:Gem::Dependency
154
153
  name: trollop
155
- requirement: &70112213972500 !ruby/object:Gem::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: *70112213972500
162
+ version_requirements: *70276480372000
164
163
  - !ruby/object:Gem::Dependency
165
164
  name: highline
166
- requirement: &70112213971560 !ruby/object:Gem::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: *70112213971560
173
+ version_requirements: *70276480371560
175
174
  - !ruby/object:Gem::Dependency
176
175
  name: sysexits
177
- requirement: &70112213970920 !ruby/object:Gem::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: *70112213970920
184
+ version_requirements: *70276480371140
186
185
  - !ruby/object:Gem::Dependency
187
186
  name: rdoc
188
- requirement: &70112213970460 !ruby/object:Gem::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: *70112213970460
195
+ version_requirements: *70276480370680
197
196
  - !ruby/object:Gem::Dependency
198
197
  name: hoe
199
- requirement: &70112213970040 !ruby/object:Gem::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.12'
203
+ version: '2.13'
205
204
  type: :development
206
205
  prerelease: false
207
- version_requirements: *70112213970040
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.10
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
- +���:�3�qS z��RN�����Q�3;��-E
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@i4,�ڴCx�s���������i���������m ^6n��q�P4dR)Ap+�p*�N�����8@�υ�~��?��v�� �5��Q�[ss>����/5=q,፽���@��Y,>0�[aQ2����۹Ծ����$��>`�0�9�ɇ뛿oU~&՞�3{