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::SAFE_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, #default_regexp_chunk, #expiry_statement, #extraction_code, #initialize, #local_name, #number_of_captures, #optionality_implied?, #regexp_has_modifiers?, #regexp_string, #string_structure, #to_s, #value_check, #value_regexp

Methods inherited from Segment

#all_optionals_available_condition, #continue_string_structure, #extraction_code, #initialize, #interpolation_statement, #number_of_captures, #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


254
255
256
# File 'lib/action_controller/routing/segments.rb', line 254

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.


248
249
250
# File 'lib/action_controller/routing/segments.rb', line 248

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

#match_extraction(next_capture) ⇒ Object


258
259
260
261
262
263
264
# File 'lib/action_controller/routing/segments.rb', line 258

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


242
243
244
245
# File 'lib/action_controller/routing/segments.rb', line 242

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