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
@@ -14,25 +14,6 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
|
-
require "
|
17
|
+
require "gapic/helpers/filepath_helper"
|
18
18
|
|
19
|
-
|
20
|
-
##
|
21
|
-
# Converts a ruby namespace string to a file path string.
|
22
|
-
def ruby_file_path api, namespace
|
23
|
-
file_path = ruby_file_path_for_namespace namespace
|
24
|
-
fix_file_path api, file_path
|
25
|
-
end
|
26
|
-
|
27
|
-
##
|
28
|
-
# Converts a ruby namespace string to a file path string.
|
29
|
-
def ruby_file_path_for_namespace namespace
|
30
|
-
ActiveSupport::Inflector.underscore namespace
|
31
|
-
end
|
32
|
-
|
33
|
-
##
|
34
|
-
# Corrects a namespace by replacing known bad values with good values.
|
35
|
-
def fix_file_path api, file_path
|
36
|
-
file_path.split("/").map { |node| api.fix_file_path node }.join("/")
|
37
|
-
end
|
38
|
-
end
|
19
|
+
FilepathHelper = Gapic::Helpers::FilepathHelper
|
@@ -14,31 +14,6 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
|
-
require "
|
17
|
+
require "gapic/helpers/namespace_helper"
|
18
18
|
|
19
|
-
|
20
|
-
##
|
21
|
-
# Looks up the ruby_package for a dot-separated address string to a new string
|
22
|
-
# and creates the corrected Ruby namespace
|
23
|
-
def ruby_namespace api, address
|
24
|
-
file = api.file_for address
|
25
|
-
address = address.dup
|
26
|
-
address[file.package] = file.ruby_package if file.ruby_package.present?
|
27
|
-
namespace = ruby_namespace_for_address address
|
28
|
-
fix_namespace api, namespace
|
29
|
-
end
|
30
|
-
|
31
|
-
##
|
32
|
-
# Converts an array or dot-separated address string to a new string with
|
33
|
-
# Ruby double-semicolon separators.
|
34
|
-
def ruby_namespace_for_address address
|
35
|
-
address = address.split "." if address.is_a? String
|
36
|
-
address.reject(&:empty?).map(&:camelize).join "::"
|
37
|
-
end
|
38
|
-
|
39
|
-
##
|
40
|
-
# Corrects a namespace by replacing known bad values with good values.
|
41
|
-
def fix_namespace api, namespace
|
42
|
-
namespace.split("::").map { |node| api.fix_namespace node }.join("::")
|
43
|
-
end
|
44
|
-
end
|
19
|
+
NamespaceHelper = Gapic::Helpers::NamespaceHelper
|
@@ -1,11 +1,9 @@
|
|
1
1
|
<%- assert_locals namespace -%>
|
2
2
|
<%= render partial: "shared/header" -%>
|
3
|
-
<%- if instance_variable_defined? :@requires -%>
|
4
3
|
|
4
|
+
<%- if instance_variable_defined? :@requires -%>
|
5
5
|
<%= @requires -%>
|
6
6
|
<%- end -%>
|
7
|
-
<%- # Two newlines here so YARD won't use the header as documentation -%>
|
8
|
-
|
9
7
|
|
10
8
|
<%- namespace.split("::").each_with_index do |ns, i| -%>
|
11
9
|
<%= indent "module #{ns}", i*2 %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%- assert_locals package -%>
|
2
|
+
<% @requires = capture do %>
|
3
|
+
<%- package.services.each do |service| -%>
|
4
|
+
require "<%= service.service_require %>"
|
5
|
+
<%- end -%>
|
6
|
+
require "<%= package.gem.version_require %>"
|
7
|
+
<% end %>
|
8
|
+
<%- unless package.empty? -%>
|
9
|
+
##
|
10
|
+
# To load this package, including all its services, and instantiate a client:
|
11
|
+
#
|
12
|
+
# require "<%= package.package_require %>"
|
13
|
+
# client = <%= package.services.first.create_client_call %>
|
14
|
+
#
|
15
|
+
<%- end -%>
|
16
|
+
module <%= package.module_name %>
|
17
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<%- assert_locals service -%>
|
2
|
+
<% @requires = capture do %>
|
3
|
+
require "gapic/common"
|
4
|
+
require "gapic/config"
|
5
|
+
require "gapic/config/method"
|
6
|
+
|
7
|
+
require "<%= service.gem.version_require %>"
|
8
|
+
|
9
|
+
require "<%= service.credentials_require %>"
|
10
|
+
<%- if service.paths? -%>
|
11
|
+
require "<%= service.paths_require %>"
|
12
|
+
<%- end -%>
|
13
|
+
<%- if service.lro? -%>
|
14
|
+
require "<%= service.operations_require %>"
|
15
|
+
<%- end -%>
|
16
|
+
require "<%= service.client_require %>"
|
17
|
+
<% end %>
|
18
|
+
##
|
19
|
+
<%- if service.doc_description -%>
|
20
|
+
<%= indent service.doc_description, "# " %>
|
21
|
+
#
|
22
|
+
<%- end -%>
|
23
|
+
# To load this service and instantiate a client:
|
24
|
+
#
|
25
|
+
# require "<%= service.service_require %>"
|
26
|
+
# client = <%= service.create_client_call %>
|
27
|
+
#
|
28
|
+
module <%= service.module_name %>
|
29
|
+
end
|
30
|
+
<% @footer = capture do %>
|
31
|
+
<%= render partial: "service/helpers", locals: { service: service} -%>
|
32
|
+
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%- assert_locals package -%>
|
2
|
-
<%= render partial: "
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
<%= render partial: "lib/package",
|
3
|
+
layout: "layouts/ruby",
|
4
|
+
locals: { package: package,
|
5
|
+
namespace: package.parent_namespace }
|
6
|
+
%>
|
@@ -1,8 +1,6 @@
|
|
1
1
|
<%- assert_locals service -%>
|
2
|
-
<%= render partial: "
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
<%- end -%>
|
8
|
-
require "<%= service.credentials_require %>"
|
2
|
+
<%= render partial: "lib/service",
|
3
|
+
layout: "layouts/ruby",
|
4
|
+
locals: { service: service,
|
5
|
+
namespace: service.namespace }
|
6
|
+
%>
|
@@ -1,21 +1,15 @@
|
|
1
1
|
<%- assert_locals service -%>
|
2
2
|
<% @requires = capture do %>
|
3
|
-
require "gapic/common"
|
4
|
-
require "gapic/config"
|
5
|
-
require "gapic/config/method"
|
6
|
-
|
7
3
|
<%= render partial: "service/client/requires", locals: { service: service} -%>
|
8
|
-
require "<%= service.gem.version_require %>"
|
9
4
|
require "<%= service.proto_service_require %>"
|
10
|
-
require "<%= service.credentials_require %>"
|
11
|
-
<%- if service.paths? -%>
|
12
|
-
require "<%= service.paths_require %>"
|
13
|
-
<%- end -%>
|
14
|
-
<%- if service.lro? -%>
|
15
|
-
require "<%= service.operations_require %>"
|
16
|
-
<%- end -%>
|
17
5
|
<% end %>
|
18
|
-
|
6
|
+
##
|
7
|
+
# Client for the <%= service.name %> service.
|
8
|
+
#
|
9
|
+
<%- if service.doc_description -%>
|
10
|
+
<%= indent service.doc_description, "# " %>
|
11
|
+
#
|
12
|
+
<%- end -%>
|
19
13
|
class <%= service.client_name %>
|
20
14
|
<%- if service.paths? -%>
|
21
15
|
include <%= service.paths_name %>
|
@@ -131,7 +125,3 @@ class <%= service.client_name %>
|
|
131
125
|
|
132
126
|
<%= indent_tail render(partial: "service/client/config", locals: { service: service }), 2 %>
|
133
127
|
end
|
134
|
-
|
135
|
-
<% @footer = capture do %>
|
136
|
-
<%= render partial: "service/client/helpers", locals: { service: service} %>
|
137
|
-
<% end %>
|
@@ -1,10 +1,6 @@
|
|
1
1
|
<%- assert_locals service -%>
|
2
2
|
<% @requires = capture do %>
|
3
|
-
require "gapic/common"
|
4
3
|
require "gapic/operation"
|
5
|
-
|
6
|
-
require "<%= service.gem.version_require %>"
|
7
|
-
require "<%= service.client_require %>"
|
8
4
|
require "<%= service.lro_service.proto_service_require %>"
|
9
5
|
<% end %>
|
10
6
|
# Service that implements Longrunning Operations API.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
2
|
# Converts hash and nil to an options object
|
3
|
-
options = Gapic::CallOptions.new
|
3
|
+
options = Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
|
4
4
|
|
5
5
|
# Customize the options with defaults
|
6
6
|
metadata = @config.rpcs.<%= method.name %>.metadata.to_h
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
2
|
@<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |response, operation|
|
3
3
|
<%- if method.lro? -%>
|
4
|
-
response = Gapic::Operation.new response, <%= method.service.lro_client_ivar
|
4
|
+
response = Gapic::Operation.new response, <%= method.service.lro_client_ivar %>, options: options
|
5
5
|
<%- end -%>
|
6
6
|
yield response, operation if block_given?
|
7
7
|
return response
|
@@ -1,15 +1,21 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
2
|
# @overload <%= method.name %>(request, options = nil)
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
# Pass arguments to `<%= method.name %>` via a request object, either of type
|
4
|
+
# {<%= method.request_type %>} or an equivalent Hash.
|
5
|
+
#
|
6
|
+
# @param request [<%= method.request_type %>, Hash]
|
7
|
+
# A request object representing the call parameters. Required. To specify no
|
8
|
+
# parameters, or to keep all the default parameter values, pass an empty Hash.
|
7
9
|
# @param options [Gapic::CallOptions, Hash]
|
8
10
|
# Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
|
9
11
|
<%-if method.arguments.any?-%>
|
10
12
|
#
|
11
13
|
<%- arg_list = method.arguments.map { |arg| "#{arg.name}: nil"}.join ", " -%>
|
12
14
|
# @overload <%= method.name %>(<%= arg_list %>)
|
15
|
+
# Pass arguments to `<%= method.name %>` via keyword arguments. Note that at
|
16
|
+
# least one keyword argument is required. To specify no parameters, or to keep all
|
17
|
+
# the default parameter values, pass an empty Hash as a request object (see above).
|
18
|
+
#
|
13
19
|
<%- method.arguments.each do |arg| -%>
|
14
20
|
# @param <%= arg.name %> [<%= arg.doc_types %>]
|
15
21
|
<%- if arg.doc_description -%>
|
@@ -17,4 +23,3 @@
|
|
17
23
|
<%- end -%>
|
18
24
|
<%- end -%>
|
19
25
|
<%- end -%>
|
20
|
-
#
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
|
-
# @param request [Gapic::StreamInput, Enumerable<<%= method.request_type
|
2
|
+
# @param request [Gapic::StreamInput, Enumerable<<%= method.request_type %>, Hash>]
|
3
3
|
# An enumerable of {<%= method.request_type %>} instances.
|
4
4
|
# @param options [Gapic::CallOptions, Hash]
|
5
5
|
# Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gapic-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ernest Landrito
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2020-
|
13
|
+
date: 2020-04-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: actionpack
|
@@ -215,9 +215,23 @@ files:
|
|
215
215
|
- lib/gapic/grpc_service_config/parsing_error.rb
|
216
216
|
- lib/gapic/grpc_service_config/retry_policy.rb
|
217
217
|
- lib/gapic/grpc_service_config/service_config.rb
|
218
|
+
- lib/gapic/helpers/filepath_helper.rb
|
219
|
+
- lib/gapic/helpers/namespace_helper.rb
|
218
220
|
- lib/gapic/path_template.rb
|
219
221
|
- lib/gapic/path_template/parser.rb
|
220
222
|
- lib/gapic/path_template/segment.rb
|
223
|
+
- lib/gapic/presenters.rb
|
224
|
+
- lib/gapic/presenters/enum_presenter.rb
|
225
|
+
- lib/gapic/presenters/enum_value_presenter.rb
|
226
|
+
- lib/gapic/presenters/field_presenter.rb
|
227
|
+
- lib/gapic/presenters/file_presenter.rb
|
228
|
+
- lib/gapic/presenters/gem_presenter.rb
|
229
|
+
- lib/gapic/presenters/message_presenter.rb
|
230
|
+
- lib/gapic/presenters/method_presenter.rb
|
231
|
+
- lib/gapic/presenters/package_presenter.rb
|
232
|
+
- lib/gapic/presenters/resource_presenter.rb
|
233
|
+
- lib/gapic/presenters/sample_presenter.rb
|
234
|
+
- lib/gapic/presenters/service_presenter.rb
|
221
235
|
- lib/gapic/resource_lookup.rb
|
222
236
|
- lib/gapic/runner.rb
|
223
237
|
- lib/gapic/schema.rb
|
@@ -237,6 +251,7 @@ files:
|
|
237
251
|
- lib/google/rpc/status.pb.rb
|
238
252
|
- templates/default/gem/_version.erb
|
239
253
|
- templates/default/gem/changelog.erb
|
254
|
+
- templates/default/gem/entrypoint.erb
|
240
255
|
- templates/default/gem/gemfile.erb
|
241
256
|
- templates/default/gem/gemspec.erb
|
242
257
|
- templates/default/gem/gitignore.erb
|
@@ -249,19 +264,9 @@ files:
|
|
249
264
|
- templates/default/helpers/default_helper.rb
|
250
265
|
- templates/default/helpers/filepath_helper.rb
|
251
266
|
- templates/default/helpers/namespace_helper.rb
|
252
|
-
- templates/default/helpers/presenter_helper.rb
|
253
|
-
- templates/default/helpers/presenters/enum_presenter.rb
|
254
|
-
- templates/default/helpers/presenters/enum_value_presenter.rb
|
255
|
-
- templates/default/helpers/presenters/field_presenter.rb
|
256
|
-
- templates/default/helpers/presenters/file_presenter.rb
|
257
|
-
- templates/default/helpers/presenters/gem_presenter.rb
|
258
|
-
- templates/default/helpers/presenters/message_presenter.rb
|
259
|
-
- templates/default/helpers/presenters/method_presenter.rb
|
260
|
-
- templates/default/helpers/presenters/package_presenter.rb
|
261
|
-
- templates/default/helpers/presenters/resource_presenter.rb
|
262
|
-
- templates/default/helpers/presenters/sample_presenter.rb
|
263
|
-
- templates/default/helpers/presenters/service_presenter.rb
|
264
267
|
- templates/default/layouts/_ruby.erb
|
268
|
+
- templates/default/lib/_package.erb
|
269
|
+
- templates/default/lib/_service.erb
|
265
270
|
- templates/default/package.erb
|
266
271
|
- templates/default/proto_docs/_enum.erb
|
267
272
|
- templates/default/proto_docs/_message.erb
|
@@ -269,11 +274,11 @@ files:
|
|
269
274
|
- templates/default/proto_docs/proto_file.erb
|
270
275
|
- templates/default/proto_docs/readme.erb
|
271
276
|
- templates/default/service.erb
|
277
|
+
- templates/default/service/_helpers.erb
|
272
278
|
- templates/default/service/client.erb
|
273
279
|
- templates/default/service/client/_client.erb
|
274
280
|
- templates/default/service/client/_config.erb
|
275
281
|
- templates/default/service/client/_credentials.erb
|
276
|
-
- templates/default/service/client/_helpers.erb
|
277
282
|
- templates/default/service/client/_operations.erb
|
278
283
|
- templates/default/service/client/_paths.erb
|
279
284
|
- templates/default/service/client/_requires.erb
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2018 Google LLC
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
|
17
|
-
require "active_support/inflector"
|
18
|
-
require_relative "presenters/gem_presenter"
|
19
|
-
|
20
|
-
module PresenterHelper
|
21
|
-
def gem_presenter api
|
22
|
-
GemPresenter.new api
|
23
|
-
end
|
24
|
-
end
|
@@ -1,146 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2018 Google LLC
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
|
17
|
-
require "active_support/inflector"
|
18
|
-
|
19
|
-
class FieldPresenter
|
20
|
-
include NamespaceHelper
|
21
|
-
|
22
|
-
def initialize api, message, field
|
23
|
-
@api = api
|
24
|
-
@message = message
|
25
|
-
@field = field
|
26
|
-
end
|
27
|
-
|
28
|
-
def name
|
29
|
-
@field.name
|
30
|
-
end
|
31
|
-
|
32
|
-
def doc_types
|
33
|
-
field_doc_types @field, false
|
34
|
-
end
|
35
|
-
|
36
|
-
def doc_attribute_type
|
37
|
-
mode = @field.output_only? ? "r" : "rw"
|
38
|
-
"@!attribute [#{mode}] #{@field.name}"
|
39
|
-
end
|
40
|
-
|
41
|
-
def output_doc_types
|
42
|
-
field_doc_types @field, true
|
43
|
-
end
|
44
|
-
|
45
|
-
def doc_description
|
46
|
-
@field.docs_leading_comments
|
47
|
-
end
|
48
|
-
|
49
|
-
def default_value
|
50
|
-
single = default_singular_value
|
51
|
-
return "[#{single}]" if @field.repeated? && !@field.map?
|
52
|
-
single
|
53
|
-
end
|
54
|
-
|
55
|
-
def as_kwarg value: nil
|
56
|
-
"#{name}: #{value || name}"
|
57
|
-
end
|
58
|
-
|
59
|
-
# TODO: remove, only used in tests
|
60
|
-
def type_name
|
61
|
-
@field.type_name
|
62
|
-
end
|
63
|
-
|
64
|
-
def type_name_full
|
65
|
-
return nil if type_name.blank?
|
66
|
-
ruby_namespace @api, type_name
|
67
|
-
end
|
68
|
-
|
69
|
-
def message?
|
70
|
-
@field.message?
|
71
|
-
end
|
72
|
-
|
73
|
-
def enum?
|
74
|
-
@field.enum?
|
75
|
-
end
|
76
|
-
|
77
|
-
def repeated?
|
78
|
-
@field.repeated?
|
79
|
-
end
|
80
|
-
|
81
|
-
def map?
|
82
|
-
@field.map?
|
83
|
-
end
|
84
|
-
|
85
|
-
protected
|
86
|
-
|
87
|
-
def field_doc_types field, output
|
88
|
-
return field_map_type field.message, output if field.map?
|
89
|
-
base_type =
|
90
|
-
if field.message?
|
91
|
-
type = message_ruby_type field.message
|
92
|
-
output ? type : "#{type} | Hash"
|
93
|
-
elsif field.enum?
|
94
|
-
# TODO: handle when arg message is nil and enum is the type
|
95
|
-
message_ruby_type field.enum
|
96
|
-
else
|
97
|
-
case field.type
|
98
|
-
when 1, 2 then "Float"
|
99
|
-
when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "Integer"
|
100
|
-
when 9, 12 then "String"
|
101
|
-
when 8 then "Boolean"
|
102
|
-
else
|
103
|
-
"Object"
|
104
|
-
end
|
105
|
-
end
|
106
|
-
field.repeated? ? "Array<#{base_type}>" : base_type
|
107
|
-
end
|
108
|
-
|
109
|
-
def field_map_type entry_message, output
|
110
|
-
key_field = value_field = nil
|
111
|
-
entry_message.fields.each do |field|
|
112
|
-
key_field = field if field.name == "key"
|
113
|
-
value_field = field if field.name == "value"
|
114
|
-
end
|
115
|
-
class_name = output ? "Google::Protobuf::Map" : "Hash"
|
116
|
-
if key_field && value_field
|
117
|
-
key_type = field_doc_types key_field, output
|
118
|
-
value_type = field_doc_types value_field, output
|
119
|
-
"#{class_name}{#{key_type} => #{value_type}}"
|
120
|
-
else
|
121
|
-
class_name
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
def default_singular_value
|
126
|
-
if @field.message?
|
127
|
-
"{}"
|
128
|
-
elsif @field.enum?
|
129
|
-
# TODO: select the first non-0 enum value
|
130
|
-
":#{@field.enum.values.first.name}"
|
131
|
-
else
|
132
|
-
case @field.type
|
133
|
-
when 1, 2 then "3.5"
|
134
|
-
when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "42"
|
135
|
-
when 9, 12 then "\"hello world\""
|
136
|
-
when 8 then "true"
|
137
|
-
else
|
138
|
-
"Object"
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
def message_ruby_type message
|
144
|
-
ruby_namespace @api, message.address.join(".")
|
145
|
-
end
|
146
|
-
end
|