Psych::Parser で用いるイベントハンドラの抽象基底クラスです。
Psych::Parser を使うためには、このクラスを継承し、取り扱いたいイベントに対応するメソッドを定義します。
alias(anchor) -> ()
[permalink][rdoc]anchor という名前の alias を見付けたときに呼び出されます。
必要に応じてこのメソッドを override してください。
以下の YAMLドキュメントは自分自身への参照を持つ配列を表しています。
--- &ponies - first element - *ponies
この &ponies が anchor で *ponies が alias です。この場合、 alias メソッドは "poines" という引数で呼び出されます。
empty -> ()
[permalink][rdoc]empty event が発生したときに呼び出されます。
実際問題としてこれが呼び出される例は知られていません。
end_document(implicit) -> ()
[permalink][rdoc]ドキュメントが終了したときに呼び出されます。
ドキュメントが implicit に終わったならば implicit には真が渡されます。
必要に応じてこのメソッドを override してください。
以下の 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 してください。
以下の 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 してください。
以下の 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 してください。
以下の 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 してください。
以下の 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 してください。
streaming? -> bool
[permalink][rdoc]handler が streaming handler であるならば真を返すように override してください。
デフォルトでは false を返します。