gapic-generator 0.1.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +55 -0
 - data/lib/gapic/formatting_utils.rb +63 -12
 - data/lib/gapic/generator/version.rb +1 -1
 - data/lib/gapic/generators/base_generator.rb +0 -8
 - data/lib/gapic/generators/default_generator.rb +13 -14
 - data/lib/gapic/helpers/filepath_helper.rb +45 -0
 - data/lib/gapic/helpers/namespace_helper.rb +51 -0
 - data/lib/gapic/presenters.rb +44 -0
 - data/{templates/default/helpers → lib/gapic}/presenters/enum_presenter.rb +19 -14
 - data/{templates/default/helpers → lib/gapic}/presenters/enum_value_presenter.rb +19 -12
 - data/lib/gapic/presenters/field_presenter.rb +154 -0
 - data/lib/gapic/presenters/file_presenter.rb +59 -0
 - data/lib/gapic/presenters/gem_presenter.rb +176 -0
 - data/lib/gapic/presenters/message_presenter.rb +73 -0
 - data/lib/gapic/presenters/method_presenter.rb +307 -0
 - data/lib/gapic/presenters/package_presenter.rb +80 -0
 - data/lib/gapic/presenters/resource_presenter.rb +99 -0
 - data/lib/gapic/presenters/sample_presenter.rb +84 -0
 - data/lib/gapic/presenters/service_presenter.rb +306 -0
 - data/lib/gapic/resource_lookup.rb +23 -38
 - data/lib/gapic/schema/api.rb +70 -0
 - data/lib/gapic/schema/loader.rb +9 -2
 - data/lib/gapic/schema/wrappers.rb +134 -24
 - data/templates/default/gem/entrypoint.erb +8 -0
 - data/templates/default/gem/gemspec.erb +2 -2
 - data/templates/default/gem/readme.erb +17 -3
 - data/templates/default/gem/rubocop.erb +13 -41
 - data/templates/default/helpers/filepath_helper.rb +2 -21
 - data/templates/default/helpers/namespace_helper.rb +2 -27
 - data/templates/default/layouts/_ruby.erb +1 -3
 - data/templates/default/lib/_package.erb +17 -0
 - data/templates/default/lib/_service.erb +32 -0
 - data/templates/default/package.erb +5 -5
 - data/templates/default/service.erb +5 -7
 - data/templates/default/service/_helpers.erb +3 -0
 - data/templates/default/service/client/_client.erb +7 -17
 - data/templates/default/service/client/_operations.erb +0 -4
 - data/templates/default/service/client/_paths.erb +1 -0
 - data/templates/default/service/client/method/def/_options_defaults.erb +1 -1
 - data/templates/default/service/client/method/def/_response_normal.erb +1 -1
 - data/templates/default/service/client/method/docs/_request_normal.erb +10 -5
 - data/templates/default/service/client/method/docs/_request_streaming.erb +1 -1
 - metadata +20 -15
 - data/templates/default/helpers/presenter_helper.rb +0 -24
 - data/templates/default/helpers/presenters/field_presenter.rb +0 -146
 - data/templates/default/helpers/presenters/file_presenter.rb +0 -53
 - data/templates/default/helpers/presenters/gem_presenter.rb +0 -140
 - data/templates/default/helpers/presenters/message_presenter.rb +0 -66
 - data/templates/default/helpers/presenters/method_presenter.rb +0 -293
 - data/templates/default/helpers/presenters/package_presenter.rb +0 -65
 - data/templates/default/helpers/presenters/resource_presenter.rb +0 -92
 - data/templates/default/helpers/presenters/sample_presenter.rb +0 -74
 - data/templates/default/helpers/presenters/service_presenter.rb +0 -276
 - data/templates/default/service/client/_helpers.erb +0 -9
 
    
        data/lib/gapic/schema/api.rb
    CHANGED
    
    | 
         @@ -51,6 +51,15 @@ module Gapic 
     | 
|
| 
       51 
51 
     | 
    
         
             
                      loader.load_file fd, request.file_to_generate.include?(fd.name)
         
     | 
| 
       52 
52 
     | 
    
         
             
                    end
         
     | 
| 
       53 
53 
     | 
    
         
             
                    @files.each { |f| f.parent = self }
         
     | 
| 
      
 54 
     | 
    
         
            +
                    @resource_types = analyze_resources
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                  def containing_api
         
     | 
| 
      
 58 
     | 
    
         
            +
                    self
         
     | 
| 
      
 59 
     | 
    
         
            +
                  end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                  def containing_file
         
     | 
| 
      
 62 
     | 
    
         
            +
                    nil
         
     | 
| 
       54 
63 
     | 
    
         
             
                  end
         
     | 
| 
       55 
64 
     | 
    
         | 
| 
       56 
65 
     | 
    
         
             
                  def lookup address
         
     | 
| 
         @@ -200,6 +209,22 @@ module Gapic 
     | 
|
| 
       200 
209 
     | 
    
         
             
                    end
         
     | 
| 
       201 
210 
     | 
    
         
             
                  end
         
     | 
| 
       202 
211 
     | 
    
         | 
| 
      
 212 
     | 
    
         
            +
                  # Whether the generate_path_helpers_output parameter was given in the configuration
         
     | 
| 
      
 213 
     | 
    
         
            +
                  def generate_path_helpers_output_defined?
         
     | 
| 
      
 214 
     | 
    
         
            +
                    configuration.key? :generate_path_helpers_output
         
     | 
| 
      
 215 
     | 
    
         
            +
                  end
         
     | 
| 
      
 216 
     | 
    
         
            +
             
     | 
| 
      
 217 
     | 
    
         
            +
                  # Sets the generate_path_helpers_output parameter in the configuration
         
     | 
| 
      
 218 
     | 
    
         
            +
                  def generate_path_helpers_output= value
         
     | 
