gapic-generator 0.1.3 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ceba0ece82d90e96c30c312431c323b819876875dc8a4b9617bf91a96fb2bcae
4
- data.tar.gz: '0499a196f065e571e43d0224bd0d1ff97e0093f3913cb1e7a6ed538629c34f98'
3
+ metadata.gz: ac1010a66ffc02b0775927f2d4407dbb28ad35ac6be10dafe5f59953b79afd34
4
+ data.tar.gz: f30721b9e721bd6ae5ba2d17cbc0158dcd5983ea53d7b53128b029dc37245886
5
5
  SHA512:
6
- metadata.gz: 15df407d48360df1fb913e60d8008a4055eddb3da2d1a5f942d5f56199b8b99003845e510d79b7eb69812e99a66306b05cb36374c0fa15f93034241bbc352196
7
- data.tar.gz: 37ae32e33d1cee983c188ebefa5a5841687ec8d518d73e85a7df25e2ee10ef838adc670a50699c5bbf3e21430940fe68a88ae178f03e95ced681f79c5eee0d98
6
+ metadata.gz: d44bfe9a92b92b4417fdb59c8cf3fcc727d43fb83a66502e10c6689bf95d5934038d7c7928a6df4152a1e2f410699dc06708cd841f9538fa29a3a609388c9c9e
7
+ data.tar.gz: 5c21836f4a939dd7d9b5bf6ac6ace693aa122c9d81eb3df3c44a1d55df29c9d2a74cc4b5823ba9f71809549ec108b97bbdc61f0c6675480233abd208498c31c0
@@ -1,5 +1,10 @@
1
1
  # Release History for gapic-generator
2
2
 
3
+ ### 0.1.4 / 2020-03-12
4
+
5
+ * Fixed over-escaping of curly braces in preformatted blocks in the yardocs.
6
+ * Fixed typo in authentication document.
7
+
3
8
  ### 0.1.3 / 2020-03-11
4
9
 
