inversion 0.10.0 → 0.10.1

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
Binary file
data/ChangeLog CHANGED
@@ -1,8 +1,41 @@
1
+ 2012-05-07 Michael Granger <ged@FaerieMUD.org>
2
+
3
+ * .hgtags:
4
+ Added tag v0.10.0 for changeset 64cf302354aa
5
+ [79bc44fab294] [tip]
6
+
7
+ * .hgsigs:
8
+ Added signature for changeset 9d9c49d532be
9
+ [64cf302354aa] [v0.10.0]
10
+
11
+ * .rvm.gems, History.rdoc, Manifest.txt, Rakefile, bin/inversion,
12
+ experiments/benchmark-parser.rb, experiments/demo.rb,
13
+ experiments/dumptemplate.rb, lib/inversion.rb,
14
+ lib/inversion/logging.rb, lib/inversion/mixins.rb,
15
+ lib/inversion/parser.rb, lib/inversion/renderstate.rb,
16
+ lib/inversion/template.rb, lib/inversion/template/begintag.rb,
17
+ lib/inversion/template/codetag.rb,
18
+ lib/inversion/template/commenttag.rb,
19
+ lib/inversion/template/configtag.rb,
20
+ lib/inversion/template/elsetag.rb,
21
+ lib/inversion/template/elsiftag.rb,
22
+ lib/inversion/template/endtag.rb, lib/inversion/template/fortag.rb,
23
+ lib/inversion/template/iftag.rb,
24
+ lib/inversion/template/includetag.rb,
25
+ lib/inversion/template/node.rb, lib/inversion/template/rescuetag.rb,
26
+ lib/inversion/template/tag.rb, lib/inversion/template/textnode.rb,
27
+ lib/inversion/template/unlesstag.rb,
28
+ lib/inversion/template/yieldtag.rb, spec/inversion/logging_spec.rb,
29
+ spec/inversion/mixins_spec.rb, spec/inversion_spec.rb,
30
+ spec/lib/helpers.rb:
31
+ Convert to Loggability for logging.
32
+ [9d9c49d532be]
33
+
1
34
  2012-04-24 Michael Granger <ged@FaerieMUD.org>
2
35
 
3
36
  * .hgtags:
4
37
  Added tag v0.9.0 for changeset 27f082ef7985
5
- [dd18f3255985] [tip]
38
+ [dd18f3255985] [github/master]
6
39
 
7
40
  * .hgsigs:
8
41
  Added signature for changeset b208fa9154b1
@@ -21,7 +54,7 @@
21
54
 
22
55
  * manual/src/tags.page:
23
56
  Fix the include tag example in the manual.
24
- [b5fcbae36ff2] [github/master]
57
+ [b5fcbae36ff2]
25
58
 
26
59
  2012-04-02 Michael Granger <ged@FaerieMUD.org>
27
60
 
data/History.rdoc CHANGED
@@ -1,3 +1,12 @@
1
+ == v0.10.1 [2012-06-22] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ - Bugfix: duplicated templates get distinct copies of their attributes.
4
+
5
+
6
+ == v0.10.0 [2012-05-07] Michael Granger <ged@FaerieMUD.org>
7
+
8
+ - Added signature for changeset 9d9c49d532be
9
+
1
10
  == v0.10.0 [2012-05-07] Michael Granger <ged@FaerieMUD.org>
2
11
 
3
12
  - Convert to Loggability for logging.
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ 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 'loggability', '~> 0.0'
23
+ self.dependency 'loggability', '~> 0.2'
24
24
 
25
25
  self.dependency 'rdoc', '~> 3.12', :development
26
26
  self.dependency 'rspec', '~> 2.8', :development
data/lib/inversion.rb CHANGED
@@ -25,10 +25,10 @@ module Inversion
25
25
  warn ">>> Inversion requires Ruby 1.9.2 or later. <<<" if RUBY_VERSION < '1.9.2'
26
26
 
27
27
  # Library version constant
28
- VERSION = '0.10.0'
28
+ VERSION = '0.10.1'
29
29
 
30
30
  # Version-control revision constant