| 
      
 219 
     | 
    
         
            +
                    configuration[:generate_path_helpers_output] = value
         
     | 
| 
      
 220 
     | 
    
         
            +
                  end
         
     | 
| 
      
 221 
     | 
    
         
            +
             
     | 
| 
      
 222 
     | 
    
         
            +
                  # Whether to generate path helpers for output as well as input messages
         
     | 
| 
      
 223 
     | 
    
         
            +
                  def generate_path_helpers_output?
         
     | 
| 
      
 224 
     | 
    
         
            +
                    # if not set in configuration, false by default
         
     | 
| 
      
 225 
     | 
    
         
            +
                    configuration[:generate_path_helpers_output] ||= false
         
     | 
| 
      
 226 
     | 
    
         
            +
                  end
         
     | 
| 
      
 227 
     | 
    
         
            +
             
     | 
| 
       203 
228 
     | 
    
         
             
                  # Raw parsed json of the combined grpc service config files if provided
         
     | 
| 
       204 
229 
     | 
    
         
             
                  # or an empty hash if no config was provided
         
     | 
| 
       205 
230 
     | 
    
         
             
                  def grpc_service_config_raw
         
     | 
| 
         @@ -219,8 +244,53 @@ module Gapic 
     | 
|
| 
       219 
244 
     | 
    
         
             
                    end
         
     | 
| 
       220 
245 
     | 
    
         
             
                  end
         
     | 
| 
       221 
246 
     | 
    
         | 
| 
      
 247 
     | 
    
         
            +
                  # Get a resource given its type string
         
     | 
| 
      
 248 
     | 
    
         
            +
                  def lookup_resource_type resource_type
         
     | 
| 
      
 249 
     | 
    
         
            +
                    @resource_types[resource_type]
         
     | 
| 
      
 250 
     | 
    
         
            +
                  end
         
     | 
| 
      
 251 
     | 
    
         
            +
             
     | 
| 
       222 
252 
     | 
    
         
             
                  private
         
     | 
| 
       223 
253 
     | 
    
         | 
| 
      
 254 
     | 
    
         
            +
                  # Does a pre-analysis of all resources defined in the job. This has
         
     | 
| 
      
 255 
     | 
    
         
            +
                  # two effects:
         
     | 
| 
      
 256 
     | 
    
         
            +
                  # * Side effect: each resource has its parent_resources field set.
         
     | 
| 
      
 257 
     | 
    
         
            +
                  # * A mapping from resource type to resource wrapper is returned.
         
     | 
| 
      
 258 
     | 
    
         
            +
                  def analyze_resources
         
     | 
| 
      
 259 
     | 
    
         
            +
                    # In order to set parent_resources, we first populate a mapping from
         
     | 
| 
      
 260 
     | 
    
         
            +
                    # parsed pattern to resource mapping (in the patterns variable). This
         
     | 
| 
      
 261 
     | 
    
         
            +
                    # is done in one pass along with populating the resource type mapping.
         
     | 
| 
      
 262 
     | 
    
         
            +
                    # Then, we go through all resources again, get its expected parent
         
     | 
| 
      
 263 
     | 
    
         
            +
                    # patterns, and anything that shows up in the patterns mapping is taken
         
     | 
| 
      
 264 
     | 
    
         
            +
                    # to be a parent.
         
     | 
| 
      
 265 
     | 
    
         
            +
                    types = {}
         
     | 
| 
      
 266 
     | 
    
         
            +
                    patterns = {}
         
     | 
| 
      
 267 
     | 
    
         
            +
                    @files.each do |file|
         
     | 
| 
      
 268 
     | 
    
         
            +
                      file.resources.each { |resource| populate_resource_lookups resource, types, patterns }
         
     | 
| 
      
 269 
     | 
    
         
            +
                      file.messages.each { |message| populate_message_resource_lookups message, types, patterns }
         
     | 
| 
      
 270 
     | 
    
         
            +
                    end
         
     | 
| 
      
 271 
     | 
    
         
            +
                    types.each do |_type, resource|
         
     | 
| 
      
 272 
     | 
    
         
            +
                      parents = resource.parsed_parent_patterns
         
     | 
| 
      
 273 
     | 
    
         
            +
                                        .map { |pat| patterns[pat] }
         
     | 
| 
      
 274 
     | 
    
         
            +
                                        .compact.uniq
         
     | 
| 
      
 275 
     | 
    
         
            +
                      resource.parent_resources.replace parents
         
     | 
| 
      
 276 
     | 
    
         
            +
                    end
         
     | 
| 
      
 277 
     | 
    
         
            +
                    types
         
     | 
| 
      
 278 
     | 
    
         
            +
                  end
         
     | 
| 
      
 279 
     | 
    
         
            +
             
     | 
| 
      
 280 
     | 
    
         
            +
                  def populate_resource_lookups resource, types, patterns
         
     | 
| 
      
 281 
     | 
    
         
            +
                    types[resource.type] = resource
         
     | 
| 
      
 282 
     | 
    
         
            +
                    resource.parsed_patterns.each do |pat|
         
     | 
| 
      
 283 
     | 
    
         
            +
                      patterns[pat] = resource
         
     | 
| 
      
 284 
     | 
    
         
            +
                    end
         
     | 
| 
      
 285 
     | 
    
         
            +
                  end
         
     | 
| 
      
 286 
     | 
    
         
            +
             
     | 
| 
      
 287 
     | 
    
         
            +
                  def populate_message_resource_lookups message, types, patterns
         
     | 
| 
      
 288 
     | 
    
         
            +
                    populate_resource_lookups message.resource, types, patterns if message.resource
         
     | 
| 
      
 289 
     | 
    
         
            +
                    message.nested_messages.each do |nested|
         
     | 
| 
      
 290 
     | 
    
         
            +
                      populate_message_resource_lookups nested, types, patterns
         
     | 
