diff options
| author | Jesse Wolfe <jes5199@gmail.com> | 2010-09-08 16:17:58 -0700 |
|---|---|---|
| committer | Jesse Wolfe <jes5199@gmail.com> | 2010-09-08 16:17:58 -0700 |
| commit | 4bda0b53c7b30814a2c8f97455c9362b1de67f2a (patch) | |
| tree | 45c27590c72a374ac2845f7007f19cc3af96ccc7 /lib | |
| parent | fb9034731ddae41f1009745eb8eb1ea53aa05cfb (diff) | |
| parent | 50fd9b77cdb2346ec0b760364841abd4eb6f23ff (diff) | |
| download | puppet-4bda0b53c7b30814a2c8f97455c9362b1de67f2a.tar.gz puppet-4bda0b53c7b30814a2c8f97455c9362b1de67f2a.tar.xz puppet-4bda0b53c7b30814a2c8f97455c9362b1de67f2a.zip | |
Merge remote branch 'paul/ticket/next/4570' into next
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/puppet/util/zaml.rb | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lib/puppet/util/zaml.rb b/lib/puppet/util/zaml.rb index 8ecc2c8bd..b60e639ff 100644 --- a/lib/puppet/util/zaml.rb +++ b/lib/puppet/util/zaml.rb @@ -29,7 +29,8 @@ class ZAML @result = [] @indent = nil @structured_key_prefix = nil - Label.counter_reset + @previously_emitted_object = {} + @next_free_label_number = 0 emit('--- ') end def nested(tail=' ') @@ -55,31 +56,29 @@ class ZAML # which we will encounter a reference to the object as we serialize # it can be handled). # - def self.counter_reset - @@previously_emitted_object = {} - @@next_free_label_number = 0 - end + attr_accessor :this_label_number def initialize(obj,indent) @indent = indent @this_label_number = nil - @@previously_emitted_object[obj.object_id] = self end def to_s @this_label_number ? ('&id%03d%s' % [@this_label_number, @indent]) : '' end def reference - @this_label_number ||= (@@next_free_label_number += 1) @reference ||= '*id%03d' % @this_label_number end - def self.for(obj) - @@previously_emitted_object[obj.object_id] - end + end + def label_for(obj) + @previously_emitted_object[obj.object_id] end def new_label_for(obj) - Label.new(obj,(Hash === obj || Array === obj) ? "#{@indent || "\n"} " : ' ') + label = Label.new(obj,(Hash === obj || Array === obj) ? "#{@indent || "\n"} " : ' ') + @previously_emitted_object[obj.object_id] = label + label end def first_time_only(obj) - if label = Label.for(obj) + if label = label_for(obj) + label.this_label_number ||= (@next_free_label_number += 1) emit(label.reference) else if @structured_key_prefix and not obj.is_a? String |
