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.
35 36 37 38 |
# File 'lib/gapic/path_pattern/pattern.rb', line 35 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 79 |
# File 'lib/gapic/path_pattern/pattern.rb', line 31 class Pattern attr_reader :path_pattern attr_reader :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 79 |
# File 'lib/gapic/path_pattern/pattern.rb', line 31 class Pattern attr_reader :path_pattern attr_reader :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
43 44 45 |
# File 'lib/gapic/path_pattern/pattern.rb', line 43 def arguments @segments.select(&:provides_arguments?).map(&:arguments).flatten end |
#nontrivial_pattern_segments? ⇒ Boolean
Whether pattern contains a segment with a nontrivial resource pattern
57 58 59 |
# File 'lib/gapic/path_pattern/pattern.rb', line 57 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)
73 74 75 76 77 78 |
# File 'lib/gapic/path_pattern/pattern.rb', line 73 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
50 51 52 |
# File 'lib/gapic/path_pattern/pattern.rb', line 50 def positional_segments? @segments.any?(&:positional?) end |
#template ⇒ String
A template of this pattern - all resource id segments are stripped and replaced by '*'
65 66 67 |
# File 'lib/gapic/path_pattern/pattern.rb', line 65 def template @segments.map(&:pattern_template).join("/") end |