| 
      
 291 
     | 
    
         
            +
                    end
         
     | 
| 
      
 292 
     | 
    
         
            +
                  end
         
     | 
| 
      
 293 
     | 
    
         
            +
             
     | 
| 
       224 
294 
     | 
    
         
             
                  def parse_parameter str
         
     | 
| 
       225 
295 
     | 
    
         
             
                    str.scan(/\\.|,|=|[^\\,=]+/)
         
     | 
| 
       226 
296 
     | 
    
         
             
                       .each_with_object([[String.new]]) do |tok, arr|
         
     | 
    
        data/lib/gapic/schema/loader.rb
    CHANGED
    
    | 
         @@ -64,9 +64,13 @@ module Gapic 
     | 
|
| 
       64 
64 
     | 
    
         
             
                      load_service registry, s, address, docs, [6, i]
         
     | 
| 
       65 
65 
     | 
    
         
             
                    end
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
      
 67 
     | 
    
         
            +
                    # Load top-level resources
         
     | 
| 
      
 68 
     | 
    
         
            +
                    resource_descriptors = file_descriptor.options[:".google.api.resource_definition"] if file_descriptor.options
         
     | 
| 
      
 69 
     | 
    
         
            +
                    resources = Array(resource_descriptors).map { |descriptor| Resource.new descriptor }
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
       67 
71 
     | 
    
         
             
                    # Construct and return the file.
         
     | 
| 
       68 
72 
     | 
    
         
             
                    File.new file_descriptor, address, docs[path], messages, enums,
         
     | 
| 
       69 
     | 
    
         
            -
                             services, file_to_generate, registry
         
     | 
| 
      
 73 
     | 
    
         
            +
                             services, resources, file_to_generate, registry
         
     | 
| 
       70 
74 
     | 
    
         
             
                  end
         
     | 
| 
       71 
75 
     | 
    
         | 
| 
       72 
76 
     | 
    
         
             
                  # Updates the fields of a message and it's nested messages.
         
     | 
| 
         @@ -158,9 +162,12 @@ module Gapic 
     | 
|
| 
       158 
162 
     | 
    
         
             
                      load_field registry, e, address, docs, path + [6, i]
         
     | 
| 
       159 
163 
     | 
    
         
             
                    end
         
     | 
| 
       160 
164 
     | 
    
         | 
| 
      
 165 
     | 
    
         
            +
                    resource_descriptor = descriptor.options[:".google.api.resource"] if descriptor.options
         
     | 
| 
      
 166 
     | 
    
         
            +
                    resource = resource_descriptor ? Resource.new(resource_descriptor) : nil
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
       161 
168 
     | 
    
         
             
                    # Construct, cache, and return.
         
     | 
| 
       162 
169 
     | 
    
         
             
                    msg = Message.new(descriptor, address, docs[path], fields, extensions,
         
     | 
| 
       163 
     | 
    
         
            -
                                      nested_messages, nested_enums)
         
     | 
| 
      
 170 
     | 
    
         
            +
                                      resource, nested_messages, nested_enums)
         
     | 
| 
       164 
171 
     | 
    
         
             
                    @prior_messages << msg
         
     | 
| 
       165 
172 
     | 
    
         
             
                    add_to_registry registry, address, msg
         
     | 
| 
       166 
173 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -95,14 +95,33 @@ module Gapic 
     | 
|
| 
       95 
95 
     | 
    
         
             
                    @docs = docs
         
     | 
| 
       96 
96 
     | 
    
         
             
                  end
         
     | 
| 
       97 
97 
     | 
    
         | 
| 
      
 98 
     | 
    
         
            +
                  # Returns the "root" of this schema.
         
     | 
| 
      
 99 
     | 
    
         
            +
                  # @return [Gapic::Schema::Api]
         
     | 
| 
      
 100 
     | 
    
         
            +
                  def containing_api
         
     | 
| 
      
 101 
     | 
    
         
            +
                    parent&.containing_api
         
     | 
| 
      
 102 
     | 
    
         
            +
                  end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                  # Returns the file containing this proto entity
         
     | 
| 
      
 105 
     | 
    
         
            +
                  # @return [Gapic::Schema::File]
         
     | 
| 
      
 106 
     | 
    
         
            +
                  def containing_file
         
     | 
| 
      
 107 
     | 
    
         
            +
                    parent&.containing_file
         
     | 
| 
      
 108 
     | 
    
         
            +
                  end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                  ##
         
     | 
| 
       98 
111 
     | 
    
         
             
                  # Gets the cleaned up leading comments documentation
         
     | 
| 
       99 
     | 
    
         
            -
                   
     | 
| 
      
 112 
     | 
    
         
            +
                  #
         
     | 
| 
      
 113 
     | 
    
         
            +
                  # @param disable_xrefs [Boolean] (default is `false`) Disable linking to
         
     | 
| 
      
 114 
     | 
    
         
            +
                  #   cross-references, and render them simply as text. This can be used if
         
     | 
| 
      
 115 
     | 
    
         
            +
                  #   it is known that the targets are not present in the current library.
         
     | 
| 
      
 116 
     | 
    
         
            +
                  # @return [String]
         
     | 
| 
      
 117 
     | 
    
         
            +
                  #
         
     | 
| 
      
 118 
     | 
    
         
            +
                  def docs_leading_comments disable_xrefs: false
         
     | 
| 
       100 
119 
     | 
    
         
             
                    return nil if @docs.nil?
         
     | 
| 
       101 
120 
     | 
    
         
             
                    return nil if @docs.leading_comments.empty?
         
     | 
| 
       102 
121 
     | 
    
         | 
| 
       103 
122 
     | 
    
         
             
                    lines = @docs.leading_comments.each_line.to_a
         
     | 
| 
       104 
123 
     | 
    
         
             
                    lines.map! { |line| line.start_with?(" ") ? line[1..-1] : line }
         
     | 