31
- REVISION = %q$Revision: 9d9c49d532be $
31
+ REVISION = %q$Revision: 432abb56d593 $
32
32
 
33
33
 
34
34
  ### Get the Inversion version.
@@ -196,5 +196,37 @@ module Inversion
196
196
 
197
197
  end # module MethodUtilities
198
198
 
199
+
200
+ # A collection of data-manipulation functions.
201
+ module DataUtilities
202
+
203
+ ### Recursively copy the specified +obj+ and return the result.
204
+ def deep_copy( obj )
205
+ # self.log.debug "Deep copying: %p" % [ obj ]
206
+
207
+ # Handle mocks during testing
208
+ return obj if obj.class.name == 'RSpec::Mocks::Mock'
209
+
210
+ return case obj
211
+ when NilClass, Numeric, TrueClass, FalseClass, Symbol
212
+ obj
213
+
214
+ when Array
215
+ obj.map {|o| deep_copy(o) }
216
+
217
+ when Hash
218
+ newhash = {}
219
+ obj.each do |k,v|
220
+ newhash[ deep_copy(k) ] = deep_copy( v )
221
+ end
222
+ newhash
223
+
224
+ else
225
+ obj.clone
226
+ end
227
+ end
228
+
229
+ end # module DataUtilities
230
+
199
231
  end # module Inversion
200
232
 
@@ -8,6 +8,8 @@ require 'inversion' unless defined?( Inversion )
8
8
  # An object that provides an encapsulation of the template's state while it is rendering.
9
9
  class Inversion::RenderState
10
10
  extend Loggability
11
+ include Inversion::DataUtilities
12
+
11
13
 
12
14
  # Loggability API -- set up logging through the Inversion module's logger
13
15
  log_to :inversion
@@ -436,35 +438,5 @@ class Inversion::RenderState
436
438
  end
437
439
 
438
440
 
439
- #######
440
- private
441
- #######
442
-
443
- ### Recursively copy the specified +obj+ and return the result.
444
- def deep_copy( obj )
445
- # self.log.debug "Deep copying: %p" % [ obj ]
446
-
447
- # Handle mocks during testing
448
- return obj if obj.class.name == 'RSpec::Mocks::Mock'
449
-
450
- return case obj
451
- when NilClass, Numeric, TrueClass, FalseClass, Symbol
452
- obj
453
-
454
- when Array
455
- obj.map {|o| deep_copy(o) }
456
-
457
- when Hash
458
- newhash = {}
459
- obj.each do |k,v|
460
- newhash[ deep_copy(k) ] = deep_copy( v )
461
- end
462
- newhash
463
-
464
- else
465
- obj.clone
466
- end
467
- end
468
-
469
441
  end # class Inversion::RenderState
470
442
 
@@ -18,6 +18,8 @@ end
18
18
  # can be used to populate it when rendered.
19
19
  class Inversion::Template
20
20
  extend Loggability
21
+ include Inversion::DataUtilities
22
+
21
23
 
22
24
  # Loggability API -- set up logging through the Inversion module's logger
23
25
  log_to :inversion
@@ -140,14 +142,9 @@ class Inversion::Template
140
142
  self.log.debug "Parse state is: %p" % [ parsestate ]
141
143
  end
142
144
 
143
- # carry global template options to the parser.
144
- opts = self.class.config.merge( opts )
145
-
146
145
  @source = source
147
- @parser = Inversion::Parser.new( self, opts )
148
146
  @node_tree = [] # Parser expects this to always be an Array
149
- @init_options = opts
150
- @options = nil
147
+ @options = opts
151
148
  @attributes = {}
152
149
  @source_file = nil
153
150
  @created_at = Time.now
@@ -157,6 +154,14 @@ class Inversion::Template
157
154
  end
158
155
 
159
156
 
157
+ ### Copy constructor -- make copies of some internal data structures, too.
158
+ def initialize_copy( other )
159
+ @options = deep_copy( other.options )
160
+ @node_tree = deep_copy( other.node_tree )
161
+ @attributes = deep_copy( other.attributes )
162
+ end
163
+
164
+
160
165
  ######
