Object
# File lib/journey/path/pattern.rb, line 6 def initialize strexp parser = Journey::Parser.new @anchored = true case strexp when String @spec = parser.parse strexp @requirements = {} @separators = "/.?" when Router::Strexp @spec = parser.parse strexp.path @requirements = strexp.requirements @separators = strexp.separators.join @anchored = strexp.anchor else raise "wtf bro: #{strexp}" end @names = nil @optional_names = nil @required_names = nil @re = nil @offsets = nil end
# File lib/journey/path/pattern.rb, line 32 def ast @spec.grep(Nodes::Symbol).each do |node| re = @requirements[node.to_sym] node.regexp = re if re end @spec.grep(Nodes::Star).each do |node| node = node.left node.regexp = @requirements[node.to_sym] || /(.+)/ end @spec end
# File lib/journey/path/pattern.rb, line 166 def match other return unless match = to_regexp.match(other) MatchData.new names, offsets, match end
# File lib/journey/path/pattern.rb, line 46 def names @names ||= spec.grep(Nodes::Symbol).map { |n| n.name } end
# File lib/journey/path/pattern.rb, line 54 def optional_names @optional_names ||= spec.grep(Nodes::Group).map { |group| group.grep(Nodes::Symbol) }.flatten.map { |n| n.name }.uniq end
# File lib/journey/path/pattern.rb, line 50 def required_names @required_names ||= names - optional_names end
Generated with the Darkfish Rdoc Generator 2.