class Gapic::PathPattern::Pattern

A parsed pattern. @see google.aip.dev/122 AIP-122 Resource names @see google.aip.dev/123 AIP-123 Resource types

@!attribute [r] path_pattern

@return [String] The path pattern

@!attribute [r] segments

@return [Array<PositionalSegment|ResourceIdSegment|CollectionIdSegment>]
  The parsed segments of the path pattern

Attributes

path_pattern[R]
segments[R]

Public Class Methods

new(path_pattern, segments) click to toggle source
# File lib/gapic/path_pattern/pattern.rb, line 35
def initialize path_pattern, segments
  @path_pattern = path_pattern
  @segments = segments
end

Public Instance Methods

arguments() click to toggle source

All argument names from this pattern @return [Array<String>]

# File lib/gapic/path_pattern/pattern.rb, line 43
def arguments
  @segments.select(&:provides_arguments?).map(&:arguments).flatten
end
nontrivial_pattern_segments?() click to toggle source

Whether pattern contains a segment with a nontrivial resource pattern @return [Boolean]

# File lib/gapic/path_pattern/pattern.rb, line 57
def nontrivial_pattern_segments?
  @segments.any?(&:nontrivial_resource_pattern?)
end
parent_template() click to toggle source

A parent template to this pattern or an empty string if a pattern can not have a parent (too short) @return [String]

# 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?() click to toggle source

Whether pattern contains a positional segment @return [Boolean]

# File lib/gapic/path_pattern/pattern.rb, line 50
def positional_segments?
  @segments.any?(&:positional?)
end
template() click to toggle source

A template of this pattern - all resource id segments are stripped and replaced by '*' @return [String]

# File lib/gapic/path_pattern/pattern.rb, line 65
def template
  @segments.map(&:pattern_template).join("/")
end