Class: ActionController::Routing::Route
- Defined in:
- lib/action_controller/routing.rb
Overview
:nodoc:
Instance Attribute Summary collapse
-
#components ⇒ Object
Returns the value of attribute components.
-
#defaults ⇒ Object
readonly
Returns the value of attribute defaults.
-
#keys ⇒ Object
readonly
Returns the value of attribute keys.
-
#known ⇒ Object
Returns the value of attribute known.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
Instance Method Summary collapse
- #extra_keys(options) ⇒ Object
-
#initialize(path, options = {}) ⇒ Route
constructor
A new instance of Route.
- #initialize_keys ⇒ Object
- #inspect ⇒ Object
- #matches_controller?(controller) ⇒ Boolean
- #write_generation(generator = CodeGeneration::GenerationGenerator.new) ⇒ Object
- #write_recognition(generator = CodeGeneration::RecognitionGenerator.new) ⇒ Object
Constructor Details
#initialize(path, options = {}) ⇒ Route
Returns a new instance of Route.
283 284 285 286 287 288 289 290 291 292 |
# File 'lib/action_controller/routing.rb', line 283 def initialize(path, = {}) @path, @options = path, initialize_components path defaults, conditions = initialize_hashes .dup @defaults = defaults.dup configure_components(defaults, conditions) add_default_requirements initialize_keys end |
Instance Attribute Details
#components ⇒ Object
Returns the value of attribute components.
280 281 282 |
# File 'lib/action_controller/routing.rb', line 280 def components @components end |
#defaults ⇒ Object (readonly)
Returns the value of attribute defaults.
281 282 283 |
# File 'lib/action_controller/routing.rb', line 281 def defaults @defaults end |
#keys ⇒ Object (readonly)
Returns the value of attribute keys.
281 282 283 |
# File 'lib/action_controller/routing.rb', line 281 def keys @keys end |
#known ⇒ Object
Returns the value of attribute known.
280 281 282 |
# File 'lib/action_controller/routing.rb', line 280 def known @known end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
281 282 283 |
# File 'lib/action_controller/routing.rb', line 281 def @options end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
281 282 283 |
# File 'lib/action_controller/routing.rb', line 281 def path @path end |
Instance Method Details
#extra_keys(options) ⇒ Object
336 337 338 |
# File 'lib/action_controller/routing.rb', line 336 def extra_keys() .keys - @keys end |
#initialize_keys ⇒ Object
331 332 333 334 |
# File 'lib/action_controller/routing.rb', line 331 def initialize_keys @keys = (components.collect {|c| c.key} + known.keys).compact @keys.freeze end |
#inspect ⇒ Object
294 295 296 |
# File 'lib/action_controller/routing.rb', line 294 def inspect "<#{self.class} #{path.inspect}, #{.inspect[1..-1]}>" end |
#matches_controller?(controller) ⇒ Boolean
340 341 342 343 344 345 346 347 |
# File 'lib/action_controller/routing.rb', line 340 def matches_controller?(controller) if known[:controller] then known[:controller] == controller else c = components.find {|c| c.key == :controller} return false unless c return c.condition.nil? || eval(Routing.test_condition('controller', c.condition)) end end |
#write_generation(generator = CodeGeneration::GenerationGenerator.new) ⇒ Object
298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 |
# File 'lib/action_controller/routing.rb', line 298 def write_generation(generator = CodeGeneration::GenerationGenerator.new) generator.before, generator.current, generator.after = [], components.first, (components[1..-1] || []) if known.empty? then generator.go else # Alter the conditions to allow :action => 'index' to also catch :action => nil altered_known = known.collect do |k, v| if k == :action && v== 'index' then [k, [nil, 'index']] else [k, v] end end generator.if(generator.check_conditions(altered_known)) {|gp| gp.go } end generator end |
#write_recognition(generator = CodeGeneration::RecognitionGenerator.new) ⇒ Object
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 |
# File 'lib/action_controller/routing.rb', line 315 def write_recognition(generator = CodeGeneration::RecognitionGenerator.new) g = generator.dup g.share_locals_with generator g.before, g.current, g.after = [], components.first, (components[1..-1] || []) known.each do |key, value| if key == :controller then ControllerComponent.assign_controller(g, value) else g.constant_result(key, value) end end g.go generator end |