In: |
yaml/emitter.rb
|
Parent: | Object |
Emit a set of values
options | [RW] |
# File yaml/emitter.rb, line 20 def initialize( opts ) opts = {} if opts.class != Hash @options = YAML::DEFAULTS.dup.update( opts ) @headless = 0 @seq_map = false @anchors = {} @anchor_extras = {} @active_anchors = [] @level = -1 self.clear end
Concatenate to the buffer
# File yaml/emitter.rb, line 61 def <<( str ) #p [ self.id, @level, str ] @buffer.last << str end
Output method
# File yaml/emitter.rb, line 96 def end_object @level -= 1 @buffer.push( "" ) #p [ self.id, @level, :END ] if @level < 0 header + @buffer.to_s[@headless..-1].to_s end end
Header
# File yaml/emitter.rb, line 50 def header if @headless.nonzero? "" else "---#{version_s} " end end
Monitor objects and allow references
# File yaml/emitter.rb, line 69 def start_object( oid ) @level += 1 @buffer.push( "" ) #p [ self.id, @level, :OPEN ] idx = nil if oid if @anchors.has_key?( oid ) idx = @active_anchors.index( oid ) unless idx idx = @active_anchors.length af_str = "&#{@options[:AnchorFormat]} " % [ idx + 1 ] af_str += @anchor_extras[ @anchors[ oid ] ].to_s @buffer[ @anchors[ oid ] ][0,0] = af_str @headless = 0 if @anchors[ oid ].zero? end idx += 1 @active_anchors.push( oid ) else @anchors[ oid ] = @buffer.length - 1 end end return idx end