gapic-generator 0.1.7 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +48 -0
  3. data/lib/gapic/formatting_utils.rb +9 -4
  4. data/lib/gapic/generator/version.rb +1 -1
  5. data/lib/gapic/generators/base_generator.rb +0 -8
  6. data/lib/gapic/generators/default_generator.rb +13 -14
  7. data/lib/gapic/helpers/filepath_helper.rb +45 -0
  8. data/lib/gapic/helpers/namespace_helper.rb +51 -0
  9. data/lib/gapic/presenters.rb +44 -0
  10. data/{templates/default/helpers → lib/gapic}/presenters/enum_presenter.rb +19 -14
  11. data/{templates/default/helpers → lib/gapic}/presenters/enum_value_presenter.rb +19 -12
  12. data/lib/gapic/presenters/field_presenter.rb +154 -0
  13. data/lib/gapic/presenters/file_presenter.rb +59 -0
  14. data/lib/gapic/presenters/gem_presenter.rb +176 -0
  15. data/lib/gapic/presenters/message_presenter.rb +73 -0
  16. data/lib/gapic/presenters/method_presenter.rb +307 -0
  17. data/lib/gapic/presenters/package_presenter.rb +80 -0
  18. data/lib/gapic/presenters/resource_presenter.rb +93 -0
  19. data/lib/gapic/presenters/sample_presenter.rb +84 -0
  20. data/lib/gapic/presenters/service_presenter.rb +306 -0
  21. data/lib/gapic/resource_lookup.rb +23 -38
  22. data/lib/gapic/schema/api.rb +62 -0
  23. data/lib/gapic/schema/loader.rb +9 -2
  24. data/lib/gapic/schema/wrappers.rb +118 -24
  25. data/templates/default/gem/entrypoint.erb +8 -0
  26. data/templates/default/gem/gemspec.erb +1 -1
  27. data/templates/default/gem/readme.erb +17 -3
  28. data/templates/default/gem/rubocop.erb +13 -41
  29. data/templates/default/helpers/filepath_helper.rb +2 -21
  30. data/templates/default/helpers/namespace_helper.rb +2 -27
  31. data/templates/default/layouts/_ruby.erb +1 -3
  32. data/templates/default/lib/_package.erb +17 -0
  33. data/templates/default/lib/_service.erb +32 -0
  34. data/templates/default/package.erb +5 -5
  35. data/templates/default/service.erb +5 -7
  36. data/templates/default/service/_helpers.erb +3 -0
  37. data/templates/default/service/client/_client.erb +7 -17
  38. data/templates/default/service/client/_operations.erb +0 -4
  39. data/templates/default/service/client/_resource.erb +1 -1
  40. data/templates/default/service/client/method/docs/_request_normal.erb +10 -5
  41. data/templates/default/service/client/method/docs/_request_streaming.erb +1 -1
  42. metadata +20 -15
  43. data/templates/default/helpers/presenter_helper.rb +0 -24
  44. data/templates/default/helpers/presenters/field_presenter.rb +0 -146
  45. data/templates/default/helpers/presenters/file_presenter.rb +0 -53
  46. data/templates/default/helpers/presenters/gem_presenter.rb +0 -140
  47. data/templates/default/helpers/presenters/message_presenter.rb +0 -66
  48. data/templates/default/helpers/presenters/method_presenter.rb +0 -293
  49. data/templates/default/helpers/presenters/package_presenter.rb +0 -65
  50. data/templates/default/helpers/presenters/resource_presenter.rb +0 -92
  51. data/templates/default/helpers/presenters/sample_presenter.rb +0 -74
  52. data/templates/default/helpers/presenters/service_presenter.rb +0 -276
  53. data/templates/default/service/client/_helpers.erb +0 -9
@@ -9,53 +9,25 @@ AllCops:
9
9
  - "test/**/*"
10
10
 
11
11
  Metrics/AbcSize:
12
- Exclude:
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
- Exclude:
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
- Exclude:
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
- Exclude:
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
- Exclude:
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
21
+ Metrics/ModuleLength:
22
+ Enabled: false
46
23
  Metrics/PerceivedComplexity:
24
+ Enabled: false
25
+ Naming/FileName:
47
26
  Exclude:
48
- <%- gem.packages.each do |package| -%>
49
- <%- package.services.each do |service| -%>
50
- - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
51
- <%- end -%>
52
- <%- end -%>
27
+ - "lib/<%= gem.name %>.rb"
53
28
  Style/CaseEquality:
54
- Exclude:
55
- <%- gem.packages.each do |package| -%>
56
- <%- package.services.each do |service| -%>
57
- - "lib/<%= service.client_file_path.sub "client.rb", "*.rb" %>"
58
- <%- end -%>
59
- <%- end -%>
29
+ Enabled: false
30
+ Style/IfUnlessModifier:
31
+ Enabled: false
60
32
  Style/ModuleFunction:
61
33
  Enabled: false
@@ -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 "active_support/inflector"
17
+ require "gapic/helpers/filepath_helper"
18
18
 
19
- module FilepathHelper
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 "active_support/inflector"
17
+ require "gapic/helpers/namespace_helper"
18
18
 
19
- module NamespaceHelper
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: "shared/header" -%>
3
-
4
- <% package.services.each do |service| %>
5
- require "<%= service.service_require %>"
6
- <% end %>
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: "shared/header" -%>
3
-
4
- require "<%= service.client_require %>"
5
- <%- if service.lro? -%>
6
- require "<%= service.operations_require %>"
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
+ %>
@@ -0,0 +1,3 @@
1
+ <%- assert_locals service -%>
2
+ helper_path = ::File.join __dir__, "<%= service.service_directory_name%>", "helpers.rb"
3
+ require "<%= service.helpers_require %>" if ::File.file? helper_path
@@ -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
- # Service that implements <%= service.name %> API.
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 resource -%>
2
2
  <%- if resource.patterns.count == 1 -%>
3
3
  <%= render partial: "service/client/resource/single", locals: { resource: resource } %>
4
- <%- else -%>
4
+ <%- elsif !resource.patterns.empty? -%>
5
5
  <%= render partial: "service/client/resource/multi", locals: { resource: resource } %>
6
6
  <%- end -%>
@@ -1,15 +1,21 @@
1
1
  <%- assert_locals method -%>
2
2
  # @overload <%= method.name %>(request, options = nil)
3
- # @param request [<%= method.request_type %> | Hash]
4
- <%- if method.doc_description -%>
5
- <%= indent method.doc_description, "# " %>
6
- <%- end -%>
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 %> | Hash>]
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.1.7
4
+ version: 0.3.1
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-03-18 00:00:00.000000000 Z
13
+ date: 2020-04-11 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