inversion 0.3.0 → 0.4.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 CHANGED
@@ -1 +1 @@
1
- g��2M&��""����� iP��_i4��HRh ^/d���ld mi�����&2��
1
+ Xv?�Ђf�ڛ����\.K<1����ž>-��!�����Cq�*7��+f��#���܀�sw���҂�Q�
data/History.rdoc CHANGED
@@ -1,3 +1,14 @@
1
+ == v0.4.0 [2011-10-05] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ Reworked render toggling so the before/after rendering hooks are
4
+ called immediately before and after the node *would* have been
5
+ rendered. This further cleans up the conditional logic, and causes
6
+ the if/elsif/else tags to behave like you'd expect: the nodes they
7
+ demark aren't even touched if rendering is disabled.
8
+
9
+ Adjusted the other tags to account for the change.
10
+
11
+
1
12
  == v0.3.0 [2011-10-05] Michael Granger <ged@FaerieMUD.org>
2
13
 
3
14
  - Fix require loop in if/elsif tags
data/Rakefile CHANGED
@@ -43,7 +43,7 @@ end
43
43
  ENV['VERSION'] ||= hoespec.spec.version.to_s
44
44
 
45
45
  # Ensure the specs pass before checking in
46
- task 'hg:precheckin' => :spec
46
+ task 'hg:precheckin' => [:check_history, :spec]
47
47
 
48
48
  if Rake::Task.task_defined?( '.gemtest' )
49
49
  Rake::Task['.gemtest'].clear
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.3.0'
29
+ VERSION = '0.4.0'
30
30
 
31
31
  # Version-control revision constant
32
- REVISION = %q$Revision: cde501e6764c $
32
+ REVISION = %q$Revision: 5b1e645db600 $
33
33
 
34
34
  #
35
35
  # Logging
@@ -190,29 +190,32 @@ class Inversion::RenderState
190
190
  ### object either doesn't respond to #render or #renders as itself.
191
191
  def <<( node )
192
192
  self.log.debug "Appending a %p to %p" % [ node.class, self ]
193
- self.destination << self.make_node_comment( node ) if self.options[:debugging_comments]
194
193
  original_node = node
195
- previous_node = nil
196
-
197
- begin
198
- # Allow render to be delegated to subobjects
199
- while node.respond_to?( :render ) && node != previous_node
200
- self.log.debug " delegated rendering to: %p" % [ node ]
201
- previous_node = node
202
- node = node.render( self )
203
- end
194
+ original_node.before_rendering( self )
195
+
196
+ if self.rendering_enabled?
197
+ self.destination << self.make_node_comment( node ) if self.options[:debugging_comments]
198
+ previous_node = nil
199
+
200
+ begin
201
+ # Allow render to be delegated to subobjects
202
+ while node.respond_to?( :render ) && node != previous_node
203
+ self.log.debug " delegated rendering to: %p" % [ node ]
204
+ previous_node = node
205
+ node = node.render( self )
206
+ end
204
207
 
205
- if self.rendering_enabled?
206
208
  self.log.debug " adding a %p to the destination (%p)" %
207
209
  [ node.class, self.destination.class ]
208
210
  self.destination << node
209
211
  self.log.debug " just appended %p to %p" % [ node, self.destination ]
212
+ rescue ::StandardError => err
213
+ self.log.debug " handling a %p while rendering: %s" % [ err.class, err.message ]
214
+ self.destination << self.handle_render_error( original_node, err )
210
215
  end
211
- rescue ::StandardError => err
212
- self.log.debug " handling a %p while rendering: %s" % [ err.class, err.message ]
213
- self.destination << self.handle_render_error( original_node, err )
214
216
  end
215
217
 
218
+ original_node.after_rendering( self )
216
219
  return self
217
220
  end
218
221
 
@@ -175,15 +175,8 @@ class Inversion::Template
175
175
  self.log.info "rendering template 0x%08x" % [ self.object_id/2 ]
176
176
  state = Inversion::RenderState.new( parentstate, self.attributes, self.options, &block )
177
177
 
178
- # Pre-render hook
179
- self.walk_tree {|node| node.before_rendering(state) }
180
-
181
178
  # self.log.debug " rendering node tree: %p" % [ @node_tree ]
182
179
  self.walk_tree {|node| state << node }
183
-
184
- # Post-render hook
185
- self.walk_tree {|node| node.after_rendering(state) }
186
-
187
180
  self.log.info " done rendering template 0x%08x: %0.4fs" %
