Class: Mack::Routes::RouteObject

Inherits:
Object
  • Object
show all
Defined in:
lib/mack/routing/route_object.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, options = {}) ⇒ RouteObject

Returns a new instance of RouteObject.



12
13
14
15
16
17
# File 'lib/mack/routing/route_object.rb', line 12

def initialize(path, options = {})
  self.path = path
  self.options = {:action => :index}.merge(options)
  self.embedded_parameters = []
  build_regex_pattern
end

Instance Attribute Details

#embedded_parametersObject

Returns the value of attribute embedded_parameters.



9
10
11
# File 'lib/mack/routing/route_object.rb', line 9

def embedded_parameters
  @embedded_parameters
end

#optionsObject

Returns the value of attribute options.



6
7
8
# File 'lib/mack/routing/route_object.rb', line 6

def options
  @options
end

#pathObject

Returns the value of attribute path.



7
8
9
# File 'lib/mack/routing/route_object.rb', line 7

def path
  @path
end

#regex_patternObject

Returns the value of attribute regex_pattern.



8
9
10
# File 'lib/mack/routing/route_object.rb', line 8

def regex_pattern
  @regex_pattern
end

#wildcardObject

Returns the value of attribute wildcard.



10
11
12
# File 'lib/mack/routing/route_object.rb', line 10

def wildcard
  @wildcard
end

Instance Method Details

#==(other) ⇒ Object



19
20
21
# File 'lib/mack/routing/route_object.rb', line 19

def ==(other)
  self.options == other
end

#match?(url) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
27
28
29
30
31
32
33
# File 'lib/mack/routing/route_object.rb', line 23

def match?(url)
  if url.downcase.match(self.regex_pattern)
    if self.options[:format]
      format = (File.extname(url).blank? ? '.html' : File.extname(url))
      format = format[1..format.length]
      return format.to_sym == self.options[:format]
    end
    return true
  end
  return false
end

#options_with_parameters(url) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/mack/routing/route_object.rb', line 35

def options_with_parameters(url)
  format = (File.extname(url).blank? ? '.html' : File.extname(url))
  format = format[1..format.length]
  opts = self.options.merge(:format => format)
  url = url.gsub(/\.#{format}$/, '')
  if self.embedded_parameters.any?
    url.split('/').each_with_index do |seg, i|
      ep = self.embedded_parameters[i]
      unless ep.nil?
        opts[ep.to_sym] = seg
      end
    end
  end
  if self.wildcard
    caps = url.match(self.regex_pattern).captures
    if caps
      opts[self.wildcard.to_sym] = caps.first.split('/')
    end
  end

  opts
end