Class: HttpRouter::Node::AbstractRequestNode

Inherits:
HttpRouter::Node show all
Defined in:
lib/http_router/node/abstract_request_node.rb

Direct Known Subclasses

Host, RequestMethod, Scheme, UserAgent

Instance Attribute Summary collapse

Attributes inherited from HttpRouter::Node

#router

Instance Method Summary collapse

Methods inherited from HttpRouter::Node

#add_destination, #add_free_match, #add_glob, #add_glob_regexp, #add_host, #add_lookup, #add_match, #add_request_method, #add_scheme, #add_spanning_match, #add_user_agent, #add_variable, #depth, #inspect, #inspect_matchers_body

Constructor Details

#initialize(route, parent, tests, request_method) ⇒ AbstractRequestNode

Returns a new instance of AbstractRequestNode.



6
7
8
9
10
11
12
13
14
# File 'lib/http_router/node/abstract_request_node.rb', line 6

def initialize(route, parent, tests, request_method)
  @request_method = request_method
  @tests = case tests
  when Array then tests
  when Set   then tests.to_a
  else            [tests]
  end
  super(route, parent)
end

Instance Attribute Details

#request_methodObject (readonly)

Returns the value of attribute request_method.



4
5
6
# File 'lib/http_router/node/abstract_request_node.rb', line 4

def request_method
  @request_method
end

#testsObject (readonly)

Returns the value of attribute tests.



4
5
6
# File 'lib/http_router/node/abstract_request_node.rb', line 4

def tests
  @tests
end

Instance Method Details

#inspect_labelObject



26
27
28
# File 'lib/http_router/node/abstract_request_node.rb', line 26

def inspect_label
  "#{self.class.name.split("::").last} #{tests.inspect} (#{@matchers.size} matchers)"
end

#to_codeObject



20
21
22
23
24
# File 'lib/http_router/node/abstract_request_node.rb', line 20

def to_code
  "if #{@tests.map { |test| "#{test.inspect} === request.rack_request.#{request_method}" } * ' or '}
    #{super}
  end"
end

#usable?(other) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/http_router/node/abstract_request_node.rb', line 16

def usable?(other)
  other.class == self.class && other.tests == tests && other.request_method == request_method
end