class Psych::Handler
Psych::Handler
是一个抽象基类,它定义了在处理 Psych::Parser
时使用的事件。想要使用 Psych::Parser
的客户端应该实现一个继承自 Psych::Handler
的类,并定义它们可以处理的事件。
Psych::Handler
定义了 Psych::Parser
可能发送给事件处理程序的所有事件。
更多详情请查看 Psych::Parser
常量
- EVENTS
Handler
应该响应的事件。- OPTIONS
默认的转储选项
公共实例方法
当发生空事件时调用。(据我所知,这种情况永远不会发生)。
# File psych/lib/psych/handler.rb, line 236 def empty end
当映射结束时调用
# File psych/lib/psych/handler.rb, line 230 def end_mapping end
当序列结束时调用。
# File psych/lib/psych/handler.rb, line 191 def end_sequence end
当 YAML 流结束时调用
# File psych/lib/psych/handler.rb, line 241 def end_stream end
在每个事件之前调用,包含行/列信息。
# File psych/lib/psych/handler.rb, line 246 def event_location(start_line, start_column, end_line, end_column) end
当找到标量 value
时调用。标量可能具有 anchor
、tag
,或者隐式地为 plain
或隐式地为 quoted
value
是标量的字符串值,anchor
是关联的锚点或 nil,tag
是关联的标签或 nil,plain
是一个布尔值,quoted
是一个布尔值,style
是一个指示字符串样式的整数。
有关 style
的可能值,请参阅 Psych::Nodes::Scalar
中的常量
示例¶ ↑
这是一个 YAML 文档,它演示了此方法可以被调用的各种可能的方式
--- - !str "foo" - &anchor fun - many lines - | many newlines
上面的 YAML 文档包含一个包含四个字符串的列表。以下是按相同顺序发送给此方法的参数
# 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 ]
# File psych/lib/psych/handler.rb, line 150 def scalar value, anchor, tag, plain, quoted, style end
当文档开始时调用,包含声明的 version
、tag_directives
,如果文档是 implicit
的话。
version
将是一个整数数组,指示正在处理的 YAML 版本,tag_directives
是一个元组列表,指示每个标签的前缀和后缀,implicit
是一个布尔值,指示文档是否是隐式启动的。
示例¶ ↑
给定以下 YAML
%YAML 1.1 %TAG ! tag:tenderlovemaking.com,2009: --- !squee
start_document
的参数必须是这样
version # => [1, 1] tag_directives # => [["!", "tag:tenderlovemaking.com,2009:"]] implicit # => false
# File psych/lib/psych/handler.rb, line 72 def start_document version, tag_directives, implicit end
当映射开始时调用。
anchor
是与映射关联的锚点或 nil
。tag
是与映射关联的标签或 nil
。implicit
是一个布尔值,指示映射是否是隐式开始的。style
是一个整数,指示映射样式。
有关 style
的可能值,请参阅 Psych::Nodes::Mapping
中的常量。
示例¶ ↑
这是一个 YAML 文档,它演示了此方法可以被调用的各种可能的方式
--- k: !!map { hello: world } v: &pewpew hello: world
上面的 YAML 文档由三个映射组成,一个包含两个内部映射的外部映射。以下是按顺序发送的参数的矩阵,用于表示这三个映射
# anchor tag implicit style [nil, nil, true, 1 ] [nil, "tag:yaml.org,2002:map", false, 2 ] ["pewpew", nil, true, 1 ]
# File psych/lib/psych/handler.rb, line 225 def start_mapping anchor, tag, implicit, style end
当序列开始时调用。
anchor
是与序列关联的锚点或 nil。tag
是与序列关联的标签或 nil。implicit
是一个布尔值,指示序列是否是隐式开始的。style
是一个整数,指示列表样式。
有关 style
的可能值,请参阅 Psych::Nodes::Sequence
中的常量。
示例¶ ↑
这是一个 YAML 文档,它演示了此方法可以被调用的各种可能的方式
--- - !!seq [ a ] - &pewpew - b
上面的 YAML 文档由三个列表组成,一个包含两个内部列表的外部列表。以下是发送的参数的矩阵,用于表示这些列表
# anchor tag implicit style [nil, nil, true, 1 ] [nil, "tag:yaml.org,2002:seq", false, 2 ] ["pewpew", nil, true, 1 ]
# File psych/lib/psych/handler.rb, line 186 def start_sequence anchor, tag, implicit, style end
当 YAML 流开始时调用,包含 encoding
。此方法每个流调用一次。一个流可能包含多个文档。
有关 encoding
的可能值,请参阅 Psych::Parser
中的常量。
# File psych/lib/psych/handler.rb, line 47 def start_stream encoding end
此处理程序是流处理程序吗?
# File psych/lib/psych/handler.rb, line 251 def streaming? false end