Class YAML::YRegexPath
In: lib/yaml_extensions/yregexpath.rb
Parent: Object

Methods

new  

Attributes

root  [R] 
segments  [R] 
wanted_node_index  [R] 

Public Class methods

[Source]

# File lib/yaml_extensions/yregexpath.rb, line 14
    def initialize ( str )
      raise ArgumentError, 'Argument must be a string' unless str.is_a?(String)
      @segments = []
      @wanted_node_index = nil
      @root = (str[0] == ?/)
      while str =~ /^(\/|#)?((?:(?:\\.)|[^\\=\/#])+)(?:=((?:(?:\\.)|[^\\\/#])*))?/
        if ($1 == "#")
          if (@wanted_node_index.nil?)
            @wanted_node_index = @segments.length
          else
            raise ArgumentError, 'More than a "#" given.'
          end
        end
        if ($3.nil?)
          @segments << Regexp.new($2)
        else
          @segments << [ Regexp.new($2), Regexp.new($3) ]
        end
        str = $'
      end
      @wanted_node_index = @segments.length if @wanted_node_index.nil?
    end

[Validate]