Class: HttpRouter::Node::Regex

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

Direct Known Subclasses

SpanningRegex

Instance Attribute Summary collapse

Attributes inherited from HttpRouter::Node

#priority, #router

Instance Method Summary collapse

Methods inherited from HttpRouter::Node

#add_arbitrary, #add_destination, #add_free_match, #add_glob, #add_lookup, #add_match, #add_request, #add_spanning_match, #add_variable, #arbitrary, #destination, #glob, #join_whole_path, #linear, #lookup, #request, #unescape, #variable

Constructor Details

#initialize(router, matcher, capturing_indicies, priority = 0, splitting_indicies = nil) ⇒ Regex

Returns a new instance of Regex.



7
8
9
# File 'lib/http_router/node/regex.rb', line 7

def initialize(router, matcher, capturing_indicies, priority = 0, splitting_indicies = nil)
  @router, @matcher, @capturing_indicies, @priority, @splitting_indicies = router, matcher, capturing_indicies, priority, splitting_indicies
end

Instance Attribute Details

#matcherObject (readonly)

Returns the value of attribute matcher.



5
6
7
# File 'lib/http_router/node/regex.rb', line 5

def matcher
  @matcher
end

#splitting_indiciesObject (readonly)

Returns the value of attribute splitting_indicies.



5
6
7
# File 'lib/http_router/node/regex.rb', line 5

def splitting_indicies
  @splitting_indicies
end

Instance Method Details

#[](request) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/http_router/node/regex.rb', line 11

def [](request)
  if match = @matcher.match(request.path.first) and match.begin(0).zero?
    request = request.clone
    request.path.shift
    add_params(request, match)
    super(request)
  end
end

#add_params(request, match) ⇒ Object



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

def add_params(request, match)
  @splitting_indicies.each { |idx| request.params << unescape(match[idx]).split(/\//) } if @splitting_indicies
  @capturing_indicies.each { |idx| request.params << unescape(match[idx]) }
end

#node_lookupObject



4
# File 'lib/http_router/node/regex.rb', line 4

alias_method :node_lookup, :[]