| 
       105 
     | 
    
         
            -
                    lines = FormattingUtils. 
     | 
| 
      
 124 
     | 
    
         
            +
                    lines = FormattingUtils.format_doc_lines containing_api, lines, disable_xrefs: disable_xrefs
         
     | 
| 
       106 
125 
     | 
    
         
             
                    lines.join
         
     | 
| 
       107 
126 
     | 
    
         
             
                  end
         
     | 
| 
       108 
127 
     | 
    
         | 
| 
         @@ -338,16 +357,19 @@ module Gapic 
     | 
|
| 
       338 
357 
     | 
    
         
             
                # Wrapper for a protobuf file.
         
     | 
| 
       339 
358 
     | 
    
         
             
                #
         
     | 
| 
       340 
359 
     | 
    
         
             
                # @!attribute [r] messages
         
     | 
| 
       341 
     | 
    
         
            -
                #   @ 
     | 
| 
      
 360 
     | 
    
         
            +
                #   @return [Enumerable<Message>] The top level messages contained in
         
     | 
| 
       342 
361 
     | 
    
         
             
                #     this file.
         
     | 
| 
       343 
362 
     | 
    
         
             
                # @!attribute [r] enums
         
     | 
| 
       344 
     | 
    
         
            -
                #   @ 
     | 
| 
      
 363 
     | 
    
         
            +
                #   @return [Enumerable<Enum>] The top level enums contained in this
         
     | 
| 
       345 
364 
     | 
    
         
             
                #     file.
         
     | 
| 
       346 
365 
     | 
    
         
             
                # @!attribute [r] services
         
     | 
| 
       347 
     | 
    
         
            -
                #   @ 
     | 
| 
      
 366 
     | 
    
         
            +
                #   @return [Enumerable<Service>] The services contained in this file.
         
     | 
| 
      
 367 
     | 
    
         
            +
                # @!attribute [r] resources
         
     | 
| 
      
 368 
     | 
    
         
            +
                #   @return [Enumerable<Resource>] The top level resources contained in
         
     | 
| 
      
 369 
     | 
    
         
            +
                #     this file.
         
     | 
| 
       348 
370 
     | 
    
         
             
                class File < Proto
         
     | 
| 
       349 
371 
     | 
    
         
             
                  extend Forwardable
         
     | 
| 
       350 
     | 
    
         
            -
                  attr_reader :messages, :enums, :services, :registry
         
     | 
| 
      
 372 
     | 
    
         
            +
                  attr_reader :messages, :enums, :services, :resources, :registry
         
     | 
| 
       351 
373 
     | 
    
         | 
| 
       352 
374 
     | 
    
         
             
                  # Initializes a message object.
         
     | 
| 
       353 
375 
     | 
    
         
             
                  # @param descriptor [Google::Protobuf::DescriptorProto] the protobuf
         
     | 
| 
         @@ -360,20 +382,27 @@ module Gapic 
     | 
|
| 
       360 
382 
     | 
    
         
             
                  #   file.
         
     | 
| 
       361 
383 
     | 
    
         
             
                  # @param enums [Enumerable<Enum>] The top level enums of this file.
         
     | 
| 
       362 
384 
     | 
    
         
             
                  # @param services [Enumerable<Service>] The services of this file.
         
     | 
| 
      
 385 
     | 
    
         
            +
                  # @param resources [Enumerable<Resource>] The resources from this file.
         
     | 
| 
       363 
386 
     | 
    
         
             
                  # @param generate [Boolean] Whether this file should be generated.
         
     | 
| 
       364 
387 
     | 
    
         
             
                  def initialize descriptor, address, docs, messages, enums, services,
         
     | 
| 
       365 
     | 
    
         
            -
                                 generate, registry
         
     | 
| 
      
 388 
     | 
    
         
            +
                                 resources, generate, registry
         
     | 
| 
       366 
389 
     | 
    
         
             
                    super descriptor, address, docs
         
     | 
| 
       367 
390 
     | 
    
         
             
                    @messages = messages || []
         
     | 
| 
       368 
391 
     | 
    
         
             
                    @enums = enums || []
         
     | 
| 
       369 
392 
     | 
    
         
             
                    @services = services || []
         
     | 
| 
      
 393 
     | 
    
         
            +
                    @resources = resources || []
         
     | 
| 
       370 
394 
     | 
    
         
             
                    @generate = generate
         
     | 
| 
       371 
395 
     | 
    
         
             
                    @registry = registry
         
     | 
| 
       372 
396 
     | 
    
         | 
| 
       373 
397 
     | 
    
         
             
                    # Apply parent
         
     | 
| 
       374 
398 
     | 
    
         
             
                    @messages.each { |m| m.parent = self }
         
     | 
| 
       375 
     | 
    
         
            -
                    @enums.each 
     | 
| 
      
 399 
     | 
    
         
            +
                    @enums.each { |m| m.parent = self }
         
     | 
| 
       376 
400 
     | 
    
         
             
                    @services.each { |m| m.parent = self }
         
     | 
| 
      
 401 
     | 
    
         
            +
                    @resources.each { |m| m.parent = self }
         
     | 
| 
      
 402 
     | 
    
         
            +
                  end
         
     | 
| 
      
 403 
     | 
    
         
            +
             
     | 
| 
      
 404 
     | 
    
         
            +
                  def containing_file
         
     | 
| 
      
 405 
     | 
    
         
            +
                    self
         
     | 
| 
       377 
406 
     | 
    
         
             
                  end
         
     | 
| 
       378 
407 
     | 
    
         | 
| 
       379 
408 
     | 
    
         
             
                  def lookup address
         
     | 
| 
         @@ -390,13 +419,6 @@ module Gapic 
     | 
|
| 
       390 
419 
     | 
    
         
             
                    options[:ruby_package] if options
         
     | 
| 
       391 
