类 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