類別 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 230 def end_mapping end
在序列結束時呼叫。
# File ext/psych/lib/psych/handler.rb, line 191 def end_sequence end
在 YAML
串流結束時呼叫
# File ext/psych/lib/psych/handler.rb, line 241 def end_stream end
在每個事件之前呼叫,並提供行/欄資訊。
# File ext/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
是關聯的 anchor 或 nil,tag
是關聯的 tag 或 nil,plain
是布林值,quoted
是布林值,style
是表示字串樣式的整數
請參閱 Psych::Nodes::Scalar
中的常數,以了解 style
的可能值
範例¶ ↑
以下是 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 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 ext/psych/lib/psych/handler.rb, line 72 def start_document version, tag_directives, implicit end
在映射開始時呼叫。
anchor
是與映射關聯的 anchor 或 nil
。tag
是與映射關聯的 tag 或 nil
。implicit
是表示映射是否隱含地開始的布林值。style
是表示映射樣式的整數。
請參閱 Psych::Nodes::Mapping
中的常數,以了解 style
的可能值。
範例¶ ↑
以下是 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 225 def start_mapping anchor, tag, implicit, style end
在序列開始時呼叫。
anchor
是與序列關聯的錨點或 nil。tag
是與序列關聯的標籤或 nil。implicit
是布林值,表示序列是否已隱含開始。style
是表示清單樣式的整數。
請參閱 Psych::Nodes::Sequence
中的常數,以取得 style
的可能值。
範例¶ ↑
以下是 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 186 def start_sequence anchor, tag, implicit, style end
在 YAML
串流開始時呼叫,並傳入 encoding
。此方法每串流呼叫一次。一個串流可能包含多個文件。
請參閱 Psych::Parser
中的常數,以取得 encoding
的可能值。
# File ext/psych/lib/psych/handler.rb, line 47 def start_stream encoding end
此處理常式是否為串流處理常式?
# File ext/psych/lib/psych/handler.rb, line 251 def streaming? false end