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
TreeBuilder
instance.
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
, andimplicit
styling. - #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
, andimplicit
styling. - #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