parlour 0.7.0 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e525051c1791bc175f8cbd109497f058e8708a60820683390e76c0f055ffca32
4
- data.tar.gz: 68ff90fd52d6c2b252460b62402556ddee28ac246e7d16f16681e7dcd5e07337
3
+ metadata.gz: 12b7eca4df3f9c2609ae2f8cabbf07b73a26c66f596ce060aea6f9faec5a494d
4
+ data.tar.gz: 6ca3cf5d7d22d15fd3270adf78044b4aa8286808074c0e0c9b43b68ef4be0bdb
5
5
  SHA512:
6
- metadata.gz: f677a46f79678ae034348c85e52fbe80ee231eadb9ab08544fef93970f7a3615d0edc79aabeaa6b0be47072394054896d8f09e4b93a11c69e8caa13f6e7a25d2
7
- data.tar.gz: fa81cba64780ff57a8b147b6aeb5b6501f3fbc6bfbf877480f017ca4a0f8cd989992067416f5afc326293d2f83a4e1652957576a0425298d60a26ecea934660d
6
+ metadata.gz: d90cfc6922e9b4ccea622d31d4cdbfe422e6cd8292cdae12a1b2e70ee51bfd1d1779ae66b1b213c14806e3239306f92e149e2d280387127c66147f570d8e198d
7
+ data.tar.gz: a9f75203ac84c20e91dd24702c904b79741f1156b4975da43d3078423e316ecb534ae56261a4c949454175ee49ba4d5f44236dcadadcebb6368f00a30d52d937
@@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file.
3
3
 
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
5
5
 
6
+ ## [0.8.0] - 2019-09-14
7
+ ### Added
8
+ - Methods can now have type parameters specified.
9
+
10
+ ### Changed
11
+ - **Breaking change: The `implementation` qualifier is no longer genereated.**
12
+ Following Sorbet merging `implementation` and `override` into just `override`,
13
+ the `Method#implementation` and `Method#override` flags will now both generate
14
+ the `override` qualifier.
15
+ - The Parlour codebase now uses `override` for both abstract implementation and
16
+ superclass overriding to conform to this change.
17
+
6
18
  ## [0.7.0] - 2019-09-11
7
19
  ### Added
8
20
  - The strictness level can now be specified when generating an RBI, using an
@@ -35,7 +35,7 @@ module Parlour
35
35
  end
36
36
 
37
37
  sig do
