Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > yaml/basenodeライブラリ > YAML::BaseNodeモジュール

module YAML::BaseNode

クラスの継承リスト: YAML::BaseNode

要約

YAML のノードを検索するのためのモジュールです。

目次

インスタンスメソッド
[] at children children_with_index emit match_path match_segment search select select!

インスタンスメソッド

self[*key] -> object | [object] | nil[permalink][rdoc]

引数で指定したキーに対応する値(もしくは引数で指定したインデックスに対応 する値の配列)を返します。対応する値がない場合は nil を返します。

[PARAM] key:
Hash のキーか Array のインデックスを文字列で指定 します。後者の場合は複数個指定する事ができます。
at(segment) -> object | nil[permalink][rdoc]

指定したキー(もしくはインデックス)に対応する値を返します。対応する値が ない場合は nil を返します。

[PARAM] segment:
Hash のキーか Array のインデックスを文字列で 指定します。
children -> [object][permalink][rdoc]

自身が持つ値の配列を返します。

children_with_index -> [[object, Integer]][permalink][rdoc]

自身が持つ値とインデックス(もしくはキー)の配列の配列を返します。

emit -> String[permalink][rdoc]

自身を YAML 形式の文字列にして返します。

match_path(ypath_str) -> Array[permalink][rdoc]

ライブラリの内部で使用します。

match_segment(ypath, depth) -> Array[permalink][rdoc]

ライブラリの内部で使用します。

引数で指定したパスのノードを検索します。見つかったパスの配列を返します。

[PARAM] ypath_str:
検索するパスを文字列で指定します。
require 'yaml'

node = YAML.parse(DATA)
p node.search("//name")           # => ["/dog/shiba/0/name", "/cat/0/name"]
p node.search("//(name|height)")  # => ["/dog/shiba/0/name", "/cat/0/name"]

__END__
cat:
  - name: taro
    age: 7
dog:
  shiba:
   - name: jiro
     age: 23
select(ypath_str) -> [YAML::Syck::Node][permalink][rdoc]

引数で指定したパスのノードを検索します。見つかったノードの配列を返します。

[PARAM] ypath_str:
検索するパスを文字列で指定します。
require 'yaml'

node = YAML.parse(DATA)
# "taro" と "jiro" のノードの配列を返す。
p node.select("//name")
# => [#<YAML::Syck::Scalar:0xf738b77c>, #<YAML::Syck::Scalar:0xf738b9ac>]

# [{"name"=>"taro", "age"=>7}] のノードの配列を返す。
p node.select("/cat")
# => [#<YAML::Syck::Seq:0xf7391910>]

__END__
cat:
  - name: taro
    age: 7
dog:
  shiba:
   - name: jiro
     age: 23
select!(ypath_str) -> [object][permalink][rdoc]

引数で指定したパスのノードを検索します。見つかったノードをそれぞれ YAML::Syck::Node#transform で Ruby のオブジェクトにした配列を返し ます。

[PARAM] ypath_str:
検索するパスを文字列で指定します。
require 'yaml'

node = YAML.parse(DATA)
p node.select!("//name")
# => ["taro", "jiro"]

p node.select!("/cat")
# => [[{"name"=>"taro", "age"=>7}]]

__END__
cat:
  - name: taro
    age: 7
dog:
  shiba:
   - name: jiro
     age: 23

[SEE_ALSO] YAML::Syck::Node#transform