class Psych::Handler
Psych::Handler
是一个抽象基类,定义了处理 Psych::Parser
时使用的事件。想要使用 Psych::Parser
的客户端应该实现一个继承自 Psych::Handler
的类,并定义它们可以处理的事件。
Psych::Handler
定义了 Psych::Parser
可能发送给事件处理程序的所有事件。
详情请参阅 Psych::Parser
常量
- EVENTS
-
Handler
应该响应的事件。 - OPTIONS
-
默认的转储选项
公共实例方法
源代码
源代码
# File ext/psych/lib/psych/handler.rb, line 236 def empty end
当发生空事件时调用。(据我所知,这种情况永远不会发生)。
源代码
源代码
# File ext/psych/lib/psych/handler.rb, line 191 def end_sequence end
当一个序列结束时调用。
源代码
# File ext/psych/lib/psych/handler.rb, line 246 def event_location(start_line, start_column, end_line, end_column) end
在每个事件之前调用,提供行/列信息。
源代码
# File ext/psych/lib/psych/handler.rb, line 150 def scalar value, anchor, tag, plain, quoted, style 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 ext/psych/lib/psych/handler.rb, line 72 def start_document version, tag_directives, implicit 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 ext/psych/lib/psych/handler.rb, line 225 def start_mapping anchor, tag, implicit, style 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 ext/psych/lib/psych/handler.rb, line 186 def start_sequence 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 ext/psych/lib/psych/handler.rb, line 47 def start_stream encoding end
当 YAML
流开始时,会调用此方法并传入 encoding
。每个流调用此方法一次。一个流可能包含多个文档。
有关 encoding
的可能值,请参阅 Psych::Parser
中的常量。
源代码
# File ext/psych/lib/psych/handler.rb, line 251 def streaming? false end
这个处理程序是一个流式处理程序吗?