38
- implementation.params(
38
+ override.params(
39
39
  indent_level: Integer,
40
40
  options: Options
41
41
  ).returns(T::Array[String])
@@ -50,7 +50,7 @@ module Parlour
50
50
  end
51
51
 
52
52
  sig do
53
- implementation.params(
53
+ override.params(
54
54
  others: T::Array[RbiGenerator::RbiObject]
55
55
  ).returns(T::Boolean)
56
56
  end
@@ -65,7 +65,7 @@ module Parlour
65
65
  end
66
66
 
67
67
  sig do
68
- implementation.params(
68
+ override.params(
69
69
  others: T::Array[RbiGenerator::RbiObject]
70
70
  ).void
71
71
  end
@@ -36,7 +36,7 @@ module Parlour
36
36
  end
37
37
 
38
38
  sig do
39
- implementation.params(
39
+ override.params(
40
40
  indent_level: Integer,
41
41
  options: Options
42
42
  ).returns(T::Array[String])
@@ -51,7 +51,7 @@ module Parlour
51
51
  end
52
52
 
53
53
  sig do
54
- implementation.params(
54
+ override.params(
55
55
  others: T::Array[RbiGenerator::RbiObject]
56
56
  ).returns(T::Boolean)
57
57
  end
@@ -66,7 +66,7 @@ module Parlour
66
66
  end
67
67
 
68
68
  sig do
69
- implementation.params(
69
+ override.params(
70
70
  others: T::Array[RbiGenerator::RbiObject]
71
71
  ).void
72
72
  end
@@ -82,7 +82,7 @@ module Parlour
82
82
  # We don't need to change anything! We only merge identical constants
83
83
  end
84
84
 
85
- sig { implementation.returns(String) }
85
+ sig { override.returns(String) }
86
86
  # Returns a human-readable brief string description of this code.
87
87
  #
88
88
  # @return [String]
@@ -29,7 +29,7 @@ module Parlour
29
29
  end
30
30
 
31
31
  sig do
32
- implementation.params(
32
+ override.params(
33
33
  indent_level: Integer,
34
34
  options: Options
35
35
  ).returns(T::Array[String])
@@ -44,7 +44,7 @@ module Parlour
44
44
  end
45
45
 
46
46
  sig do
47
- implementation.params(
47
+ override.params(
48
48
  others: T::Array[RbiGenerator::RbiObject]
49
49
  ).returns(T::Boolean)
50
50
  end
@@ -59,7 +59,7 @@ module Parlour
59
59
  end
60
60
 
61
61
  sig do
62
- implementation.params(
62
+ override.params(
63
63
  others: T::Array[RbiGenerator::RbiObject]
64
64
  ).void
65
65
  end
@@ -75,7 +75,7 @@ module Parlour
75
75
  # We don't need to change anything! We only merge identical extends
76
76
  end
77
77
 
78
- sig { implementation.returns(String) }
78
+ sig { override.returns(String) }
79
79
  # Returns a human-readable brief string description of this code.
80
80
  #
81
81
  # @return [String]
@@ -29,7 +29,7 @@ module Parlour
29
29
  end
30
30
 
31
31
  sig do
32
- implementation.params(
32
+ override.params(
33
33
  indent_level: Integer,
34
34
  options: Options
35
35
  ).returns(T::Array[String])
@@ -44,7 +44,7 @@ module Parlour
44
44
  end
45
45
 
46
46
  sig do
47
- implementation.params(
47
+ override.params(
48
48
  others: T::Array[RbiGenerator::RbiObject]
49
49
  ).returns(T::Boolean)
50
50
  end
@@ -59,7 +59,7 @@ module Parlour
59
59
  end
60
60
 
61
61
  sig do
62
- implementation.params(
62
+ override.params(
63
63
  others: T::Array[RbiGenerator::RbiObject]
64
64
  ).void
65
65
  end
@@ -75,7 +75,7 @@ module Parlour
75
75
  # We don't need to change anything! We only merge identical includes
76
76
  end
77
77
 
78
- sig { implementation.returns(String) }
78
+ sig { override.returns(String) }
79
79
  # Returns a human-readable brief string description of this code.
80
80
  #
81
81
  # @return [String]
@@ -16,6 +16,7 @@ module Parlour
16
16
  override: T::Boolean,
17
17
  overridable: T::Boolean,
18
18
  class_method: T::Boolean,
19
+ type_parameters: T.nilable(T::Array[Symbol]),
19
20
  block: T.nilable(T.proc.params(x: Method).void)
20
21
  ).void
21
22
  end
@@ -30,16 +31,17 @@ module Parlour
30
31
  # @param return_type [String, nil] A Sorbet string of what this method returns, such as
31
32
  # +"String"+ or +"T.untyped"+. Passing nil denotes a void return.
32
33
  # @param abstract [Boolean] Whether this method is abstract.
33
- # @param implementation [Boolean] Whether this method is an implementation of a
34
- # parent abstract method.
34
+ # @param implementation [Boolean] DEPRECATED: Whether this method is an
35
+ # implementation of a parent abstract method.
35
36
  # @param override [Boolean] Whether this method is overriding a parent overridable
36
- # method.
37
+ # method, or implementing a parent abstract method.
37
38
  # @param overridable [Boolean] Whether this method is overridable by subclasses.
38
39
  # @param class_method [Boolean] Whether this method is a class method; that is, it
39
40
  # it is defined using +self.+.
41
+ # @param class_method [Array<Symbol>, nil] This method's type parameters.
40
42
  # @param block A block which the new instance yields itself to.
41
43
  # @return [void]
42
- def initialize(generator, name, parameters, return_type = nil, abstract: false, implementation: false, override: false, overridable: false, class_method: false, &block)
44
+ def initialize(generator, name, parameters, return_type = nil, abstract: false, implementation: false, override: false, overridable: false, class_method: false, type_parameters: nil, &block)
43
45
  super(generator, name)
44
46
  @parameters = parameters
45
47
  @return_type = return_type
@@ -48,6 +50,7 @@ module Parlour
48
50
  @override = override
49
51
  @overridable = overridable
50
52
  @class_method = class_method
53
+ @type_parameters = type_parameters || []
51
54
  yield_self(&block) if block
52
55
  end
53
56
 
@@ -59,14 +62,15 @@ module Parlour
59
62
  # @return [Boolean]
60
63
  def ==(other)
61
64
  Method === other &&
62
- name == other.name &&
63
- parameters == other.parameters &&
64
- return_type == other.return_type &&
65
- abstract == other.abstract &&
66
- implementation == other.implementation &&
67
- override == other.override &&
68
- overridable == other.overridable &&
69
- class_method == other.class_method
65
+ name == other.name &&
66
+ parameters == other.parameters &&
67
+ return_type == other.return_type &&
68
+ abstract == other.abstract &&
69
+ implementation == other.implementation &&
70
+ override == other.override &&
71
+ overridable == other.overridable &&
72
+ class_method == other.class_method &&
73
+ type_parameters == other.type_parameters
70
74
  end
71
75
 
72
76
  sig { returns(T::Array[Parameter]) }
@@ -87,11 +91,15 @@ module Parlour
87
91
 
88
92
  sig { returns(T::Boolean) }
89
93
  # Whether this method is an implementation of a parent abstract method.
94
+ # @deprecated Removed from Sorbet, as {#override} is used for both
95
+ # abstract class implementations and superclass overrides. In Parlour,
96
+ # this will now generate +override+.
90
97
  # @return [Boolean]
91
98
  attr_reader :implementation
92
99
 
93
100
  sig { returns(T::Boolean) }
94
- # Whether this method is overriding a parent overridable method.
101
+ # Whether this method is overriding a parent overridable method, or
102
+ # implementing a parent abstract method.
95
103
  # @return [Boolean]
96
104
  attr_reader :override
97
105
 
@@ -106,8 +114,13 @@ module Parlour
106
114
  # @return [Boolean]
107
115
  attr_reader :class_method
108
116
 
117
+ sig { returns(T::Array[Symbol]) }
118
+ # This method's type parameters.
119
+ # @return [Array<Symbol>]
120
+ attr_reader :type_parameters
121
+
109
122
  sig do
110
- implementation.params(
123
+ override.params(
111
124
  indent_level: Integer,
112
125
  options: Options
113
126
  ).returns(T::Array[String])
@@ -142,7 +155,7 @@ module Parlour
142
155
 
143
156
  : [options.indented(
144
157
  indent_level,
145
- "sig { #{qualifiers}#{
158
+ "sig { #{parameters.empty? ? qualifiers[0...-1] : qualifiers}#{
146
159
  parameters.empty? ? '' : "params(#{sig_params.join(', ')})"
147
160
  }#{
148
161
  qualifiers.empty? && parameters.empty? ? '' : '.'
@@ -154,7 +167,7 @@ module Parlour
154
167
  end
155
168
 
156
169
  sig do
157
- implementation.params(
170
+ override.params(
158
171
  others: T::Array[RbiGenerator::RbiObject]
159
172
  ).returns(T::Boolean)
160
173
  end
@@ -169,7 +182,7 @@ module Parlour
169
182
  end
170
183
 
171
184
  sig do
172
- implementation.params(
185
+ override.params(
173
186
  others: T::Array[RbiGenerator::RbiObject]
174
187
  ).void
175
188
  end
@@ -185,7 +198,7 @@ module Parlour
185
198
  # We don't need to change anything! We only merge identical methods
186
199
  end
187
200
 
188
- sig { implementation.returns(String) }
201
+ sig { override.returns(String) }
189
202
  # Returns a human-readable brief string description of this method.
190
203
  #
191
204
  # @return [String]
@@ -228,9 +241,11 @@ module Parlour
228
241
  def qualifiers
229
242
  result = ''
230
243
  result += 'abstract.' if abstract
231
- result += 'implementation.' if implementation
232
- result += 'override.' if override
244
+ result += 'override.' if override || implementation
233
245
  result += 'overridable.' if overridable
246
+ result += "type_parameters(#{
247
+ type_parameters.map { |t| ":#{t}" }.join(', ')
248
+ })." if type_parameters.any?
234
249
  result
235
250
  end
236
251
  end
@@ -7,7 +7,7 @@ module Parlour
7
7
  extend T::Sig
8
8
 
9
9
  sig do
10
- implementation.overridable.params(
10
+ override.overridable.params(
11
11
  indent_level: Integer,
12
12
  options: Options
13
13
  ).returns(T::Array[String])
@@ -199,6 +199,7 @@ module Parlour
199
199
  override: T::Boolean,
200
200
  overridable: T::Boolean,
201
201
  class_method: T::Boolean,
202
+ type_parameters: T.nilable(T::Array[Symbol]),
202
203
  block: T.nilable(T.proc.params(x: Method).void)
203
204
  ).returns(Method)
204
205
  end
@@ -212,16 +213,17 @@ module Parlour
212
213
  # +"String"+ or +"T.untyped"+. Passing nil denotes a void return.
213
214
  # @param returns [String, nil] Same as return_type.
214
215
  # @param abstract [Boolean] Whether this method is abstract.
215
- # @param implementation [Boolean] Whether this method is an implementation of a
216
- # parent abstract method.
216
+ # @param implementation [Boolean] DEPRECATED: Whether this method is an
217
+ # implementation of a parent abstract method.
217
218
  # @param override [Boolean] Whether this method is overriding a parent overridable
218
- # method.
219
+ # method, or implementing a parent abstract method.
219
220
  # @param overridable [Boolean] Whether this method is overridable by subclasses.
220
221
  # @param class_method [Boolean] Whether this method is a class method; that is, it
221
222
  # it is defined using +self.+.
223
+ # @param class_method [Array<Symbol>, nil] This method's type parameters.
222
224
  # @param block A block which the new instance yields itself to.
223
225
  # @return [Method]
224
- def create_method(name, parameters: nil, return_type: nil, returns: nil, abstract: false, implementation: false, override: false, overridable: false, class_method: false, &block)
226
+ def create_method(name, parameters: nil, return_type: nil, returns: nil, abstract: false, implementation: false, override: false, overridable: false, class_method: false, type_parameters: nil, &block)
225
227
  parameters = parameters || []
226
228
  raise 'cannot specify both return_type: and returns:' if return_type && returns
227
229
  return_type ||= returns
@@ -235,6 +237,7 @@ module Parlour
235
237
  override: override,
236
238
  overridable: overridable,
237
239
  class_method: class_method,
240
+ type_parameters: type_parameters,
238
241
  &block
239
242
  )
240
243
  move_next_comments(new_method)
@@ -476,7 +479,7 @@ module Parlour
476
479
  end
477
480
 
478
481
  sig do
479
- implementation.overridable.params(
482
+ override.overridable.params(
480
483
  others: T::Array[RbiGenerator::RbiObject]
481
484
  ).returns(T::Boolean)
482
485
  end
@@ -493,7 +496,7 @@ module Parlour
493
496
  end
494
497
 
495
498
  sig do
496
- implementation.overridable.params(
499
+ override.overridable.params(
497
500
  others: T::Array[RbiGenerator::RbiObject]
498
501
  ).void
499
502
  end
@@ -511,7 +514,7 @@ module Parlour
511
514
  end
512
515
  end
513
516
 
514
- sig { implementation.overridable.returns(String) }
517
+ sig { override.overridable.returns(String) }
515
518
  # Returns a human-readable brief string description of this namespace.
516
519
  #
517
520
  # @return [String]
@@ -1,5 +1,5 @@
1
1
  # typed: strong
2
2
  module Parlour
3
3
  # The library version.
4
- VERSION = '0.7.0'
4
+ VERSION = '0.8.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parlour
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Christiansen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-11 00:00:00.000000000 Z
11
+ date: 2019-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-runtime