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
这个处理程序是一个流式处理程序吗?