類別 Psych::Handler

Psych::Handler 是定義處理 Psych::Parser 時所使用事件的抽象基礎類別。想要使用 Psych::Parser 的客戶端應該實作一個繼承自 Psych::Handler 的類別,並定義他們可以處理的事件。

Psych::Handler 定義了 Psych::Parser 可能會傳送給事件處理常式的所有事件。

請參閱 Psych::Parser 以取得更多詳細資料

常數

EVENTS

Handler 應該回應的事件。

OPTIONS

預設傾印選項

公開實例方法

alias(anchor) 按一下以切換來源

當找到指向 anchor 的別名時呼叫。anchor 會是找到的錨點名稱。

範例

以下是 YAML 中自參照陣列的範例

--- &ponies
- first element
- *ponies

&ponies 是錨點,*ponies 是別名。在此情況下,alias 會呼叫 “ponies”。

# File ext/psych/lib/psych/handler.rb, line 110
def alias anchor
end
empty() 按一下以切換來源

當發生空事件時呼叫。(就我所知,這永遠不會發生)。

# File ext/psych/lib/psych/handler.rb, line 236
def empty
end
end_document(implicit) 按一下以切換來源

當文件結束時呼叫。implicit 是布林值,表示文件是否有隱含的結尾。

範例

給定以下 YAML

---
  hello world

implicit 會是 true。給定此 YAML

---
  hello world
...

implicit 將會為 false。

# File ext/psych/lib/psych/handler.rb, line 93
def end_document implicit
end
end_mapping() 按一下以切換來源

在映射結束時呼叫

# File ext/psych/lib/psych/handler.rb, line 230
def end_mapping
end
end_sequence() 按一下以切換來源

在序列結束時呼叫。

# File ext/psych/lib/psych/handler.rb, line 191
def end_sequence
end
end_stream() 按一下以切換來源

YAML 串流結束時呼叫

# File ext/psych/lib/psych/handler.rb, line 241
def end_stream
end
event_location(start_line, start_column, end_line, end_column) 按一下以切換來源

在每個事件之前呼叫,並提供行/欄資訊。

# File ext/psych/lib/psych/handler.rb, line 246
def event_location(start_line, start_column, end_line, end_column)
end
scalar(value, anchor, tag, plain, quoted, style) 按一下以切換來源

在找到一個純量 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
start_document(version, tag_directives, implicit) 按一下以切換來源

在文件以宣告的 versiontag_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
start_mapping(anchor, tag, implicit, style) 按一下以切換來源

在映射開始時呼叫。

anchor 是與映射關聯的 anchor 或 niltag 是與映射關聯的 tag 或 nilimplicit 是表示映射是否隱含地開始的布林值。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
start_sequence(anchor, tag, implicit, style) 按一下以切換來源

在序列開始時呼叫。

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
start_stream(encoding) 按一下以切換來源

YAML 串流開始時呼叫,並傳入 encoding。此方法每串流呼叫一次。一個串流可能包含多個文件。

請參閱 Psych::Parser 中的常數,以取得 encoding 的可能值。

# File ext/psych/lib/psych/handler.rb, line 47
def start_stream encoding
end
streaming?() 按一下以切換來源

此處理常式是否為串流處理常式?

# File ext/psych/lib/psych/handler.rb, line 251
def streaming?
  false
end