420 
     | 
    
         
             
                  end
         
     | 
| 
       392 
421 
     | 
    
         | 
| 
       393 
     | 
    
         
            -
                  # @return [Array<Google::Api::ResourceDescriptor>] A representation of the resource.
         
     | 
| 
       394 
     | 
    
         
            -
                  #   This is generally intended to be attached to the "name" field.
         
     | 
| 
       395 
     | 
    
         
            -
                  #   See `google/api/resource.proto`.
         
     | 
| 
       396 
     | 
    
         
            -
                  def resources
         
     | 
| 
       397 
     | 
    
         
            -
                    options[:".google.api.resource_definition"] if options
         
     | 
| 
       398 
     | 
    
         
            -
                  end
         
     | 
| 
       399 
     | 
    
         
            -
             
     | 
| 
       400 
422 
     | 
    
         
             
                  # @!method name
         
     | 
| 
       401 
423 
     | 
    
         
             
                  #   @return [String] file name, relative to root of source tree.
         
     | 
| 
       402 
424 
     | 
    
         
             
                  # @!method package
         
     | 
| 
         @@ -488,6 +510,8 @@ module Gapic 
     | 
|
| 
       488 
510 
     | 
    
         
             
                #   @ return [Enumerable<Field>] The fields of a message.
         
     | 
| 
       489 
511 
     | 
    
         
             
                # @!attribute [r] extensions
         
     | 
| 
       490 
512 
     | 
    
         
             
                #   @ return [Enumerable<Field>] The extensions of a message.
         
     | 
| 
      
 513 
     | 
    
         
            +
                # @!attribute [r] resource
         
     | 
| 
      
 514 
     | 
    
         
            +
                #   @ return [Resource,nil] A representation of the resource.
         
     | 
| 
       491 
515 
     | 
    
         
             
                # @!attribute [r] nested_messages
         
     | 
| 
       492 
516 
     | 
    
         
             
                #   @ return [Enumerable<Message>] The nested message declarations of a
         
     | 
| 
       493 
517 
     | 
    
         
             
                #      message.
         
     | 
| 
         @@ -495,7 +519,7 @@ module Gapic 
     | 
|
| 
       495 
519 
     | 
    
         
             
                #   @ return [Enumerable<Enum>] The nested enum declarations of a message.
         
     | 
| 
       496 
520 
     | 
    
         
             
                class Message < Proto
         
     | 
| 
       497 
521 
     | 
    
         
             
                  extend Forwardable
         
     | 
| 
       498 
     | 
    
         
            -
                  attr_reader :fields, :extensions, :nested_messages, :nested_enums
         
     | 
| 
      
 522 
     | 
    
         
            +
                  attr_reader :fields, :extensions, :resource, :nested_messages, :nested_enums
         
     | 
| 
       499 
523 
     | 
    
         | 
| 
       500 
524 
     | 
    
         
             
                  # Initializes a message object.
         
     | 
| 
       501 
525 
     | 
    
         
             
                  # @param descriptor [Google::Protobuf::DescriptorProto] the protobuf
         
     | 
| 
         @@ -506,15 +530,17 @@ module Gapic 
     | 
|
| 
       506 
530 
     | 
    
         
             
                  #   of the proto. See #docs for more info.
         
     | 
| 
       507 
531 
     | 
    
         
             
                  # @param fields [Enumerable<Field>] The fields of this message.
         
     | 
| 
       508 
532 
     | 
    
         
             
                  # @param extensions [Enumerable<Field>] The extensions of this message.
         
     | 
| 
      
 533 
     | 
    
         
            +
                  # @param resource [Resource,nil] The resource of this message, or nil if none.
         
     | 
| 
       509 
534 
     | 
    
         
             
                  # @param nested_messages [Enumerable<Message>] The nested message
         
     | 
| 
       510 
535 
     | 
    
         
             
                  #   declarations of this message.
         
     | 
| 
       511 
536 
     | 
    
         
             
                  # @param nested_enums [Enumerable<Enum>] The nested enum declarations
         
     | 
| 
       512 
537 
     | 
    
         
             
                  #   of this message.
         
     | 
| 
       513 
     | 
    
         
            -
                  def initialize descriptor, address, docs, fields, extensions,
         
     | 
| 
      
 538 
     | 
    
         
            +
                  def initialize descriptor, address, docs, fields, extensions, resource,
         
     | 
| 
       514 
539 
     | 
    
         
             
                                 nested_messages, nested_enums
         
     | 
| 
       515 
540 
     | 
    
         
             
                    super descriptor, address, docs
         
     | 
| 
       516 
541 
     | 
    
         
             
                    @fields = fields || []
         
     | 
| 
       517 
542 
     | 
    
         
             
                    @extensions = extensions || []
         
     | 
| 
      
 543 
     | 
    
         
            +
                    @resource = resource
         
     | 
| 
       518 
544 
     | 
    
         
             
                    @nested_messages = nested_messages || []
         
     | 
| 
       519 
545 
     | 
    
         
             
                    @nested_enums = nested_enums || []
         
     | 
| 
       520 
546 
     | 
    
         | 
| 
         @@ -522,13 +548,7 @@ module Gapic 
     | 
|
| 
       522 
548 
     | 
    
         
             
                    @extensions.each      { |x| x.parent = self }
         
     | 
| 
       523 
549 
     | 
    
         
             
                    @nested_messages.each { |m| m.parent = self }
         
     | 
| 
       524 
550 
     | 
    
         
             
                    @nested_enums.each    { |e| e.parent = self }
         
     | 
| 
       525 
     | 
    
         
            -
             
     | 
| 
       526 
     | 
    
         
            -
             
     | 
| 
       527 
     | 
    
         
            -
                  # @return [Google::Api::ResourceDescriptor] A representation of the resource.
         
     | 
