Class: Psych::Handler
- Defined in:
- lib/psych/handler.rb,
ext/psych/psych_emitter.c
Overview
Psych::Handler is an abstract base class that defines the events used when dealing with Psych::Parser. Clients who want to use Psych::Parser should implement a class that inherits from Psych::Handler and define events that they can handle.
Psych::Handler defines all events that Psych::Parser can possibly send to event handlers.
See Psych::Parser for more details
Direct Known Subclasses
Defined Under Namespace
Classes: DumperOptions
Constant Summary collapse
- OPTIONS =
Default dumping options
DumperOptions.new
- EVENTS =
Events that a Handler should respond to.
[ :alias, :empty, :end_document, :end_mapping, :end_sequence, :end_stream, :scalar, :start_document, :start_mapping, :start_sequence, :start_stream ]
Instance Method Summary collapse
-
#alias(anchor) ⇒ Object
Called when an alias is found to
anchor
. -
#empty ⇒ Object
Called when an empty event happens.
-
#end_document(implicit) ⇒ Object
Called with the document ends.
-
#end_mapping ⇒ Object
Called when a map ends.
-
#end_sequence ⇒ Object
Called when a sequence ends.
-
#end_stream ⇒ Object
Called when the YAML stream ends.
-
#event_location(start_line, start_column, end_line, end_column) ⇒ Object
Called before each event with line/column information.
-
#scalar(value, anchor, tag, plain, quoted, style) ⇒ Object
Called when a scalar
value
is found. -
#start_document(version, tag_directives, implicit) ⇒ Object
Called when the document starts with the declared
version
,tag_directives
, if the document isimplicit
. -
#start_mapping(anchor, tag, implicit, style) ⇒ Object
Called when a map starts.
-
#start_sequence(anchor, tag, implicit, style) ⇒ Object
Called when a sequence is started.
-
#start_stream(encoding) ⇒ Object
Called with
encoding
when the YAML stream starts. -
#streaming? ⇒ Boolean
Is this handler a streaming handler?.
Instance Method Details
#alias(anchor) ⇒ Object
Called when an alias is found to anchor
. anchor
will be the name of the anchor found.
Example
Here we have an example of an array that references itself in YAML:
--- &ponies
- first element
- *ponies
&ponies is the anchor, *ponies is the alias. In this case, alias is called with “ponies”.
110 111 |
# File 'lib/psych/handler.rb', line 110 def alias anchor end |
#empty ⇒ Object
Called when an empty event happens. (Which, as far as I can tell, is never).
236 237 |
# File 'lib/psych/handler.rb', line 236 def empty end |
#end_document(implicit) ⇒ Object
Called with the document ends. implicit
is a boolean value indicating whether or not the document has an implicit ending.
Example
Given the following YAML:
---
hello world
implicit
will be true. Given this YAML:
---
hello world
...
implicit
will be false.
93 94 |
# File 'lib/psych/handler.rb', line 93 def end_document implicit end |
#end_mapping ⇒ Object
Called when a map ends
230 231 |
# File 'lib/psych/handler.rb', line 230 def end_mapping end |
#end_sequence ⇒ Object
Called when a sequence ends.
191 192 |
# File 'lib/psych/handler.rb', line 191 def end_sequence end |
#end_stream ⇒ Object
Called when the YAML stream ends
241 242 |
# File 'lib/psych/handler.rb', line 241 def end_stream end |
#event_location(start_line, start_column, end_line, end_column) ⇒ Object
Called before each event with line/column information.
246 247 |
# File 'lib/psych/handler.rb', line 246 def event_location(start_line, start_column, end_line, end_column) end |
#scalar(value, anchor, tag, plain, quoted, style) ⇒ Object
Called when a scalar value
is found. The scalar may have an anchor
, a tag
, be implicitly plain
or implicitly quoted
value
is the string value of the scalar anchor
is an associated anchor or nil tag
is an associated tag or nil plain
is a boolean value quoted
is a boolean value style
is an integer indicating the string style
See the constants in Psych::Nodes::Scalar for the possible values of style
Example
Here is a YAML document that exercises most of the possible ways this method can be called:
---
- !str "foo"
- &anchor fun
- many
lines
- |
many
newlines
The above YAML document contains a list with four strings. Here are the parameters sent to this method in the same order:
# value anchor tag plain quoted style
["foo", nil, "!str", false, false, 3 ]
["fun", "anchor", nil, true, false, 1 ]
["many lines", nil, nil, true, false, 1 ]
["many\nnewlines\n", nil, nil, false, true, 4 ]
150 151 |
# File 'lib/psych/handler.rb', line 150 def scalar value, anchor, tag, plain, quoted, style end |
#start_document(version, tag_directives, implicit) ⇒ Object
Called when the document starts with the declared version
, tag_directives
, if the document is implicit
.
version
will be an array of integers indicating the YAML version being dealt with, tag_directives
is a list of tuples indicating the prefix and suffix of each tag, and implicit
is a boolean indicating whether the document is started implicitly.
Example
Given the following YAML:
%YAML 1.1
%TAG ! tag:tenderlovemaking.com,2009:
--- !squee
The parameters for start_document must be this:
version # => [1, 1]
tag_directives # => [["!", "tag:tenderlovemaking.com,2009:"]]
implicit # => false
72 73 |
# File 'lib/psych/handler.rb', line 72 def start_document version, tag_directives, implicit end |
#start_mapping(anchor, tag, implicit, style) ⇒ Object
Called when a map starts.
anchor
is the anchor associated with the map or nil
. tag
is the tag associated with the map or nil
. implicit
is a boolean indicating whether or not the map was implicitly started. style
is an integer indicating the mapping style.
See the constants in Psych::Nodes::Mapping for the possible values of style
.
Example
Here is a YAML document that exercises most of the possible ways this method can be called:
---
k: !!map { hello: world }
v: &pewpew
hello: world
The above YAML document consists of three maps, an outer map that contains two inner maps. Below is a matrix of the parameters sent in order to represent these three maps:
# anchor tag implicit style
[nil, nil, true, 1 ]
[nil, "tag:yaml.org,2002:map", false, 2 ]
["pewpew", nil, true, 1 ]
225 226 |
# File 'lib/psych/handler.rb', line 225 def start_mapping anchor, tag, implicit, style end |
#start_sequence(anchor, tag, implicit, style) ⇒ Object
Called when a sequence is started.
anchor
is the anchor associated with the sequence or nil. tag
is the tag associated with the sequence or nil. implicit
a boolean indicating whether or not the sequence was implicitly started. style
is an integer indicating the list style.
See the constants in Psych::Nodes::Sequence for the possible values of style
.
Example
Here is a YAML document that exercises most of the possible ways this method can be called:
---
- !!seq [
a
]
- &pewpew
- b
The above YAML document consists of three lists, an outer list that contains two inner lists. Here is a matrix of the parameters sent to represent these lists:
# anchor tag implicit style
[nil, nil, true, 1 ]
[nil, "tag:yaml.org,2002:seq", false, 2 ]
["pewpew", nil, true, 1 ]
186 187 |
# File 'lib/psych/handler.rb', line 186 def start_sequence anchor, tag, implicit, style end |
#start_stream(encoding) ⇒ Object
Called with encoding
when the YAML stream starts. This method is called once per stream. A stream may contain multiple documents.
See the constants in Psych::Parser for the possible values of encoding
.
47 48 |
# File 'lib/psych/handler.rb', line 47 def start_stream encoding end |
#streaming? ⇒ Boolean
Is this handler a streaming handler?
251 252 253 |
# File 'lib/psych/handler.rb', line 251 def streaming? false end |