Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > psychライブラリ > Psych::Handlerクラス

class Psych::Handler

クラスの継承リスト: Psych::Handler < Object < Kernel < BasicObject

要約

Psych::Parser で用いるイベントハンドラの抽象基底クラスです。

Psych::Parser を使うためには、このクラスを継承し、 取り扱いたいイベントに対応するメソッドを定義します。

目次

インスタンスメソッド
alias empty end_document end_mapping end_sequence end_stream scalar start_document start_mapping start_sequence start_stream streaming?

インスタンスメソッド

alias(anchor) -> ()[permalink][rdoc]

anchor という名前の alias を見付けたときに呼び出されます。

必要に応じてこのメソッドを override してください。

[PARAM] anchor:
aliasのアンカー文字列

以下の YAMLドキュメントは自分自身への参照を持つ配列を表しています。

--- &ponies
- first element
- *ponies

この &ponies が anchor で *ponies が alias です。この場合、 alias メソッドは "poines" という引数で呼び出されます。

empty -> ()[permalink][rdoc]

empty event が発生したときに呼び出されます。

実際問題としてこれが呼び出される例は知られていません。

end_document(implicit) -> ()[permalink][rdoc]

ドキュメントが終了したときに呼び出されます。

ドキュメントが implicit に終わったならば implicit には真が渡されます。

必要に応じてこのメソッドを override してください。

[PARAM] implicit:
ドキュメントが implicit に終わったかどうか

以下の YAML ドキュメントでは implicit は true です。

---
  hello world

また、以下の YAML ドキュメントでは implicit は false です。

---
  hello world
...
end_mapping -> ()[permalink][rdoc]

mapping の終了の見付けたときに呼び出されます。

必要に応じてこのメソッドを override してください。

end_sequence -> ()[permalink][rdoc]

sequence の終了の見付けたときに呼び出されます。

必要に応じてこのメソッドを override してください。

end_stream -> ()[permalink][rdoc]

YAML stream の終端を見付けたときに呼び出されます。

必要に応じてこのメソッドを override してください。

scalar(value, anchor, tag, plain, quoted, style) -> ()[permalink][rdoc]

スカラー値を見付けたときに呼び出されます。

value にはスカラー値の文字列が渡されます。

anchor にはスカラー値に関連付けられた anchor の名前が文字列で渡されます。 anchor がない場合には nil が渡されます。

tag にはスカラー値に関連付けられた tag の名前が文字列で渡されます。 tag がない場合には nil が渡されます。

plain は plain style であるかどうか、quoted は quoted style であるかどうか が渡されます。style には node の style が整数値で渡されます。 style は次の値のいずれかです。

必要に応じてこのメソッドを override してください。

[PARAM] value:
スカラー値
[PARAM] anchor:
関連付けられた anchor の名前
[PARAM] tag:
タグ名
[PARAM] plain:
plain style であるかどうか
[PARAM] quoted:
quoted style であるかどうか
[PARAM] style:
スカラーのスタイル

以下の YAML ドキュメントには多くのパターンのスカラーが含まれています。

---
- !str "foo"
- &anchor fun
- many
  lines
- |
  many
  newlines

この YAML ドキュメントには4つの文字列が含まれています。 scalar メソッドは 順に以下の引数で呼び出されます。

# 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    ]
start_document(version, tag_directives, implicit) -> ()[permalink][rdoc]

YAML ドキュメントの始まりで呼び出されます。

version には YAML ドキュメントに宣言されているバージョンが [major, minor] という配列で渡されます。宣言がない場合は空の配列が渡されます。

tag_directives には tag directive の配列が渡されます。 それぞれの tag は [prefix, suffix] という配列で表現されます。

implicit にはドキュメントが implicit に始まっているかどうかが 真偽値で渡されます。

必要に応じてこのメソッドを override してください。

[PARAM] version:
バージョン
[PARAM] tag_directives:
tag directive の配列
[PARAM] implicit:
ドキュメントが implicit に始まっているかどうか

以下の YAML に対しては

%YAML 1.1
%TAG ! tag:tenderlovemaking.com,2009:
--- !squee

start_document に渡される引数は以下の通りです

version         # => [1, 1]
tag_directives  # => [["!", "tag:tenderlovemaking.com,2009:"]]
implicit        # => false

以下の YAML に対しては

- x
- y

start_document に渡される引数は以下の通りです。

version         # => []
tag_directives  # => []
implicit        # => true
start_mapping(anchor, tag, implicit, style) -> ()[permalink][rdoc]

mapping の開始を見付けたときに呼び出されます。

anchor には map に関連付けられた anchor の名前が文字列で渡されます。 anchor がない場合には nil が渡されます。

tag には map に関連付けられた tag の名前が文字列で渡されます。 tag がない場合には nil が渡されます。

implicit には map が implicit に開始されたかどうかが 真偽値で渡されます。

style には sequence の style が整数値で渡されます。以下のいずれか です。

必要に応じてこのメソッドを override してください。

[PARAM] anchor:
関連付けられた anchor の名前
[PARAM] tag:
タグ名
[PARAM] implicit:
mapping が implicit に開始されかどうか
[PARAM] style:
mapping のスタイル

以下の YAML ドキュメントを例として考えます。

---
k: !!map { hello: world }
v: &pewpew
  hello: world

この YAML ドキュメントには3つの mapping が含まれています。 外側の map の中に 2 つの map が含まれています。 start_mapping メソッドは 順に以下の引数で呼び出されます。

# anchor    tag                       implicit  style
[nil,       nil,                      true,     1     ]
[nil,       "tag:yaml.org,2002:map",  false,    2     ]
["pewpew",  nil,                      true,     1     ]
start_sequence(anchor, tag, implicit, style) -> ()[permalink][rdoc]

sequence の開始を見付けたときに呼び出されます。

anchor には sequence に関連付けられた anchor の名前が文字列で渡されます。 anchor がない場合には nil が渡されます。

tag には sequence に関連付けられた tag の名前が文字列で渡されます。 tag がない場合には nil が渡されます。

implicit には sequence が implicit に開始されたかどうかが 真偽値で渡されます。

style には sequence の style が整数値で渡されます。以下のいずれか です。

必要に応じてこのメソッドを override してください。

[PARAM] anchor:
関連付けられた anchor の名前
[PARAM] tag:
タグ名
[PARAM] implicit:
sequence が implicit に開始されかどうか
[PARAM] style:
sequence のスタイル

Example

以下の YAML ドキュメントを例として考えます。

---
- !!seq [
  a
]
- &pewpew
  - b

この YAML ドキュメントには3つの list が含まれています。 外側の list の中に 2 つの list が含まれています。 start_sequence メソッドは 順に以下の引数で呼び出されます。

# anchor    tag                       implicit  style
[nil,       nil,                      true,     1     ]
[nil,       "tag:yaml.org,2002:seq",  false,    2     ]
["pewpew",  nil,                      true,     1     ]
start_stream(encoding) -> ()[permalink][rdoc]

YAML ストリームの始まりで呼び出されます。

encoding にはストリームのエンコーディング(以下のいずれか)が渡されます。

このメソッドは YAML のストリームごとに呼び出されます。一つのストリームには 複数のドキュメントが含まれている可能性があります。

必要に応じてこのメソッドを override してください。

[PARAM] encoding:
ストリームのエンコーディング(整数値)
streaming? -> bool[permalink][rdoc]

handler が streaming handler であるならば真を返すように override してください。

デフォルトでは false を返します。