| 
       528 
     | 
    
         
            -
                  #   This is generally intended to be attached to the "name" field.
         
     | 
| 
       529 
     | 
    
         
            -
                  #   See `google/api/resource.proto`.
         
     | 
| 
       530 
     | 
    
         
            -
                  def resource
         
     | 
| 
       531 
     | 
    
         
            -
                    options[:".google.api.resource"] if options
         
     | 
| 
      
 551 
     | 
    
         
            +
                    @resource.parent = self if @resource
         
     | 
| 
       532 
552 
     | 
    
         
             
                  end
         
     | 
| 
       533 
553 
     | 
    
         | 
| 
       534 
554 
     | 
    
         
             
                  # @return [Boolean] whether this type is a map entry
         
     | 
| 
         @@ -713,5 +733,95 @@ module Gapic 
     | 
|
| 
       713 
733 
     | 
    
         
             
                    :options
         
     | 
| 
       714 
734 
     | 
    
         
             
                  )
         
     | 
| 
       715 
735 
     | 
    
         
             
                end
         
     | 
| 
      
 736 
     | 
    
         
            +
             
     | 
| 
      
 737 
     | 
    
         
            +
                # Wrapper for a protobuf Resource.
         
     | 
| 
      
 738 
     | 
    
         
            +
                #
         
     | 
| 
      
 739 
     | 
    
         
            +
                # Unlike most wrappers, this does not subclass the {Proto} wrapper because
         
     | 
| 
      
 740 
     | 
    
         
            +
                # it does not use the fields exposed by that wrapper (`address`, `docs`,
         
     | 
| 
      
 741 
     | 
    
         
            +
                # etc.) This is here principally to augment the resource definition with
         
     | 
| 
      
 742 
     | 
    
         
            +
                # information about resource parent-child relationships.
         
     | 
| 
      
 743 
     | 
    
         
            +
                #
         
     | 
| 
      
 744 
     | 
    
         
            +
                # Resource parentage is defined implicitly by path patterns. The algorithm
         
     | 
| 
      
 745 
     | 
    
         
            +
                # is as follows:
         
     | 
| 
      
 746 
     | 
    
         
            +
                # * If the final segment of a pattern is an ID segment (i.e. `*` or some
         
     | 
| 
      
 747 
     | 
    
         
            +
                #   `{name}`) then remove it and the previous segment (which we assume to
         
     | 
| 
      
 748 
     | 
    
         
            +
                #   be the corresponding collection identifier, as described in AIP-122.)
         
     | 
| 
      
 749 
     | 
    
         
            +
                #   The resulting pattern is what we expect a parent to have.
         
     | 
| 
      
 750 
     | 
    
         
            +
                # * If the final segment is static, then assume the pattern represents a
         
     | 
| 
      
 751 
     | 
    
         
            +
                #   singleton resource (AIP-156) and remove only that one segment. The
         
     | 
| 
      
 752 
     | 
    
         
            +
                #   resulting pattern is what we expect a parent to have.
         
     | 
| 
      
 753 
     | 
    
         
            +
                #
         
     | 
| 
      
 754 
     | 
    
         
            +
                # The {Resource#parsed_parent_patterns} method returns the set of patterns
         
     | 
| 
      
 755 
     | 
    
         
            +
                # we expect of parents. It is then possible to search for resources with
         
     | 
| 
      
 756 
     | 
    
         
            +
                # those patterns to determine what the parents are.
         
     | 
| 
      
 757 
     | 
    
         
            +
                #
         
     | 
| 
      
 758 
     | 
    
         
            +
                # @!attribute [rw] parent
         
     | 
| 
      
 759 
     | 
    
         
            +
                #   @return [Gapic::Schema::File,Gapic::Schema::Message] The parent object.
         
     | 
| 
      
 760 
     | 
    
         
            +
                # @!attribute [r] descriptor
         
     | 
| 
      
 761 
     | 
    
         
            +
                #   @return [Array<Gapic::Schema::ResourceDescriptor>] The resource
         
     | 
| 
      
 762 
     | 
    
         
            +
                #     descriptor.
         
     | 
| 
      
 763 
     | 
    
         
            +
                # @!attribute [r] parsed_patterns
         
     | 
| 
      
 764 
     | 
    
         
            +
                #   @return [Array<Array<String>>] The normalized, segmented forms of the
         
     | 
| 
      
 765 
     | 
    
         
            +
                #     patterns. Normalized means all ID segments are replaced by asterisks
         
     | 
| 
      
 766 
     | 
    
         
            +
                #     to remove non-structural differences due to different names being
         
     | 
| 
      
 767 
     | 
    
         
            +
                #     used. Segmented means simply split on slashes.
         
     | 
| 
      
 768 
     | 
    
         
            +
                #     For example, if a pattern is `"projects/{project}""`, the
         
     | 
| 
      
 769 
     | 
    
         
            +
                #     corresponding parsed pattern would be `["projects", "*"]`.
         
     | 
| 
      
 770 
     | 
    
         
            +
                # @!attribute [r] parent_resources
         
     | 
| 
      
 771 
     | 
    
         
            +
                #   @return [Array<Gapic::Schema::Resource>] Parent resources
         
     | 
| 
      
 772 
     | 
    
         
            +
                class Resource
         
     | 
| 
      
 773 
     | 
    
         
            +
                  extend Forwardable
         
     | 
| 
      
 774 
     | 
    
         
            +
                  attr_reader :descriptor, :parsed_patterns, :parent_resources
         
     | 
| 
      
 775 
     | 
    
         
            +
                  attr_accessor :parent
         
     | 
| 
      
 776 
     | 
    
         
            +
             
     | 
| 
      
 777 
     | 
    
         
            +
                  # Initializes a resource object.
         
     | 
| 
      
 778 
     | 
    
         
            +
                  # @param descriptor [Google::Protobuf::ResourceDescriptor] the protobuf
         
     | 
