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