188
181
  [ self.object_id/2, state.time_elapsed ]
189
182
 
@@ -59,9 +59,15 @@ class Inversion::Template::ElseTag < Inversion::Template::Tag
59
59
  end
60
60
 
61
61
 
62
+ ### Always remder as an empty string.
63
+ def render( * )
64
+ nil
65
+ end
66
+
67
+
62
68
  ### Toggle rendering for the iftag's container if rendering hasn't yet been
63
69
  ### toggled.
64
- def render( renderstate )
70
+ def before_rendering( renderstate )
65
71
  if renderstate.tag_data[ :rendering_was_enabled ]
66
72
  self.log.debug " rendering was previously enabled: disabling"
67
73
  renderstate.disable_rendering
@@ -47,9 +47,15 @@ class Inversion::Template::ElsifTag < Inversion::Template::AttrTag
47
47
  end
48
48
 
49
49
 
50
+ ### Always remder as an empty string.
51
+ def render( * )
52
+ nil
53
+ end
54
+
55
+
50
56
  ### Toggle rendering for the iftag's container if rendering hasn't yet been
51
57
  ### toggled.
52
- def render( renderstate )
58
+ def before_rendering( renderstate )
53
59
  if renderstate.tag_data[ :rendering_was_enabled ]
54
60
  self.log.debug "Rendering was previously enabled; disabling"
55
61
  renderstate.disable_rendering
@@ -36,7 +36,7 @@ class Inversion::Template::IfTag < Inversion::Template::AttrTag
36
36
 
37
37
  # Set the tag state to track whether or not rendering has been enabled during the
38
38
  # 'if' for an 'else' or 'elsif' tag.
39
- state.with_tag_data( :rendering_was_enabled => state.rendering_enabled? ) do
39
+ state.with_tag_data( rendering_was_enabled: state.rendering_enabled? ) do
40
40
  super
41
41
  end
42
42
 
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.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -49,11 +49,11 @@ cert_chain:
49
49
  -----END CERTIFICATE-----
50
50
 
51
51
  '
52
- date: 2011-10-05 00:00:00.000000000Z
52
+ date: 2011-10-06 00:00:00.000000000Z
53
53
  dependencies:
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: hoe-mercurial
56
- requirement: &70147534076140 !ruby/object:Gem::Requirement
56
+ requirement: &70307924560640 !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
59
  - - ~>
@@ -61,10 +61,10 @@ dependencies:
61
61
  version: 1.3.1
62
62
  type: :development
63
63
  prerelease: false
64
- version_requirements: *70147534076140
64
+ version_requirements: *70307924560640
65
65
  - !ruby/object:Gem::Dependency
66
66
  name: hoe-manualgen
67
- requirement: &70147534075520 !ruby/object:Gem::Requirement
67
+ requirement: &70307924560080 !ruby/object:Gem::Requirement
68
68
  none: false
69
69
  requirements:
70
70
  - - ~>
@@ -72,10 +72,10 @@ dependencies:
72
72
  version: 0.2.0
73
73
  type: :development
74
74
  prerelease: false
75
- version_requirements: *70147534075520
75
+ version_requirements: *70307924560080
76
76
  - !ruby/object:Gem::Dependency
77
77
  name: hoe-highline
78
- requirement: &70147534074980 !ruby/object:Gem::Requirement
78
+ requirement: &70307924559340 !ruby/object:Gem::Requirement
79
79
  none: false
80
80
  requirements:
81
81
  - - ~>
@@ -83,10 +83,10 @@ dependencies:
83
83
  version: 0.0.1
84
84
  type: :development
85
85
  prerelease: false
86
- version_requirements: *70147534074980
86
+ version_requirements: *70307924559340
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: rspec
89
- requirement: &70147534074360 !ruby/object:Gem::Requirement
89
+ requirement: &70307924558580 !ruby/object:Gem::Requirement
90
90
  none: false
91
91
  requirements:
92
92
  - - ~>
@@ -94,10 +94,10 @@ dependencies:
94
94
  version: 2.6.0
95
95
  type: :development
96
96
  prerelease: false
97
- version_requirements: *70147534074360
97
+ version_requirements: *70307924558580
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: tilt
100
- requirement: &70147534073820 !ruby/object:Gem::Requirement
100
+ requirement: &70307924557980 !ruby/object:Gem::Requirement
101
101
  none: false
102
102
  requirements:
103
103
  - - ~>