| 
      
 779 
     | 
    
         
            +
                  #   representation of this resource.
         
     | 
| 
      
 780 
     | 
    
         
            +
                  def initialize descriptor
         
     | 
| 
      
 781 
     | 
    
         
            +
                    @parent = nil
         
     | 
| 
      
 782 
     | 
    
         
            +
                    @descriptor = descriptor
         
     | 
| 
      
 783 
     | 
    
         
            +
                    @parsed_patterns = descriptor.pattern.map do |pattern|
         
     | 
| 
      
 784 
     | 
    
         
            +
                      pattern.split("/").map do |segment|
         
     | 
| 
      
 785 
     | 
    
         
            +
                        segment =~ %r{\{[^/\}]+(=[^\}]+)?\}} ? "*" : segment
         
     | 
| 
      
 786 
     | 
    
         
            +
                      end.freeze
         
     | 
| 
      
 787 
     | 
    
         
            +
                    end.freeze
         
     | 
| 
      
 788 
     | 
    
         
            +
                    @parent_resources = []
         
     | 
| 
      
 789 
     | 
    
         
            +
                  end
         
     | 
| 
      
 790 
     | 
    
         
            +
             
     | 
| 
      
 791 
     | 
    
         
            +
                  # Returns the "root" of this schema.
         
     | 
| 
      
 792 
     | 
    
         
            +
                  # @return [Gapic::Schema::Api]
         
     | 
| 
      
 793 
     | 
    
         
            +
                  def containing_api
         
     | 
| 
      
 794 
     | 
    
         
            +
                    parent&.containing_api
         
     | 
| 
      
 795 
     | 
    
         
            +
                  end
         
     | 
| 
      
 796 
     | 
    
         
            +
             
     | 
| 
      
 797 
     | 
    
         
            +
                  # Returns the file containing this proto entity
         
     | 
| 
      
 798 
     | 
    
         
            +
                  # @return [Gapic::Schema::File]
         
     | 
| 
      
 799 
     | 
    
         
            +
                  def containing_file
         
     | 
| 
      
 800 
     | 
    
         
            +
                    parent&.containing_file
         
     | 
| 
      
 801 
     | 
    
         
            +
                  end
         
     | 
| 
      
 802 
     | 
    
         
            +
             
     | 
| 
      
 803 
     | 
    
         
            +
                  # Returns parsed patterns for the expected parents.
         
     | 
| 
      
 804 
     | 
    
         
            +
                  # @return [Array<Array<String>>]
         
     | 
| 
      
 805 
     | 
    
         
            +
                  def parsed_parent_patterns
         
     | 
| 
      
 806 
     | 
    
         
            +
                    @parsed_patterns.map do |pat|
         
     | 
| 
      
 807 
     | 
    
         
            +
                      parent = pat.last =~ /^\*\*?$/ ? pat[0...-2] : pat[0...-1]
         
     | 
| 
      
 808 
     | 
    
         
            +
                      parent.empty? ? nil : parent
         
     | 
| 
      
 809 
     | 
    
         
            +
                    end.compact.uniq
         
     | 
| 
      
 810 
     | 
    
         
            +
                  end
         
     | 
| 
      
 811 
     | 
    
         
            +
             
     | 
| 
      
 812 
     | 
    
         
            +
                  # @!method type
         
     | 
| 
      
 813 
     | 
    
         
            +
                  #   @return [String] the resource type string.
         
     | 
| 
      
 814 
     | 
    
         
            +
                  # @!method pattern
         
     | 
| 
      
 815 
     | 
    
         
            +
                  #   @return [Array<String>] the set of patterns.
         
     | 
| 
      
 816 
     | 
    
         
            +
                  # @!method name_field
         
     | 
| 
      
 817 
     | 
    
         
            +
                  #   @return [String] the field on the resource that designates the
         
     | 
| 
      
 818 
     | 
    
         
            +
                  #     resource name field. If omitted, this is assumed to be "name".
         
     | 
| 
      
 819 
     | 
    
         
            +
                  def_delegators(
         
     | 
| 
      
 820 
     | 
    
         
            +
                    :descriptor,
         
     | 
| 
      
 821 
     | 
    
         
            +
                    :type,
         
     | 
| 
      
 822 
     | 
    
         
            +
                    :pattern,
         
     | 
| 
      
 823 
     | 
    
         
            +
                    :name_field
         
     | 
| 
      
 824 
     | 
    
         
            +
                  )
         
     | 
| 
      
 825 
     | 
    
         
            +
                end
         
     | 
| 
       716 
826 
     | 
    
         
             
              end
         
     | 
| 
       717 
827 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <%- assert_locals gem -%>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <%= render partial: "shared/header" -%>
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # This gem does not autoload during Bundler.require. To load this gem,
         
     | 
| 
      
 5 
     | 
    
         
            +
            # issue explicit require statements for the packages desired, e.g.:
         
     | 
| 
      
 6 
     | 
    
         
            +
            <%- gem.packages.each do |package| -%>
         
     | 
| 
      
 7 
     | 
    
         
            +
            # require "<%= package.package_require %>"
         
     | 
| 
      
 8 
     | 
    
         
            +
            <%- end -%>
         
     | 
| 
         @@ -23,9 +23,9 @@ Gem::Specification.new do |gem| 
     | 
|
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
              gem.required_ruby_version = ">= 2.4"
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
              gem.add_dependency "gapic-common", "~> 0. 
     | 
| 
      
 26 
     | 
    
         
            +
              gem.add_dependency "gapic-common", "~> 0.2"
         
     | 
| 
       27 
27 
     | 
    
         
             
              <%- if gem.iam_dependency? -%>
         
     | 
| 
       28 
     | 
    
         
            -
              gem.add_dependency "grpc-google-iam-v1", " 
     | 