5
10
  * Generated numeric constants are formatted with underscores if necessary.
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 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 "bigdecimal"
18
+
19
+ module Gapic
20
+ ##
21
+ # Various string formatting utils
22
+ #
23
+ module FormattingUtils
24
+ @brace_detector = /\A([^`]*(`[^`]*`[^`]*)*[^`\\])?\{([\w,]+)\}(.*)\z/m
25
+ @list_element_detector = /\A\s*(\*|\+|-|[0-9a-zA-Z]+\.)\s/
26
+
27
+ class << self
28
+ ##
29
+ # Given an enumerable of lines, escape braces that look like yardoc type
30
+ # links. Tries to be smart about handling only braces that would be
31
+ # interpreted by yard (i.e. those that are not part of preformatted text
32
+ # blocks).
33
+ #
34
+ # @param lines [Enumerable<String>]
35
+ # @return [Enumerable<String>]
36
+ #
37
+ def escape_braces lines
38
+ # This looks for braces that:
39
+ # * Are opened and closed on the same line
40
+ # * Are not nested
41
+ # * Are not located between backticks
42
+ # * Are not in a preformatted block
43
+ #
44
+ # To detect preformatted blocks, this tracks the "expected" base indent
45
+ # according to Markdown. Specifically, this is the effective indent of
46
+ # previous block, which is normally 0 except if we're in a list item.
47
+ # Then, if a block is indented at least 4 spaces past that expected
48
+ # indent (and as long as it remains so), those lines are considered
49
+ # preformatted.
50
+ in_block = nil
51
+ base_indent = 0
52
+ lines.map do |line|
53
+ indent = line_indent line
54
+ if indent.nil?
55
+ in_block = nil
56
+ else
57
+ in_block, base_indent = update_indent_state in_block, base_indent, line, indent
58
+ line = escape_line_braces line if in_block == false
59
+ end
60
+ line
61
+ end
62
+ end
63
+
64
+ ##
65
+ # Given a number, format it in such a way that Rubocop will be happy.
66
+ # Specifically, we add underscores if the magnitude is at least 10_000.
67
+ # This works for both integers and floats.
68
+ #
69
+ # @param value [Numeric]
70
+ # @return [String]
71
+ #
72
+ def format_number value
73
+ return value.to_s if value.abs < 10_000
74
+ str = value.is_a?(Integer) ? value.to_s : BigDecimal(value.to_f.to_s).to_s("F")
75
+ re = /^(-?\d+)(\d\d\d)([_\.][_\.\d]+)?$/
76
+ while (m = re.match str)
77
+ str = "#{m[1]}_#{m[2]}#{m[3]}"
78
+ end
79
+ str
80
+ end
81
+
82
+ private
83
+
84
+ def update_indent_state in_block, base_indent, line, indent
85
+ if in_block != true && @list_element_detector =~ line
86
+ in_block = false
87
+ indent = base_indent if indent > base_indent
88
+ base_indent = (indent + 7) / 4 * 4
89
+ else
90
+ in_block = indent >= base_indent + 4 unless in_block == false
91
+ base_indent = indent / 4 * 4 if in_block == false && indent < base_indent
92
+ end
93
+ [in_block, base_indent]
94
+ end
95
+
96
+ def line_indent line
97
+ m = /^( *)\S/.match line
98
+ m.nil? ? nil : m[1].length
99
+ end
100
+
101
+ def escape_line_braces line
102
+ while (m = @brace_detector.match line)
103
+ line = "#{m[1]}\\\\{#{m[3]}}#{m[4]}"
104
+ end
105
+ line
106
+ end
107
+ end
108
+ end
109
+ end
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Gapic
18
18
  module Generator
19
- VERSION = "0.1.3"
19
+ VERSION = "0.1.4"
20
20
  end
21
21
  end
@@ -14,6 +14,8 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
+ require "gapic/formatting_utils"
18
+
17
19
  module Gapic
18
20
  module Schema
19
21
  # Base class for all generic proto types including: enums, messages,
@@ -98,13 +100,10 @@ module Gapic
98
100
  return nil if @docs.nil?
99
101
  return nil if @docs.leading_comments.empty?
100
102
 
101
- @docs
102
- .leading_comments
103
- .each_line
104
- .map { |line| line.start_with?(" ") ? line[1..-1] : line }
105
- .join
106
- .split("{").join("\\\\\\{") # The only safe way to replace with \ characters...
107
- .split("}").join("\\}")
103
+ lines = @docs.leading_comments.each_line.to_a
104
+ lines.map! { |line| line.start_with?(" ") ? line[1..-1] : line }
105
+ lines = FormattingUtils.escape_braces lines
106
+ lines.join
108
107
  end
109
108
 
110
109
  # @!method path
@@ -16,3 +16,5 @@ pkg/*
16
16
  # Ignore files commonly present in certain dev environments
17
17
  .vagrant
18
18
  .DS_STORE
19
+ .idea
20
+ *.iml
@@ -14,8 +14,8 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- require "bigdecimal"
18
17
  require "active_support/inflector"
18
+ require "gapic/formatting_utils"
19
19
 
20
20
  module DefaultHelper
21
21
  def prepend_with input, prepend
@@ -41,13 +41,7 @@ module DefaultHelper
41
41
  end
42
42
 
43
43
  def format_number value
44
- return value.to_s if value.abs < 10_000
45
- str = value.is_a?(Integer) ? value.to_s : BigDecimal(value.to_f.to_s).to_s("F")
46
- re = /^(-?\d+)(\d\d\d)([_\.][_\.\d]+)?$/
47
- while (m = re.match str)
48
- str = "#{m[1]}_#{m[2]}#{m[3]}"
49
- end
50
- str
44
+ Gapic::FormattingUtils.format_number value
51
45
  end
52
46
 
53
47
  def assert_locals *locals
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.3
4
+ version: 0.1.4
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-11 00:00:00.000000000 Z
13
+ date: 2020-03-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -204,6 +204,7 @@ files:
204
204
  - gem_templates/test_helper.erb
205
205
  - gem_templates/version.erb
206
206
  - lib/gapic/file_formatter.rb
207
+ - lib/gapic/formatting_utils.rb
207
208
  - lib/gapic/gem_builder.rb
208
209
  - lib/gapic/generator.rb
209
210
  - lib/gapic/generator/version.rb