Class: Gapic::PathPattern::Pattern
- Inherits:
-
Object
- Object
- Gapic::PathPattern::Pattern
- Defined in:
- lib/gapic/path_pattern/pattern.rb
Overview
A parsed pattern.
Instance Attribute Summary collapse
-
#path_pattern ⇒ String
readonly
The path pattern.
-
#segments ⇒ Array<PositionalSegment|ResourceIdSegment|CollectionIdSegment>
readonly
The parsed segments of the path pattern.
Instance Method Summary collapse
-
#arguments ⇒ Array<String>
All argument names from this pattern.
-
#initialize(path_pattern, segments) ⇒ Pattern
constructor
A new instance of Pattern.
-
#nontrivial_pattern_segments? ⇒ Boolean
Whether pattern contains a segment with a nontrivial resource pattern.
-
#parent_template ⇒ String
A parent template to this pattern or an empty string if a pattern can not have a parent (too short).
-
#positional_segments? ⇒ Boolean
Whether pattern contains a positional segment.
-
#template ⇒ String
A template of this pattern - all resource id segments are stripped and replaced by '*'.
Constructor Details
#initialize(path_pattern, segments) ⇒ Pattern
Returns a new instance of Pattern.
34 35 36 37 |
# File 'lib/gapic/path_pattern/pattern.rb', line 34 def initialize path_pattern, segments @path_pattern = path_pattern @segments = segments end |
Instance Attribute Details
#path_pattern ⇒ String (readonly)
Returns The path pattern.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/gapic/path_pattern/pattern.rb', line 31 class Pattern attr_reader :path_pattern, :segments def initialize path_pattern, segments @path_pattern = path_pattern @segments = segments end ## # All argument names from this pattern # @return [Array<String>] def arguments @segments.select(&:provides_arguments?).map(&:arguments).flatten end ## # Whether pattern contains a positional segment # @return [Boolean] def positional_segments? @segments.any?(&:positional?) end ## # Whether pattern contains a segment with a nontrivial resource pattern # @return [Boolean] def nontrivial_pattern_segments? @segments.any?(&:nontrivial_resource_pattern?) end ## # A template of this pattern - all resource id segments are # stripped and replaced by '*' # @return [String] def template @segments.map(&:pattern_template).join("/") end ## # A parent template to this pattern or an empty string if a pattern # can not have a parent (too short) # @return [String] def parent_template return nil if segments.length <= 2 last_segment = segments.last parent_pattern_segments = last_segment.provides_arguments? ? segments[0...-2] : segments[0...-1] parent_pattern_segments.map(&:pattern_template).join("/") end end |
#segments ⇒ Array<PositionalSegment|ResourceIdSegment|CollectionIdSegment> (readonly)
Returns The parsed segments of the path pattern.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/gapic/path_pattern/pattern.rb', line 31 class Pattern attr_reader :path_pattern, :segments def initialize path_pattern, segments @path_pattern = path_pattern @segments = segments end ## # All argument names from this pattern # @return [Array<String>] def arguments @segments.select(&:provides_arguments?).map(&:arguments).flatten end ## # Whether pattern contains a positional segment # @return [Boolean] def positional_segments? @segments.any?(&:positional?) end ## # Whether pattern contains a segment with a nontrivial resource pattern # @return [Boolean] def nontrivial_pattern_segments? @segments.any?(&:nontrivial_resource_pattern?) end ## # A template of this pattern - all resource id segments are # stripped and replaced by '*' # @return [String] def template @segments.map(&:pattern_template).join("/") end ## # A parent template to this pattern or an empty string if a pattern # can not have a parent (too short) # @return [String] def parent_template return nil if segments.length <= 2 last_segment = segments.last parent_pattern_segments = last_segment.provides_arguments? ? segments[0...-2] : segments[0...-1] parent_pattern_segments.map(&:pattern_template).join("/") end end |
Instance Method Details
#arguments ⇒ Array<String>
All argument names from this pattern
42 43 44 |
# File 'lib/gapic/path_pattern/pattern.rb', line 42 def arguments @segments.select(&:provides_arguments?).map(&:arguments).flatten end |
#nontrivial_pattern_segments? ⇒ Boolean
Whether pattern contains a segment with a nontrivial resource pattern
56 57 58 |
# File 'lib/gapic/path_pattern/pattern.rb', line 56 def nontrivial_pattern_segments? @segments.any?(&:nontrivial_resource_pattern?) end |
#parent_template ⇒ String
A parent template to this pattern or an empty string if a pattern can not have a parent (too short)
72 73 74 75 76 77 |
# File 'lib/gapic/path_pattern/pattern.rb', line 72 def parent_template return nil if segments.length <= 2 last_segment = segments.last parent_pattern_segments = last_segment.provides_arguments? ? segments[0...-2] : segments[0...-1] parent_pattern_segments.map(&:pattern_template).join("/") end |
#positional_segments? ⇒ Boolean
Whether pattern contains a positional segment
49 50 51 |
# File 'lib/gapic/path_pattern/pattern.rb', line 49 def positional_segments? @segments.any?(&:positional?) end |
#template ⇒ String
A template of this pattern - all resource id segments are stripped and replaced by '*'
64 65 66 |
# File 'lib/gapic/path_pattern/pattern.rb', line 64 def template @segments.map(&:pattern_template).join("/") end |