Class: Psych::TreeBuilder
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
| Subclasses: | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
           Handler | |
| Instance Chain: 
          self,
           Handler | |
| Inherits: | Psych::Handler 
 | 
| Defined in: | ext/psych/lib/psych/tree_builder.rb | 
Overview
Constant Summary
Class Method Summary
- 
    
      .new  ⇒ TreeBuilder 
    
    constructor
    Create a new TreeBuilderinstance.
Instance Attribute Summary
- 
    
      #root  
    
    readonly
    Returns the root node for the built tree. 
Handler - Inherited
| #streaming? | Is this handler a streaming handler? | 
Instance Method Summary
- #alias(anchor)
- 
    
      #end_document(implicit_end = !streaming?)  
    
    Handles end_document events with version,tag_directives, andimplicitstyling.
- #end_stream
- #event_location(start_line, start_column, end_line, end_column)
- #scalar(value, anchor, tag, plain, quoted, style)
- 
    
      #start_document(version, tag_directives, implicit)  
    
    Handles start_document events with version,tag_directives, andimplicitstyling.
- #start_stream(encoding)
- #pop private
- #push(value) private
- #set_end_location(node) private
- #set_location(node) private
- #set_start_location(node) private
Handler - Inherited
| #alias | Called when an alias is found to  | 
| #empty | Called when an empty event happens. | 
| #end_document | Called with the document ends. | 
| #end_mapping | Called when a map ends. | 
| #end_sequence | Called when a sequence ends. | 
| #end_stream | Called when the YAML stream ends. | 
| #event_location | Called before each event with line/column information. | 
| #scalar | Called when a scalar  | 
| #start_document | Called when the document starts with the declared  | 
| #start_mapping | Called when a map starts. | 
| #start_sequence | Called when a sequence is started. | 
| #start_stream | Called with  | 
Constructor Details
    .new  ⇒ TreeBuilder 
  
Create a new TreeBuilder instance
# File 'ext/psych/lib/psych/tree_builder.rb', line 22
def initialize @stack = [] @last = nil @root = nil @start_line = nil @start_column = nil @end_line = nil @end_column = nil end
Instance Attribute Details
#root (readonly)
Returns the root node for the built tree
# File 'ext/psych/lib/psych/tree_builder.rb', line 19
attr_reader :root
Instance Method Details
#alias(anchor)
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 103
def alias anchor a = Nodes::Alias.new(anchor) set_location(a) @last.children << a a end
#end_document(implicit_end = !streaming?)
Handles end_document events with version, tag_directives, and implicit styling.
# File 'ext/psych/lib/psych/tree_builder.rb', line 77
def end_document implicit_end = !streaming? @last.implicit_end = implicit_end n = pop set_end_location(n) n end
#end_stream
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 90
def end_stream n = pop set_end_location(n) n end
#event_location(start_line, start_column, end_line, end_column)
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 33
def event_location(start_line, start_column, end_line, end_column) @start_line = start_line @start_column = start_column @end_line = end_line @end_column = end_column end
#pop (private)
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 116
def pop x = @stack.pop @last = @stack.last x end
#push(value) (private)
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 111
def push value @stack.push value @last = value end
#scalar(value, anchor, tag, plain, quoted, style)
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 96
def scalar value, anchor, tag, plain, quoted, style s = Nodes::Scalar.new(value,anchor,tag,plain,quoted,style) set_location(s) @last.children << s s end
#set_end_location(node) (private)
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 132
def set_end_location(node) node.end_line = @end_line node.end_column = @end_column end
#set_location(node) (private)
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 122
def set_location(node) set_start_location(node) set_end_location(node) end
#set_start_location(node) (private)
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 127
def set_start_location(node) node.start_line = @start_line node.start_column = @start_column end
#start_document(version, tag_directives, implicit)
Handles start_document events with version, tag_directives, and implicit styling.
# File 'ext/psych/lib/psych/tree_builder.rb', line 65
def start_document version, tag_directives, implicit n = Nodes::Document.new version, tag_directives, implicit set_start_location(n) @last.children << n push n end
#start_stream(encoding)
[ GitHub ]# File 'ext/psych/lib/psych/tree_builder.rb', line 84
def start_stream encoding @root = Nodes::Stream.new(encoding) set_start_location(@root) push @root end