| 
      
 28 
     | 
    
         
            +
              gem.add_dependency "grpc-google-iam-v1", ">= 0.6.10", "< 2.0"
         
     | 
| 
       29 
29 
     | 
    
         
             
              <%- end -%>
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
              gem.add_development_dependency "google-style", "~> 1.24.0"
         
     | 
| 
         @@ -1,9 +1,9 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # <%= gem.title %>
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            <%= gem.description %>
         
     | 
| 
      
 1 
     | 
    
         
            +
            # Ruby Client for the <%= gem.title %> API
         
     | 
| 
       4 
2 
     | 
    
         | 
| 
       5 
3 
     | 
    
         
             
            <%= gem.summary %>
         
     | 
| 
       6 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            <%= gem.description %>
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       7 
7 
     | 
    
         
             
            <%= gem.homepage %>
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            ## Installation
         
     | 
| 
         @@ -12,6 +12,20 @@ 
     | 
|
| 
       12 
12 
     | 
    
         
             
            $ gem install <%= gem.name %>
         
     | 
| 
       13 
13 
     | 
    
         
             
            ```
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
      
 15 
     | 
    
         
            +
            ## Quick Start
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 18 
     | 
    
         
            +
            require "<%= gem.entrypoint_require %>"
         
     | 
| 
      
 19 
     | 
    
         
            +
            <%- service = gem.packages.first&.services.first -%>
         
     | 
| 
      
 20 
     | 
    
         
            +
            <%- method = service&.methods.first -%>
         
     | 
| 
      
 21 
     | 
    
         
            +
            <%- if service && method -%>
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            client = <%= service.create_client_call %>
         
     | 
| 
      
 24 
     | 
    
         
            +
            request = my_create_request
         
     | 
| 
      
 25 
     | 
    
         
            +
            response = client.<%= method.name %> request
         
     | 
| 
      
 26 
     | 
    
         
            +
            <%- end -%>
         
     | 
| 
      
 27 
     | 
    
         
            +
            ```
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       15 
29 
     | 
    
         
             
            ## Supported Ruby Versions
         
     | 
| 
       16 
30 
     | 
    
         | 
| 
       17 
31 
     | 
    
         
             
            This library is supported on Ruby 2.4+.
         
     | 
| 
         @@ -9,51 +9,23 @@ AllCops: 
     | 
|
| 
       9 
9 
     | 
    
         
             
                - "test/**/*"
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            Metrics/AbcSize:
         
     | 
| 
       12 
     | 
    
         
            -
               
     | 
| 
       13 
     | 
    
         
            -
                <%- gem.packages.each do |package| -%>
         
     | 
| 
       14 
     | 
    
         
            -
                <%- package.services.each do |service| -%>
         
     | 
| 
       15 
     | 
    
         
            -
                - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
         
     | 
| 
       16 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
       17 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
      
 12 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
       18 
13 
     | 
    
         
             
            Metrics/ClassLength:
         
     | 
| 
       19 
     | 
    
         
            -
               
     | 
| 
       20 
     | 
    
         
            -
                <%- gem.packages.each do |package| -%>
         
     | 
| 
       21 
     | 
    
         
            -
                <%- package.services.each do |service| -%>
         
     | 
| 
       22 
     | 
    
         
            -
                - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
         
     | 
| 
       23 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
       24 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
      
 14 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
       25 
15 
     | 
    
         
             
            Metrics/CyclomaticComplexity:
         
     | 
| 
       26 
     | 
    
         
            -
               
     | 
| 
       27 
     | 
    
         
            -
                <%- gem.packages.each do |package| -%>
         
     | 
| 
       28 
     | 
    
         
            -
                <%- package.services.each do |service| -%>
         
     | 
| 
       29 
     | 
    
         
            -
                - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
         
     | 
| 
       30 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
       31 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
      
 16 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
       32 
17 
     | 
    
         
             
            Metrics/LineLength:
         
     | 
| 
       33 
     | 
    
         
            -
               
     | 
| 
       34 
     | 
    
         
            -
                <%- gem.packages.each do |package| -%>
         
     | 
| 
       35 
     | 
    
         
            -
                <%- package.services.each do |service| -%>
         
     | 
| 
       36 
     | 
    
         
            -
                - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
         
     | 
| 
       37 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
       38 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
      
 18 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
       39 
19 
     | 
    
         
             
            Metrics/MethodLength:
         
     | 
| 
       40 
     | 
    
         
            -
               
     | 
| 
       41 
     | 
    
         
            -
                <%- gem.packages.each do |package| -%>
         
     | 
| 
       42 
     | 
    
         
            -
                <%- package.services.each do |service| -%>
         
     | 
| 
       43 
     | 
    
         
            -
                - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
         
     | 
| 
       44 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
       45 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
      
 20 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
       46 
21 
     | 
    
         
             
            Metrics/PerceivedComplexity:
         
     | 
| 
      
 22 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 23 
     | 
    
         
            +
            Naming/FileName:
         
     | 
| 
       47 
24 
     | 
    
         
             
              Exclude:
         
     | 
| 
       48 
     | 
    
         
            -
                 
     | 
| 
       49 
     | 
    
         
            -
                <%- package.services.each do |service| -%>
         
     | 
| 
       50 
     | 
    
         
            -
                - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
         
     | 
| 
       51 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
       52 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
      
 25 
     | 
    
         
            +
                - "lib/<%= gem.name %>.rb"
         
     | 
| 
       53 
26 
     | 
    
         
             
            Style/CaseEquality:
         
     | 
| 
       54 
     | 
    
         
            -
               
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                <%- end -%>
         
     | 
| 
      
 27 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 28 
     | 
    
         
            +
            Style/IfUnlessModifier:
         
     | 
| 
      
 29 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 30 
     | 
    
         
            +
            Style/ModuleFunction:
         
     | 
| 
      
 31 
     | 
    
         
            +
              Enabled: false
         
     |