@@ -105,10 +105,10 @@ dependencies:
105
105
  version: 1.3.2
106
106
  type: :development
107
107
  prerelease: false
108
- version_requirements: *70147534073820
108
+ version_requirements: *70307924557980
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: sinatra
111
- requirement: &70147534073200 !ruby/object:Gem::Requirement
111
+ requirement: &70307924557420 !ruby/object:Gem::Requirement
112
112
  none: false
113
113
  requirements:
114
114
  - - ~>
@@ -116,10 +116,10 @@ dependencies:
116
116
  version: 1.2.6
117
117
  type: :development
118
118
  prerelease: false
119
- version_requirements: *70147534073200
119
+ version_requirements: *70307924557420
120
120
  - !ruby/object:Gem::Dependency
121
121
  name: rack-test
122
- requirement: &70147534072680 !ruby/object:Gem::Requirement
122
+ requirement: &70307924556780 !ruby/object:Gem::Requirement
123
123
  none: false
124
124
  requirements:
125
125
  - - ~>
@@ -127,10 +127,10 @@ dependencies:
127
127
  version: 0.6.0
128
128
  type: :development
129
129
  prerelease: false
130
- version_requirements: *70147534072680
130
+ version_requirements: *70307924556780
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: simplecov
133
- requirement: &70147534072100 !ruby/object:Gem::Requirement
133
+ requirement: &70307924556160 !ruby/object:Gem::Requirement
134
134
  none: false
135
135
  requirements:
136
136
  - - ~>
@@ -138,10 +138,10 @@ dependencies:
138
138
  version: 0.4.2
139
139
  type: :development
140
140
  prerelease: false
141
- version_requirements: *70147534072100
141
+ version_requirements: *70307924556160
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: hoe-manualgen
144
- requirement: &70147534071140 !ruby/object:Gem::Requirement
144
+ requirement: &70307924555720 !ruby/object:Gem::Requirement
145
145
  none: false
146
146
  requirements:
147
147
  - - ~>
@@ -149,10 +149,10 @@ dependencies:
149
149
  version: 0.2.0
150
150
  type: :development
151
151
  prerelease: false
152
- version_requirements: *70147534071140
152
+ version_requirements: *70307924555720
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: trollop
155
- requirement: &70147534069820 !ruby/object:Gem::Requirement
155
+ requirement: &70307924555160 !ruby/object:Gem::Requirement
156
156
  none: false
157
157
  requirements:
158
158
  - - ~>
@@ -160,10 +160,10 @@ dependencies:
160
160
  version: 1.16.2
161
161
  type: :development
162
162
  prerelease: false
163
- version_requirements: *70147534069820
163
+ version_requirements: *70307924555160
164
164
  - !ruby/object:Gem::Dependency
165
165
  name: highline
166
- requirement: &70147534069240 !ruby/object:Gem::Requirement
166
+ requirement: &70307924554240 !ruby/object:Gem::Requirement
167
167
  none: false
168
168
  requirements:
169
169
  - - ~>
@@ -171,10 +171,10 @@ dependencies:
171
171
  version: 1.6.2
172
172
  type: :development
173
173
  prerelease: false
174
- version_requirements: *70147534069240
174
+ version_requirements: *70307924554240
175
175
  - !ruby/object:Gem::Dependency
176
176
  name: sysexits
177
- requirement: &70147534068660 !ruby/object:Gem::Requirement
177
+ requirement: &70307924553020 !ruby/object:Gem::Requirement
178
178
  none: false
179
179
  requirements:
180
180
  - - ~>
@@ -182,10 +182,10 @@ dependencies:
182
182
  version: 1.0.2
183
183
  type: :development
184
184
  prerelease: false
185
- version_requirements: *70147534068660
185
+ version_requirements: *70307924553020
186
186
  - !ruby/object:Gem::Dependency
187
187
  name: hoe
188
- requirement: &70147534068080 !ruby/object:Gem::Requirement
188
+ requirement: &70307924552300 !ruby/object:Gem::Requirement
189
189
  none: false
190
190
  requirements:
191
191
  - - ~>
@@ -193,7 +193,7 @@ dependencies:
193
193
  version: '2.12'
194
194
  type: :development
195
195
  prerelease: false
196
- version_requirements: *70147534068080
196
+ version_requirements: *70307924552300
197
197
  description: ! 'Inversion is a templating system for Ruby. It uses the "Inversion
198
198
  of Control" principle to decouple
199
199
 
metadata.gz.sig CHANGED
Binary file