Class: ActionController::Routing::ControllerComponent

Inherits:
DynamicComponent show all
Defined in:
lib/action_controller/routing.rb

Overview

:nodoc:

Instance Attribute Summary

Attributes inherited from DynamicComponent

#condition, #default

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from DynamicComponent

#default_check, #dynamic?, #initialize, #optional?, #write_continue_generation, #write_dropout_generation, #write_generation, #write_recognition

Methods inherited from Component

#dynamic?, new, #optional?

Constructor Details

This class inherits a constructor from ActionController::Routing::DynamicComponent

Class Method Details

.assign_controller(g, controller) ⇒ Object



201
202
203
204
# File 'lib/action_controller/routing.rb', line 201

def assign_controller(g, controller)
  expr = "::Controllers::#{controller.split('/').collect {|c| c.camelize}.join('::')}Controller"
  g.result :controller, expr, true
end

.traverse_to_controller(segments, start_at = 0) ⇒ Object



206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/action_controller/routing.rb', line 206

def traverse_to_controller(segments, start_at = 0)
  mod = ::Controllers
  length = segments.length
  index = start_at
  mod_name = controller_name = segment = nil
      
  while index < length
    return nil unless /^[a-z][a-z\d_]*$/ =~ (segment = segments[index])
    index += 1

    mod_name = segment.camelize
    controller_name = "#{mod_name}Controller"

    return eval("mod::#{controller_name}", nil, 'routing.rb', __LINE__), (index - start_at) if mod.const_available?(controller_name)
    return nil unless mod.const_available?(mod_name)
    mod = eval("mod::#{mod_name}", nil, 'routing.rb', __LINE__)
  end
end

Instance Method Details

#add_segments_to(g) ⇒ Object



179
180
181
# File 'lib/action_controller/routing.rb', line 179

def add_segments_to(g)
  g.add_segment(%(\#{#{g.hash_value(key, true, default)}})) {|gp| yield gp}
end

#assign_default(g) ⇒ Object



196
197
198
# File 'lib/action_controller/routing.rb', line 196

def assign_default(g)
  ControllerComponent.assign_controller(g, default)
end

#assign_result(g) {|g| ... } ⇒ Object

Yields:

  • (g)


191
192
193
194
# File 'lib/action_controller/routing.rb', line 191

def assign_result(g)
  g.result key, 'controller_value'
  yield g
end

#keyObject



177
# File 'lib/action_controller/routing.rb', line 177

def key() :controller end

#recognition_check(g) ⇒ Object



183
184
185
186
187
188
189
# File 'lib/action_controller/routing.rb', line 183

def recognition_check(g)
  g << "controller_result = ::ActionController::Routing::ControllerComponent.traverse_to_controller(#{g.path_name}, #{g.index_name})" 
  g.if('controller_result') do |gp|
    gp << 'controller_value, segments_to_controller = controller_result'
    gp.move_forward('segments_to_controller') {|gpp| yield gpp, :constraint}
  end
end