Class: Psych::TreeBuilder
Overview
This class works in conjunction with Psych::Parser to build an in-memory parse tree that represents a YAML document.
Example
parser = Psych::Parser.new Psych::TreeBuilder.new
parser.parse('--- foo')
tree = parser.handler.root
See Psych::Handler for documentation on the event methods used in this class.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#root ⇒ Object
readonly
Returns the root node for the built tree.
Instance Method Summary collapse
- #alias(anchor) ⇒ Object
-
#end_document(implicit_end = !streaming?) ⇒ Object
Handles end_document events with
version
,tag_directives
, andimplicit
styling. - #end_stream ⇒ Object
-
#initialize ⇒ TreeBuilder
constructor
Create a new TreeBuilder instance.
- #scalar(value, anchor, tag, plain, quoted, style) ⇒ Object
-
#start_document(version, tag_directives, implicit) ⇒ Object
Handles start_document events with
version
,tag_directives
, andimplicit
styling. - #start_stream(encoding) ⇒ Object
Methods inherited from Handler
#empty, #end_mapping, #end_sequence, #start_mapping, #start_sequence, #streaming?
Constructor Details
#initialize ⇒ TreeBuilder
Create a new TreeBuilder instance
21 22 23 24 25 |
# File 'lib/psych/tree_builder.rb', line 21 def initialize @stack = [] @last = nil @root = nil end |
Instance Attribute Details
Instance Method Details
#alias(anchor) ⇒ Object
80 81 82 |
# File 'lib/psych/tree_builder.rb', line 80 def alias anchor @last.children << Nodes::Alias.new(anchor) end |
#end_document(implicit_end = !streaming?) ⇒ Object
Handles end_document events with version
, tag_directives
, and implicit
styling.
See Psych::Handler#start_document
60 61 62 63 |
# File 'lib/psych/tree_builder.rb', line 60 def end_document implicit_end = !streaming? @last.implicit_end = implicit_end pop end |
#end_stream ⇒ Object
70 71 72 |
# File 'lib/psych/tree_builder.rb', line 70 def end_stream pop end |
#scalar(value, anchor, tag, plain, quoted, style) ⇒ Object
74 75 76 77 78 |
# File 'lib/psych/tree_builder.rb', line 74 def scalar value, anchor, tag, plain, quoted, style s = Nodes::Scalar.new(value,anchor,tag,plain,quoted,style) @last.children << s s end |
#start_document(version, tag_directives, implicit) ⇒ Object
Handles start_document events with version
, tag_directives
, and implicit
styling.
See Psych::Handler#start_document
49 50 51 52 53 |
# File 'lib/psych/tree_builder.rb', line 49 def start_document version, tag_directives, implicit n = Nodes::Document.new version, tag_directives, implicit @last.children << n push n end |