Object
# File lib/journey/path/pattern.rb, line 6 6: def initialize strexp 7: parser = Journey::Parser.new 8: 9: @anchored = true 10: 11: case strexp 12: when String 13: @spec = parser.parse strexp 14: @requirements = {} 15: @separators = "/.?" 16: when Router::Strexp 17: @spec = parser.parse strexp.path 18: @requirements = strexp.requirements 19: @separators = strexp.separators.join 20: @anchored = strexp.anchor 21: else 22: raise "wtf bro: #{strexp}" 23: end 24: 25: @names = nil 26: @optional_names = nil 27: @required_names = nil 28: @re = nil 29: @offsets = nil 30: end
# File lib/journey/path/pattern.rb, line 32 32: def ast 33: @spec.grep(Nodes::Symbol).each do |node| 34: re = @requirements[node.to_sym] 35: node.regexp = re if re 36: end 37: 38: @spec.grep(Nodes::Star).each do |node| 39: node = node.left 40: node.regexp = @requirements[node.to_sym] || /(.+)/ 41: end 42: 43: @spec 44: end
# File lib/journey/path/pattern.rb, line 166 166: def match other 167: return unless match = to_regexp.match(other) 168: MatchData.new names, offsets, match 169: end
# File lib/journey/path/pattern.rb, line 46 46: def names 47: @names ||= spec.grep(Nodes::Symbol).map { |n| n.name } 48: end
# File lib/journey/path/pattern.rb, line 54 54: def optional_names 55: @optional_names ||= spec.grep(Nodes::Group).map { |group| 56: group.grep(Nodes::Symbol) 57: }.flatten.map { |n| n.name }.uniq 58: end
# File lib/journey/path/pattern.rb, line 50 50: def required_names 51: @required_names ||= names - optional_names 52: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.