161
166
  public
162
167
  ######
@@ -223,13 +228,19 @@ class Inversion::Template
223
228
  ### Return a human-readable representation of the template object suitable
224
229
  ### for debugging.
225
230
  def inspect
226
- return "#<%s:%08x (loaded from %s) attributes: %p, node_tree: %p, options: %p>" % [
231
+ nodemap = if $DEBUG
232
+ ", node_tree: %p" % [ self.node_tree.map(&:as_comment_body) ]
233
+ else
234
+ ''
235
+ end
236
+
237
+ return "#<%s:%08x (loaded from %s) attributes: %p, options: %p%s>" % [
227
238
  self.class.name,
228
239
  self.object_id / 2,
229
240
  self.source_file ? self.source_file : "memory",
230
- self.attributes,
231
- self.node_tree.map(&:as_comment_body),
241
+ self.attributes.keys,
232
242
  self.options,
243
+ nodemap
233
244
  ]
234
245
  end
235
246
 
@@ -252,9 +263,11 @@ class Inversion::Template
252
263
 
253
264
  ### Parse the given +source+ into the template node tree.
254
265
  def parse( source, parsestate=nil )
255
- @options = self.class.config.merge( @init_options )
266
+ opts = self.class.config.merge( self.options )
267
+ parser = Inversion::Parser.new( self, opts )
268
+
256
269
  @attributes.clear
257
- @node_tree = @parser.parse( source, parsestate )
270
+ @node_tree = parser.parse( source, parsestate )
258
271
  @source = source
259
272
 
260
273
  self.define_attribute_accessors
@@ -62,10 +62,16 @@ describe Inversion::Template do
62
62
  end
63
63
 
64
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 )
65
+ begin
66
+ orig_config = Inversion::Template.config
67
+ Inversion::Template.configure( :ignore_unknown_tags => false )
68
+
69
+ expect {
70
+ Inversion::Template.new( '<?rumple an unknown tag ?>' )
71
+ }.to raise_error( Inversion::ParseError, /unknown tag/i )
72
+ ensure
73
+ Inversion::Template.config = orig_config
74
+ end
69
75
  end
70
76
 
71
77
  it "can make an human-readable string version of itself suitable for debugging" do
@@ -74,7 +80,19 @@ describe Inversion::Template do
74
80
  tmpl.inspect.should =~ /Inversion::Template/
75
81
  tmpl.inspect.should =~ %r{/tmp/inspect.tmpl}
76
82
  tmpl.inspect.should =~ /attributes/
77
- tmpl.inspect.should =~ /node_tree/
83
+ tmpl.inspect.should_not =~ /node_tree/
84
+ end
85
+
86
+ it "includes the node tree in the inspected object if debugging is enabled" do
87
+ begin
88
+ debuglevel = $DEBUG
89
+ $DEBUG = true
90
+
91
+ tmpl = Inversion::Template.new( '<?attr something ?>' )
92
+ tmpl.inspect.should =~ /node_tree/
93
+ ensure
94
+ $DEBUG = debuglevel
95
+ end
78
96
  end
79
97
 
80
98
  it "provides accessors for attributes that aren't identifiers in the template" do
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.10.0
4
+ version: 0.10.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -37,7 +37,7 @@ cert_chain:
37
37
  YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
38
38
  Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
39
39
  cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
40
- date: 2012-05-07 00:00:00.000000000 Z
40
+ date: 2012-06-22 00:00:00.000000000 Z
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: loggability
@@ -46,7 +46,7 @@ dependencies:
46
46
  requirements:
47
47
  - - ~>
48
48
  - !ruby/object:Gem::Version
49
- version: '0.0'
49
+ version: '0.2'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -54,7 +54,7 @@ dependencies:
54
54
  requirements:
55
55
  - - ~>
56
56
  - !ruby/object:Gem::Version
57
- version: '0.0'
57
+ version: '0.2'
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: hoe-mercurial
60
60
  requirement: !ruby/object:Gem::Requirement
metadata.gz.sig CHANGED
Binary file