In Files

  • yaml/ypath.rb

Parent

Methods

YAML::YPath

Attributes

flags[RW]
predicates[RW]
segments[RW]

Public Class Methods

each_path( str ) click to toggle source
 
               # File yaml/ypath.rb, line 25
def YPath.each_path( str )
    #
    # Find choices
    #
    paths = []
    str = "(#{ str })"
    while str.sub!( /\(([^()]+)\)/, "\n#{ paths.length }\n" )
        paths.push $1.split( '|' )
    end

    #
    # Construct all possible paths
    #
    all = [ str ]
    ( paths.length - 1 ).downto( 0 ) do |i|
        all = all.collect do |a|
            paths[i].collect do |p|
                a.gsub( /\n#{ i }\n/, p )
            end
        end.flatten.uniq
    end
    all.collect do |path|
        yield YPath.new( path )
    end
end
            
new( str ) click to toggle source
 
               # File yaml/ypath.rb, line 9
def initialize( str )
    @segments = []
    @predicates = []
    @flags = nil
    while str =~ /^\/?(\/|[^\/\[]+)(?:\[([^\]]+)\])?/
        @segments.push $1
        @predicates.push $2
        str = $'
    end
    unless str.to_s.empty?
        @segments += str.split( "/" )
    end
    if @segments.length == 0
        @segments.push "."
    end
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus