class 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://jp.rubyist.net/magazine/
- プログラマーのための YAML 入門 (探索編): http://jp.rubyist.net/magazine/?0013-YAML
特異メソッド
each_path(str) {|ypath| ...} -> Array
-
引数 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
-
自身を初期化します。
- [PARAM] str:
- YPath でパース可能なパスを文字列で指定します。
例:
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
-
使用されていません。常に nil を返します。
flags=(val)
-
使用されていません。
predicates -> [String]
-
self.segments の同じ位置に対応する検索条件を文字列の配列で返します。
predicates=(val)
-
self.segments の同じ位置に対応する検索条件を文字列の配列で設定します。
- [PARAM] val:
- 検索条件を文字列の配列で指定します。
segments -> [String]
-
検索するパスを / で区切った文字列の配列を返します。
segments=(val)
-
検索するパスを文字列の配列で設定します。
- [PARAM] val:
- 文字列の配列を指定します。
class Syck::YPath