Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > yaml/ypathライブラリ > YAML::YPathクラス
クラスの継承リスト: YAML::YPath < Object < Kernel
YAML ドキュメントから特定のデータを検索する機能を提供するクラスです。
使用例;"name" を含むセグメントを表示する。
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 を YAML::YPath が 検索できる複数のパスに再構築して、その各パスに対してブロックを評価します。
各パスに対してブロックを評価した結果の配列を返します。
例1: YAML::YPath.each_path を使用する場合
require 'yaml' path = "/*/((one|three)/name|place)|//place" YAML::YPath.each_path(path) { |ypath| ... }
例2: YAML::YPath.each_path を使用しない場合
require 'yaml' ["/*/one/name", "/*/three/name", "/*/place", "//place"].each do |path| ypath = YAML::YPath.new(path) ... end
new(str) -> YAML::YPath
[permalink][rdoc]自身を初期化します。
例:
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]検索するパスを文字列の配列で設定します。