Class: ActionController::Routing::Segment
- Defined in:
- lib/action_controller/routing.rb
Overview
:nodoc:
Direct Known Subclasses
Instance Attribute Summary collapse
-
#is_optional ⇒ Object
(also: #optional?)
Returns the value of attribute is_optional.
Instance Method Summary collapse
-
#all_optionals_available_condition(prior_segments) ⇒ Object
Return an if condition that is true if all the prior segments can be generated.
-
#continue_string_structure(prior_segments) ⇒ Object
Continue generating string for the prior segments.
- #extraction_code ⇒ Object
-
#initialize ⇒ Segment
constructor
A new instance of Segment.
-
#interpolation_statement(prior_segments) ⇒ Object
Return a string interpolation statement for this segment and those before it.
-
#match_extraction(next_capture) ⇒ Object
Recognition.
-
#optionality_implied? ⇒ Boolean
Returns true if this segment is optional? because of a default.
- #string_structure(prior_segments) ⇒ Object
Constructor Details
#initialize ⇒ Segment
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_optional ⇒ Object 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_code ⇒ Object
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.
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 |