Parent

Journey::Route

Attributes

app[R]
path[R]
verb[R]
defaults[R]
ip[R]
name[R]
constraints[R]
precedence[RW]

Public Class Methods

new(name, app, path, constraints, defaults = {}) click to toggle source

path is a path constraint. constraints is a hash of constraints to be applied to this route.

    # File lib/journey/route.rb, line 13
13:     def initialize name, app, path, constraints, defaults = {}
14:       constraints  = constraints.dup
15:       @name        = name
16:       @app         = app
17:       @path        = path
18:       @verb        = constraints[:request_method] || //
19:       @ip          = constraints.delete(:ip) || //
20: 
21:       @constraints = constraints
22:       @constraints.keep_if { |_,v| Regexp === v || String === v }
23:       @defaults    = defaults
24:       @required_defaults = nil
25:       @required_parts    = nil
26:       @parts             = nil
27:       @decorated_ast     = nil
28:       @precedence        = 0
29:     end

Public Instance Methods

ast() click to toggle source
    # File lib/journey/route.rb, line 31
31:     def ast
32:       return @decorated_ast if @decorated_ast
33: 
34:       @decorated_ast = path.ast
35:       @decorated_ast.grep(Nodes::Terminal).each { |n| n.memo = self }
36:       @decorated_ast
37:     end
format(path_options) click to toggle source
    # File lib/journey/route.rb, line 69
69:     def format path_options
70:       (defaults.keys - required_parts).each do |key|
71:         path_options.delete key if defaults[key].to_s == path_options[key].to_s
72:       end
73: 
74:       formatter      = Visitors::Formatter.new(path_options)
75: 
76:       formatted_path = formatter.accept(path.spec)
77:       formatted_path.gsub(/\/\x00/, '')
78:     end
optional_parts() click to toggle source
    # File lib/journey/route.rb, line 80
80:     def optional_parts
81:       path.optional_names.map { |n| n.to_sym }
82:     end
parts() click to toggle source
    # File lib/journey/route.rb, line 64
64:     def parts
65:       @parts ||= segments.map { |n| n.to_sym }
66:     end
Also aliased as: segment_keys
required_defaults() click to toggle source
    # File lib/journey/route.rb, line 88
88:     def required_defaults
89:       @required_defaults ||= begin
90:         matches = parts
91:         @defaults.dup.delete_if { |k,_| matches.include? k }
92:       end
93:     end
required_keys() click to toggle source
    # File lib/journey/route.rb, line 50
50:     def required_keys
51:       path.required_names.map { |x| x.to_sym } + required_defaults.keys
52:     end
required_parts() click to toggle source
    # File lib/journey/route.rb, line 84
84:     def required_parts
85:       @required_parts ||= path.required_names.map { |n| n.to_sym }
86:     end
score(constraints) click to toggle source
    # File lib/journey/route.rb, line 54
54:     def score constraints
55:       required_keys = path.required_names
56:       supplied_keys = constraints.map { |k,v| v && k.to_s }.compact
57: 
58:       return 1 unless (required_keys - supplied_keys).empty?
59: 
60:       score = (supplied_keys & path.names).length
61:       score + (required_defaults.length * 2)
62:     end
segment_keys() click to toggle source
Alias for: parts
segments() click to toggle source
    # File lib/journey/route.rb, line 46
46:     def segments
47:       @path.names
48:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.