Module: Rack::Mount::Generation::Route

Included in:
Route
Defined in:
lib/rack/mount/generation/route.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#generation_keysObject (readonly)

Returns the value of attribute generation_keys.



6
7
8
# File 'lib/rack/mount/generation/route.rb', line 6

def generation_keys
  @generation_keys
end

Instance Method Details

#generate(methods, params = {}, recall = {}, options = {}) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rack/mount/generation/route.rb', line 35

def generate(methods, params = {}, recall = {}, options = {})
  if methods.is_a?(Array)
    result = methods.map { |m| generate_method(m, params, recall, @defaults, options) || (return nil) }
  else
    result = generate_method(methods, params, recall, @defaults, options)
  end

  if result
    @defaults.each do |key, value|
      params.delete(key) if params[key] == value
    end
  end

  result
end

#initialize(*args) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rack/mount/generation/route.rb', line 8

def initialize(*args)
  super

  @required_params = {}
  @required_defaults = {}
  @generation_keys = @defaults.dup

  @conditions.each do |method, condition|
    @required_params[method] = @conditions[method].required_captures.map { |s| s.name }.reject { |s| @defaults.include?(s) }.freeze
    @required_defaults[method] = @defaults.dup
    @conditions[method].captures.inject({}) { |h, s| h.merge!(s.to_hash) }.keys.each { |name|
      @required_defaults[method].delete(name)
      @generation_keys.delete(name) if @defaults.include?(name)
    }
    @required_defaults[method].freeze
  end
  @has_significant_params = (@required_params.any? { |k, v| v.any? } || @required_defaults.any? { |k, v| v.any? }) ? true : false

  @required_params.freeze
  @required_defaults.freeze
  @generation_keys.freeze
end

#significant_params?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/rack/mount/generation/route.rb', line 31

def significant_params?
  @has_significant_params
end