gapic-generator 0.3.1 → 0.5.1
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 +35 -0
- data/lib/gapic/formatting_utils.rb +9 -7
- data/lib/gapic/generator/version.rb +1 -1
- data/lib/gapic/generators/default_generator.rb +13 -11
- data/lib/gapic/helpers/filepath_helper.rb +1 -0
- data/lib/gapic/helpers/namespace_helper.rb +8 -1
- data/lib/gapic/path_template/segment.rb +7 -0
- data/lib/gapic/presenters/field_presenter.rb +9 -9
- data/lib/gapic/presenters/file_presenter.rb +1 -1
- data/lib/gapic/presenters/method_presenter.rb +23 -17
- data/lib/gapic/presenters/package_presenter.rb +8 -1
- data/lib/gapic/presenters/resource_presenter.rb +55 -35
- data/lib/gapic/presenters/service_presenter.rb +56 -19
- data/lib/gapic/ruby_info.rb +93 -0
- data/lib/gapic/schema/api.rb +63 -1
- data/templates/default/gem/gemfile.erb +3 -0
- data/templates/default/gem/gemspec.erb +3 -1
- data/templates/default/gem/rakefile.erb +1 -0
- data/templates/default/gem/test_helper.erb +8 -0
- data/templates/default/layouts/_ruby.erb +5 -4
- data/templates/default/proto_docs/_message.erb +2 -2
- data/templates/default/service/client.erb +1 -1
- data/templates/default/service/client/_client.erb +15 -4
- data/templates/default/service/client/_config.erb +32 -28
- data/templates/default/service/client/_credentials.erb +1 -1
- data/templates/default/service/client/_operations.erb +3 -1
- data/templates/default/service/client/method/def/_options_defaults.erb +2 -2
- data/templates/default/service/client/method/def/_request_normal.erb +2 -2
- data/templates/default/service/client/method/def/_request_streaming.erb +3 -3
- data/templates/default/service/client/method/def/_response_normal.erb +1 -1
- data/templates/default/service/client/method/def/_response_paged.erb +2 -2
- data/templates/default/service/client/method/docs/_error.erb +1 -1
- data/templates/default/service/client/method/docs/_request_normal.erb +2 -2
- data/templates/default/service/client/method/docs/_request_streaming.erb +2 -2
- data/templates/default/service/client/method/docs/_response.erb +1 -1
- data/templates/default/service/client/resource/_def.erb +1 -1
- data/templates/default/service/client/resource/_multi.erb +4 -7
- data/templates/default/service/client/resource/_single.erb +2 -3
- data/templates/default/service/credentials.erb +1 -1
- data/templates/default/service/operations.erb +1 -1
- data/templates/default/service/paths.erb +1 -1
- data/templates/default/service/test/_resource.erb +16 -0
- data/templates/default/service/test/client.erb +17 -4
- data/templates/default/service/test/client_operations.erb +3 -4
- data/templates/default/service/test/client_paths.erb +17 -0
- data/templates/default/service/test/method/_configure.erb +19 -0
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3aaec7f146400572f3b4ad346c8a69849ff3903073eadabd7eec6f6e882d6bb9
|
4
|
+
data.tar.gz: 39987ab08fe97c6e4acdcfe3357e398df99db73f2ab95960c8c1015456f79224
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87bfd8d75d938d8e82ff4fc5b17aab92260dedb745faf47c5abda914920145d85a0415c43ddc57126bd7942fe1b76801ed53d4a2d0b14f851adb3539ce34d0c6
|
7
|
+
data.tar.gz: 89e9820c8f7ba98c77165e3ff0fb38ae2b84b333873bf458ca7c87dca1e0a38c7a09f5940027fe081a2589ef429488ebd7bad94284bc343b918faf414486296b
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,40 @@
|
|
1
1
|
# Release History for gapic-generator
|
2
2
|
|
3
|
+
### 0.5.1 / 2020-05-21
|
4
|
+
|
5
|
+
* Support a configuration for overriding service module names.
|
6
|
+
* Operations client honors the quota_project setting.
|
7
|
+
|
8
|
+
### 0.5.0 / 2020-05-19
|
9
|
+
|
10
|
+
* Add quota_project to the generated configs.
|
11
|
+
* Allow resource patterns with a star as a segment template.
|
12
|
+
* Generate tests for resource path helpers.
|
13
|
+
* Pin protobuf dependency for Ruby < 2.5.
|
14
|
+
* Create a test helper in for generated tests.
|
15
|
+
|
16
|
+
### 0.4.2 / 2020-04-28
|
17
|
+
|
18
|
+
* Prepend double-colon to absolute/global namespaces to prevent conflicts.
|
19
|
+
* Fix documentation/examples of timeouts to clarify they are in seconds.
|
20
|
+
|
21
|
+
### 0.4.0 / 2020-04-20
|
22
|
+
|
23
|
+
* Support generating clients of "common" interfaces by delegating to another service config.
|
24
|
+
* Added an accessor for the long-running-operation client from the main client.
|
25
|
+
* Generate tests for the configure method and operations client accessor.
|
26
|
+
* Prevent generation of RPC or factory methods with reserved names.
|
27
|
+
* Fixed: LRO clients weren't inheriting custom endpoints from the main client.
|
28
|
+
* Fixed: Cross-references weren't interpreted if the text included backticks, spaces, or hyphens.
|
29
|
+
|
30
|
+
### 0.3.3 / 2020-04-13
|
31
|
+
|
32
|
+
* Fix cross-reference links to multi-word enum values.
|
33
|
+
|
34
|
+
### 0.3.2 / 2020-04-12
|
35
|
+
|
36
|
+
* Fix the talent.v4beta1 hack.
|
37
|
+
|
3
38
|
### 0.3.1 / 2020-04-11
|
4
39
|
|
5
40
|
* Disable ModuleLength metric for generated code.
|
@@ -22,7 +22,7 @@ module Gapic
|
|
22
22
|
#
|
23
23
|
module FormattingUtils
|
24
24
|
@brace_detector = /\A(?<pre>[^`]*(`[^`]*`[^`]*)*[^`\\])?\{(?<inside>[^\s][^}]*)\}(?<post>.*)\z/m
|
25
|
-
@xref_detector = /\A(?<pre>[^`]*(`[^`]*`[^`]*)*)?\[(?<text>[\w\.]+)\]\[(?<addr>[\w\.]+)\](?<post>.*)\z/m
|
25
|
+
@xref_detector = /\A(?<pre>[^`]*(`[^`]*`[^`]*)*)?\[(?<text>[\w\. `-]+)\]\[(?<addr>[\w\.]+)\](?<post>.*)\z/m
|
26
26
|
@list_element_detector = /\A\s*(\*|\+|-|[0-9a-zA-Z]+\.)\s/
|
27
27
|
|
28
28
|
class << self
|
@@ -137,13 +137,15 @@ module Gapic
|
|
137
137
|
|
138
138
|
case entity
|
139
139
|
when Gapic::Schema::Service
|
140
|
-
"{
|
140
|
+
"{::#{convert_address_to_ruby entity}::Client #{text}}"
|
141
141
|
when Gapic::Schema::Method
|
142
|
-
"{
|
143
|
-
when Gapic::Schema::Message, Gapic::Schema::Enum
|
144
|
-
"{
|
142
|
+
"{::#{convert_address_to_ruby entity.parent}::Client##{entity.name.underscore} #{text}}"
|
143
|
+
when Gapic::Schema::Message, Gapic::Schema::Enum
|
144
|
+
"{::#{convert_address_to_ruby entity} #{text}}"
|
145
|
+
when Gapic::Schema::EnumValue
|
146
|
+
"{::#{convert_address_to_ruby entity.parent}::#{entity.name} #{text}}"
|
145
147
|
when Gapic::Schema::Field
|
146
|
-
"{
|
148
|
+
"{::#{convert_address_to_ruby entity.parent}##{entity.name} #{text}}"
|
147
149
|
end
|
148
150
|
end
|
149
151
|
|
@@ -153,7 +155,7 @@ module Gapic
|
|
153
155
|
address = entity.address
|
154
156
|
address = address.join "." if address.is_a? Array
|
155
157
|
address = address.sub file.package, file.ruby_package if file.ruby_package&.present?
|
156
|
-
address.split(
|
158
|
+
address.split(/\.|::/).reject(&:empty?).map(&:camelize).map { |node| api.fix_namespace node }.join("::")
|
157
159
|
end
|
158
160
|
end
|
159
161
|
end
|
@@ -58,22 +58,24 @@ module Gapic
|
|
58
58
|
files << g("service/paths.erb", "lib/#{service.paths_file_path}", service: service) if service.paths?
|
59
59
|
files << g("service/operations.erb", "lib/#{service.operations_file_path}", service: service) if service.lro?
|
60
60
|
files << g("service/test/client.erb", "test/#{service.test_client_file_path}", service: service)
|
61
|
+
files << g("service/test/client_paths.erb", "test/#{service.test_paths_file_path}", service: service) if service.paths?
|
61
62
|
files << g("service/test/client_operations.erb", "test/#{service.test_client_operations_file_path}", service: service) if service.lro?
|
62
63
|
end
|
63
64
|
end
|
64
65
|
|
65
66
|
# Gem level files
|
66
|
-
files << g("gem/gitignore.erb",
|
67
|
-
files << g("gem/version.erb",
|
68
|
-
files << g("gem/
|
69
|
-
files << g("gem/
|
70
|
-
files << g("gem/
|
71
|
-
files << g("gem/
|
72
|
-
files << g("gem/
|
73
|
-
files << g("gem/
|
74
|
-
files << g("gem/
|
75
|
-
files << g("gem/
|
76
|
-
files << g("gem/
|
67
|
+
files << g("gem/gitignore.erb", ".gitignore", gem: gem)
|
68
|
+
files << g("gem/version.erb", "lib/#{gem.version_file_path}", gem: gem)
|
69
|
+
files << g("gem/test_helper.erb", "test/helper.rb", gem: gem)
|
70
|
+
files << g("gem/gemspec.erb", "#{gem.name}.gemspec", gem: gem)
|
71
|
+
files << g("gem/gemfile.erb", "Gemfile", gem: gem)
|
72
|
+
files << g("gem/rakefile.erb", "Rakefile", gem: gem)
|
73
|
+
files << g("gem/readme.erb", "README.md", gem: gem)
|
74
|
+
files << g("gem/changelog.erb", "CHANGELOG.md", gem: gem)
|
75
|
+
files << g("gem/rubocop.erb", ".rubocop.yml", gem: gem)
|
76
|
+
files << g("gem/yardopts.erb", ".yardopts", gem: gem)
|
77
|
+
files << g("gem/license.erb", "LICENSE.md", gem: gem)
|
78
|
+
files << g("gem/entrypoint.erb", "lib/#{gem.name}.rb", gem: gem)
|
77
79
|
|
78
80
|
gem.proto_files.each do |proto_file|
|
79
81
|
files << g("proto_docs/proto_file.erb", "proto_docs/#{proto_file.docs_file_path}", file: proto_file)
|
@@ -38,7 +38,14 @@ module Gapic
|
|
38
38
|
# Ruby double-semicolon separators.
|
39
39
|
def ruby_namespace_for_address address
|
40
40
|
address = address.split "." if address.is_a? String
|
41
|
-
address.reject(&:empty?).map(&:camelize).join
|
41
|
+
ensure_absolute_namespace address.reject(&:empty?).map(&:camelize).join("::")
|
42
|
+
end
|
43
|
+
|
44
|
+
##
|
45
|
+
# Returns the given namespace, ensuring double colons are prepended
|
46
|
+
#
|
47
|
+
def ensure_absolute_namespace namespace
|
48
|
+
namespace.start_with?("::") ? namespace : "::#{namespace}"
|
42
49
|
end
|
43
50
|
|
44
51
|
##
|
@@ -56,6 +56,13 @@ module Gapic
|
|
56
56
|
!@pattern.nil?
|
57
57
|
end
|
58
58
|
|
59
|
+
# Determines if the segment has a nontrivial pattern (i.e. not `*` or `**`).
|
60
|
+
#
|
61
|
+
# @return [Boolean]
|
62
|
+
def nontrivial_pattern?
|
63
|
+
@pattern && @pattern != "*" && @pattern != "**"
|
64
|
+
end
|
65
|
+
|
59
66
|
# @private
|
60
67
|
def == other
|
61
68
|
return false unless other.is_a? self.class
|
@@ -95,21 +95,21 @@ module Gapic
|
|
95
95
|
base_type =
|
96
96
|
if field.message?
|
97
97
|
type = message_ruby_type field.message
|
98
|
-
output ? type : "#{type}, Hash"
|
98
|
+
output ? type : "#{type}, ::Hash"
|
99
99
|
elsif field.enum?
|
100
100
|
# TODO: handle when arg message is nil and enum is the type
|
101
101
|
message_ruby_type field.enum
|
102
102
|
else
|
103
103
|
case field.type
|
104
|
-
when 1, 2 then "Float"
|
105
|
-
when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "Integer"
|
106
|
-
when 9, 12 then "String"
|
107
|
-
when 8 then "Boolean"
|
104
|
+
when 1, 2 then "::Float"
|
105
|
+
when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "::Integer"
|
106
|
+
when 9, 12 then "::String"
|
107
|
+
when 8 then "::Boolean"
|
108
108
|
else
|
109
|
-
"Object"
|
109
|
+
"::Object"
|
110
110
|
end
|
111
111
|
end
|
112
|
-
field.repeated? ? "Array<#{base_type}>" : base_type
|
112
|
+
field.repeated? ? "::Array<#{base_type}>" : base_type
|
113
113
|
end
|
114
114
|
|
115
115
|
def field_map_type entry_message, output
|
@@ -118,7 +118,7 @@ module Gapic
|
|
118
118
|
key_field = field if field.name == "key"
|
119
119
|
value_field = field if field.name == "value"
|
120
120
|
end
|
121
|
-
class_name = output ? "Google::Protobuf::Map" : "Hash"
|
121
|
+
class_name = output ? "::Google::Protobuf::Map" : "::Hash"
|
122
122
|
if key_field && value_field
|
123
123
|
key_type = field_doc_types key_field, output
|
124
124
|
value_type = field_doc_types value_field, output
|
@@ -141,7 +141,7 @@ module Gapic
|
|
141
141
|
when 9, 12 then "\"hello world\""
|
142
142
|
when 8 then "true"
|
143
143
|
else
|
144
|
-
"Object"
|
144
|
+
"::Object"
|
145
145
|
end
|
146
146
|
end
|
147
147
|
end
|
@@ -16,6 +16,7 @@
|
|
16
16
|
|
17
17
|
require "active_support/inflector"
|
18
18
|
require "gapic/path_template"
|
19
|
+
require "gapic/ruby_info"
|
19
20
|
require "gapic/helpers/namespace_helper"
|
20
21
|
|
21
22
|
module Gapic
|
@@ -36,7 +37,11 @@ module Gapic
|
|
36
37
|
end
|
37
38
|
|
38
39
|
def name
|
39
|
-
|
40
|
+
@name ||= begin
|
41
|
+
candidate = ActiveSupport::Inflector.underscore @method.name
|
42
|
+
candidate = "call_#{candidate}" if Gapic::RubyInfo.excluded_method_names.include? candidate
|
43
|
+
candidate
|
44
|
+
end
|
40
45
|
end
|
41
46
|
|
42
47
|
def kind
|
@@ -59,13 +64,13 @@ module Gapic
|
|
59
64
|
|
60
65
|
def doc_response_type
|
61
66
|
ret = return_type
|
62
|
-
ret = "Gapic::Operation" if lro?
|
67
|
+
ret = "::Gapic::Operation" if lro?
|
63
68
|
if server_streaming?
|
64
|
-
ret = "Enumerable<#{ret}>"
|
69
|
+
ret = "::Enumerable<#{ret}>"
|
65
70
|
elsif paged?
|
66
71
|
paged_type = paged_response_type
|
67
|
-
paged_type = "Gapic::Operation" if paged_type == "Google::Longrunning::Operation"
|
68
|
-
ret = "Gapic::PagedEnumerable<#{paged_type}>"
|
72
|
+
paged_type = "::Gapic::Operation" if paged_type == "::Google::Longrunning::Operation"
|
73
|
+
ret = "::Gapic::PagedEnumerable<#{paged_type}>"
|
69
74
|
end
|
70
75
|
ret
|
71
76
|
end
|
@@ -118,7 +123,7 @@ module Gapic
|
|
118
123
|
return [
|
119
124
|
OpenStruct.new(
|
120
125
|
name: "operation",
|
121
|
-
doc_types: "Gapic::Operation"
|
126
|
+
doc_types: "::Gapic::Operation"
|
122
127
|
)
|
123
128
|
]
|
124
129
|
end
|
@@ -129,7 +134,7 @@ module Gapic
|
|
129
134
|
),
|
130
135
|
OpenStruct.new(
|
131
136
|
name: "operation",
|
132
|
-
doc_types: "GRPC::ActiveCall::Operation"
|
137
|
+
doc_types: "::GRPC::ActiveCall::Operation"
|
133
138
|
)
|
134
139
|
]
|
135
140
|
end
|
@@ -145,9 +150,9 @@ module Gapic
|
|
145
150
|
end
|
146
151
|
|
147
152
|
def lro?
|
148
|
-
return paged_response_type == "Google::Longrunning::Operation" if paged?
|
153
|
+
return paged_response_type == "::Google::Longrunning::Operation" if paged?
|
149
154
|
|
150
|
-
message_ruby_type(@method.output) == "Google::Longrunning::Operation"
|
155
|
+
message_ruby_type(@method.output) == "::Google::Longrunning::Operation"
|
151
156
|
end
|
152
157
|
|
153
158
|
def client_streaming?
|
@@ -166,8 +171,9 @@ module Gapic
|
|
166
171
|
# to be removed when these methods no longer conform to AIP-4233.) For
|
167
172
|
# detailed information, see internal link go/actools-talent-pagination.
|
168
173
|
address = @method.address.join "."
|
169
|
-
return false if address == "google.cloud.talent.v4beta1.SearchProfiles"
|
170
|
-
return false if address == "google.cloud.talent.v4beta1.SearchJobs"
|
174
|
+
return false if address == "google.cloud.talent.v4beta1.ProfileService.SearchProfiles"
|
175
|
+
return false if address == "google.cloud.talent.v4beta1.JobService.SearchJobs"
|
176
|
+
return false if address == "google.cloud.talent.v4beta1.JobService.SearchJobsForAlert"
|
171
177
|
|
172
178
|
paged_request?(@method.input) && paged_response?(@method.output)
|
173
179
|
end
|
@@ -220,12 +226,12 @@ module Gapic
|
|
220
226
|
message_ruby_type arg.enum
|
221
227
|
else
|
222
228
|
case arg.type
|
223
|
-
when 1, 2 then "Float"
|
224
|
-
when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "Integer"
|
225
|
-
when 9, 12 then "String"
|
226
|
-
when 8 then "Boolean"
|
229
|
+
when 1, 2 then "::Float"
|
230
|
+
when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "::Integer"
|
231
|
+
when 9, 12 then "::String"
|
232
|
+
when 8 then "::Boolean"
|
227
233
|
else
|
228
|
-
"Object"
|
234
|
+
"::Object"
|
229
235
|
end
|
230
236
|
end
|
231
237
|
end
|
@@ -250,7 +256,7 @@ module Gapic
|
|
250
256
|
when 9, 12 then "\"hello world\""
|
251
257
|
when 8 then "true"
|
252
258
|
else
|
253
|
-
"Object"
|
259
|
+
"::Object"
|
254
260
|
end
|
255
261
|
end
|
256
262
|
end
|
@@ -53,10 +53,17 @@ module Gapic
|
|
53
53
|
namespace.split("::").last
|
54
54
|
end
|
55
55
|
|
56
|
+
# Services whose clients should be generated in this package namespace.
|
56
57
|
def services
|
57
58
|
@services ||= begin
|
58
59
|
files = @api.generate_files.select { |f| f.package == @package }
|
59
|
-
files.map(&:services).flatten
|
60
|
+
services = files.map(&:services).flatten
|
61
|
+
# Omit common services in this package. Common service clients do not
|
62
|
+
# go into their own package.
|
63
|
+
normal_services = services.select { |s| @api.delegate_service_for(s).nil? }
|
64
|
+
# But include common services that delegate to normal services in this package.
|
65
|
+
common_services = normal_services.flat_map { |s| @api.common_services_for s }
|
66
|
+
(normal_services + common_services).map { |s| ServicePresenter.new @api, s }
|
60
67
|
end
|
61
68
|
end
|
62
69
|
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
17
|
require "gapic/path_template"
|
18
|
-
require "ostruct"
|
19
18
|
require "active_support/inflector"
|
20
19
|
|
21
20
|
module Gapic
|
@@ -28,20 +27,10 @@ module Gapic
|
|
28
27
|
def initialize resource
|
29
28
|
@resource = resource
|
30
29
|
|
31
|
-
@patterns = resource.pattern.map
|
32
|
-
segments = Gapic::PathTemplate.parse template
|
33
|
-
OpenStruct.new(
|
34
|
-
template: template,
|
35
|
-
segments: segments,
|
36
|
-
arguments: arguments_for(segments),
|
37
|
-
path_string: path_string_for(segments)
|
38
|
-
)
|
39
|
-
end
|
30
|
+
@patterns = resource.pattern.map { |template| PatternPresenter.new template }
|
40
31
|
|
41
32
|
# Keep only patterns that can be used to create path helpers
|
42
|
-
@patterns.
|
43
|
-
named_arg_patterns?(pattern.segments) || positional_args?(pattern.segments)
|
44
|
-
end
|
33
|
+
@patterns.filter!(&:useful_for_helpers?)
|
45
34
|
end
|
46
35
|
|
47
36
|
def name
|
@@ -60,33 +49,64 @@ module Gapic
|
|
60
49
|
"#{ActiveSupport::Inflector.underscore name}_path"
|
61
50
|
end
|
62
51
|
|
63
|
-
|
52
|
+
##
|
53
|
+
# A presenter for a particular pattern
|
54
|
+
#
|
55
|
+
class PatternPresenter
|
56
|
+
def initialize template
|
57
|
+
@template = template
|
58
|
+
@segments = Gapic::PathTemplate.parse template
|
59
|
+
@arguments = arg_segments.map(&:name)
|
60
|
+
@path_string = build_path_string
|
61
|
+
end
|
64
62
|
|
65
|
-
|
66
|
-
arg_segments(segments).map(&:name)
|
67
|
-
end
|
63
|
+
attr_reader :template, :segments, :arguments, :path_string
|
68
64
|
|
69
|
-
|
70
|
-
|
71
|
-
|
65
|
+
def useful_for_helpers?
|
66
|
+
arg_segments.none?(&:nontrivial_pattern?) && arg_segments.none?(&:positional?)
|
67
|
+
end
|
72
68
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
"\#{#{segment.name}}"
|
77
|
-
else
|
78
|
-
# Should be a String
|
79
|
-
segment
|
80
|
-
end
|
81
|
-
end.join
|
82
|
-
end
|
69
|
+
def formal_arguments
|
70
|
+
arguments.map { |arg| "#{arg}:" }.join ", "
|
71
|
+
end
|
83
72
|
|
84
|
-
|
85
|
-
|
86
|
-
|
73
|
+
def arguments_key
|
74
|
+
arguments.sort.join ":"
|
75
|
+
end
|
76
|
+
|
77
|
+
def arguments_with_dummy_values
|
78
|
+
arguments.each_with_index.map { |arg, index| "#{arg}: \"value#{index}\"" }.join ", "
|
79
|
+
end
|
80
|
+
|
81
|
+
def expected_path_for_dummy_values
|
82
|
+
index = -1
|
83
|
+
segments.map do |segment|
|
84
|
+
if segment.is_a? Gapic::PathTemplate::Segment
|
85
|
+
index += 1
|
86
|
+
"value#{index}"
|
87
|
+
else
|
88
|
+
# Should be a String
|
89
|
+
segment
|
90
|
+
end
|
91
|
+
end.join
|
92
|
+
end
|
87
93
|
|
88
|
-
|
89
|
-
|
94
|
+
private
|
95
|
+
|
96
|
+
def arg_segments
|
97
|
+
segments.select { |segment| segment.is_a? Gapic::PathTemplate::Segment }
|
98
|
+
end
|
99
|
+
|
100
|
+
def build_path_string
|
101
|
+
segments.map do |segment|
|
102
|
+
if segment.is_a? Gapic::PathTemplate::Segment
|
103
|
+
"\#{#{segment.name}}"
|
104
|
+
else
|
105
|
+
# Should be a String
|
106
|
+
segment
|
107
|
+
end
|
108
|
+
end.join
|
109
|
+
end
|
90
110
|
end
|
91
111
|
end
|
92
112
|
end
|