Class: ActionController::Routing::ControllerSegment

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

Overview

:nodoc:

Constant Summary

Constants inherited from Segment

Segment::RESERVED_PCHAR, Segment::UNSAFE_PCHAR

Instance Attribute Summary

Attributes inherited from DynamicSegment

#default, #key, #regexp

Attributes inherited from Segment

#is_optional

Instance Method Summary collapse

Methods inherited from DynamicSegment

#build_pattern, #expiry_statement, #extraction_code, #initialize, #local_name, #optionality_implied?, #regexp_has_modifiers?, #string_structure, #to_s, #value_check, #value_regexp

Methods inherited from Segment

#all_optionals_available_condition, #continue_string_structure, #extraction_code, #initialize, #interpolation_statement, #optionality_implied?, #string_structure

Constructor Details

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

Instance Method Details

#extract_valueObject

Make sure controller names like Admin/Content are correctly normalized to admin/content



233
234
235
# File 'lib/action_controller/routing/segments.rb', line 233

def extract_value
  "#{local_name} = (hash[:#{key}] #{"|| #{default.inspect}" if default}).downcase"
end

#interpolation_chunk(value_code = "#{local_name}") ⇒ Object

Don’t URI.escape the controller name since it may contain slashes.



227
228
229
# File 'lib/action_controller/routing/segments.rb', line 227

def interpolation_chunk(value_code = "#{local_name}")
  "\#{#{value_code}.to_s}"
end

#match_extraction(next_capture) ⇒ Object



237
238
239
240
241
242
243
# File 'lib/action_controller/routing/segments.rb', line 237

def match_extraction(next_capture)
  if default
    "params[:#{key}] = match[#{next_capture}] ? match[#{next_capture}].downcase : '#{default}'"
  else
    "params[:#{key}] = match[#{next_capture}].downcase if match[#{next_capture}]"
  end
end

#regexp_chunkObject



221
222
223
224
# File 'lib/action_controller/routing/segments.rb', line 221

def regexp_chunk
  possible_names = Routing.possible_controllers.collect { |name| Regexp.escape name }
  "(?i-:(#{(regexp || Regexp.union(*possible_names)).source}))"
end