Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > syck/ypathライブラリ > Syck::YPathクラス
クラスの継承リスト: Syck::YPath < Object < Kernel < BasicObject
YAML ドキュメントから特定のデータを検索する機能を提供するクラスです。
使用例;"name" を含むセグメントを表示する。
require 'syck'
require 'yaml'
YAML.parse_documents(DATA){|doc|
doc.search('/*//name').each {|node|
YAML::YPath.each_path(node){|u|
p u.segments
}
}
}
__END__
cat:
- name: taro
age: 7
- name: jiro
age: 23
---
dog:
shiba:
- name: goro
age: 3
- name: rokuro
age: 1
# end of sample
Rubyist Magazine: http://magazine.rubyist.net/
each_path(str) {|ypath| ...} -> Array[permalink][rdoc]引数 str を Syck::YPath が 検索できる複数のパスに再構築して、その各パスに対してブロックを評価します。
各パスに対してブロックを評価した結果の配列を返します。
例1: YAML::YPath.each_path を使用する場合
require 'syck'
require 'yaml'
path = "/*/((one|three)/name|place)|//place"
YAML::YPath.each_path(path) { |ypath|
...
}
例2: YAML::YPath.each_path を使用しない場合
require 'syck' require 'yaml' ["/*/one/name", "/*/three/name", "/*/place", "//place"].each do |path| ypath = YAML::YPath.new(path) ... end
new(str) -> Syck::YPath[permalink][rdoc]自身を初期化します。
例:
require 'syck' require 'yaml' str = "/ugo[:hoge]/0/name" p YAML::YPath.new(str) #=> #<YAML::YPath:0x3238cc @predicates=[":hoge", nil, nil], @segments=["ugo", "0", "name"], @flags=nil>
flags -> nil[permalink][rdoc]使用されていません。常に nil を返します。
flags=(val)[permalink][rdoc]使用されていません。
predicates -> [String][permalink][rdoc]self.segments の同じ位置に対応する検索条件を文字列の配列で返します。
predicates=(val)[permalink][rdoc]self.segments の同じ位置に対応する検索条件を文字列の配列で設定します。
segments -> [String][permalink][rdoc]検索するパスを / で区切った文字列の配列を返します。
segments=(val)[permalink][rdoc]検索するパスを文字列の配列で設定します。