Class: ActionController::Routing::Segment

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

Overview

:nodoc:

Direct Known Subclasses

DynamicSegment, StaticSegment

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSegment

Returns a new instance of Segment.



545
546
547
# File 'lib/action_controller/routing.rb', line 545

def initialize
  self.is_optional = false
end

Instance Attribute Details

#is_optionalObject Also known as: optional?

Returns the value of attribute is_optional.



542
543
544
# File 'lib/action_controller/routing.rb', line 542

def is_optional
  @is_optional
end

Instance Method Details

#all_optionals_available_condition(prior_segments) ⇒ Object

Return an if condition that is true if all the prior segments can be generated. If there are no optional segments before this one, then nil is returned.



576
577
578
579
# File 'lib/action_controller/routing.rb', line 576

def all_optionals_available_condition(prior_segments)
  optional_locals = prior_segments.collect { |s| s.local_name if s.optional? && s.respond_to?(:local_name) }.compact
  optional_locals.empty? ? nil : " if #{optional_locals * ' && '}"
end

#continue_string_structure(prior_segments) ⇒ Object

Continue generating string for the prior segments.



554
555
556
557
558
559
560
561
# File 'lib/action_controller/routing.rb', line 554

def continue_string_structure(prior_segments)
  if prior_segments.empty?
    interpolation_statement(prior_segments)
  else
    new_priors = prior_segments[0..-2]
    prior_segments.last.string_structure(new_priors)
  end
end

#extraction_codeObject



549
550
551
# File 'lib/action_controller/routing.rb', line 549

def extraction_code
  nil
end

#interpolation_statement(prior_segments) ⇒ Object

Return a string interpolation statement for this segment and those before it.



564
565
566
567
568
# File 'lib/action_controller/routing.rb', line 564

def interpolation_statement(prior_segments)
  chunks = prior_segments.collect { |s| s.interpolation_chunk }
  chunks << interpolation_chunk
  "\"#{chunks * ''}\"#{all_optionals_available_condition(prior_segments)}"
end

#match_extraction(next_capture) ⇒ Object

Recognition



583
584
585
# File 'lib/action_controller/routing.rb', line 583

def match_extraction(next_capture)
  nil
end

#optionality_implied?Boolean

Returns true if this segment is optional? because of a default. If so, then no warning will be emitted regarding this segment.

Returns:

  • (Boolean)


591
592
593
# File 'lib/action_controller/routing.rb', line 591

def optionality_implied?
  false
end

#string_structure(prior_segments) ⇒ Object



570
571
572
# File 'lib/action_controller/routing.rb', line 570

def string_structure(prior_segments)
  optional? ? continue_string_structure(prior_segments) : interpolation_statement(prior_segments)
end