parlour 5.0.0.beta.1 → 5.0.0.beta.2
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 +11 -0
- data/lib/parlour/rbi_generator/namespace.rb +1 -1
- data/lib/parlour/rbs_generator/attribute.rb +1 -1
- data/lib/parlour/rbs_generator/method_signature.rb +1 -1
- data/lib/parlour/types.rb +95 -1
- data/lib/parlour/version.rb +1 -1
- data/rbi/parlour.rbi +58 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67507b0ea29af60c22d4e326220ea362441969c56c06d357767660356ff39b6c
|
4
|
+
data.tar.gz: 1f2cc037d17d4a3bfabc86b34b937d9a7fc9986af0302eb950fe310146944739
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 446a15c1a26e799b3d407ef0e1e2c02b441a559da38a327cda3d2110ea6013825beb6870c14a42531425bb6b83a8595d1298cfe70d9bbd87cc27ebff9e397985
|
7
|
+
data.tar.gz: 8b4df35779cd3b6c1129811a271788a303bf1c57fe271bebea135a48c06dafbb1ecead10a9e3da3ae36b4d17953848767a0a546b2a7de00fc24b3ff02ec71e04
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,17 @@ 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
|
+
## [5.0.0.beta.2] - 2020-09-14
|
7
|
+
### Added
|
8
|
+
- Added `Types::Type#describe` for simple text descriptions of types
|
9
|
+
- Added `Types::Self` for RBI's `T.self_type` or RBS' `self`
|
10
|
+
|
11
|
+
### Fixed
|
12
|
+
- Fixed `RbiGenerator::Namespace#create_method`'s `returns:` kwarg only
|
13
|
+
accepting String types
|
14
|
+
- Fixed lack of spacing between argument lists and blocks in RBS
|
15
|
+
- Fixed RBS attributes not having comments
|
16
|
+
|
6
17
|
## [5.0.0.beta.1] - 2020-09-13
|
7
18
|
### Added
|
8
19
|
- Added RBS generation support! This includes:
|
@@ -272,7 +272,7 @@ module Parlour
|
|
272
272
|
name: String,
|
273
273
|
parameters: T.nilable(T::Array[Parameter]),
|
274
274
|
return_type: T.nilable(Types::TypeLike),
|
275
|
-
returns: T.nilable(
|
275
|
+
returns: T.nilable(Types::TypeLike),
|
276
276
|
abstract: T::Boolean,
|
277
277
|
implementation: T::Boolean,
|
278
278
|
override: T::Boolean,
|
@@ -60,7 +60,7 @@ module Parlour
|
|
60
60
|
# @param options [Options] The formatting options to use.
|
61
61
|
# @return [Array<String>] The RBS lines, formatted as specified.
|
62
62
|
def generate_rbs(indent_level, options)
|
63
|
-
[options.indented(
|
63
|
+
generate_comments(indent_level, options) + [options.indented(
|
64
64
|
indent_level,
|
65
65
|
"attr_#{kind} #{name}: #{String === @type ? @type : @type.generate_rbs}"
|
66
66
|
)]
|
@@ -94,7 +94,7 @@ module Parlour
|
|
94
94
|
}" + T.must(generated_params[0])
|
95
95
|
|
96
96
|
generated_params[-1] = T.must(generated_params[-1]) + "#{
|
97
|
-
(block_type && block_type != 'untyped') ? block_type.first : '' # TODO: doesn't support multi-line block types
|
97
|
+
(block_type && block_type.first != 'untyped') ? " #{block_type.first}" : '' # TODO: doesn't support multi-line block types
|
98
98
|
} -> #{rbs_return_type || 'void'}"
|
99
99
|
|
100
100
|
generated_params
|
data/lib/parlour/types.rb
CHANGED
@@ -32,6 +32,13 @@ module Parlour
|
|
32
32
|
def to_type(type_like)
|
33
33
|
Type.to_type(type_like)
|
34
34
|
end
|
35
|
+
|
36
|
+
def hash
|
37
|
+
[self.class, *instance_variables.map { |x| instance_variable_get(x).hash }].hash
|
38
|
+
end
|
39
|
+
|
40
|
+
sig { abstract.returns(String) }
|
41
|
+
def describe; end
|
35
42
|
end
|
36
43
|
|
37
44
|
# A basic type as a raw string.
|
@@ -58,6 +65,11 @@ module Parlour
|
|
58
65
|
def generate_rbs
|
59
66
|
str
|
60
67
|
end
|
68
|
+
|
69
|
+
sig { override.returns(String) }
|
70
|
+
def describe
|
71
|
+
str
|
72
|
+
end
|
61
73
|
end
|
62
74
|
|
63
75
|
# A type which can be either the wrapped type, or nil.
|
@@ -84,6 +96,11 @@ module Parlour
|
|
84
96
|
def generate_rbs
|
85
97
|
"#{type.generate_rbs}?"
|
86
98
|
end
|
99
|
+
|
100
|
+
sig { override.returns(String) }
|
101
|
+
def describe
|
102
|
+
"Nilable<#{type.describe}>"
|
103
|
+
end
|
87
104
|
end
|
88
105
|
|
89
106
|
# A type which is (at least) one of the wrapped types.
|
@@ -110,6 +127,11 @@ module Parlour
|
|
110
127
|
def generate_rbs
|
111
128
|
"(#{types.map(&:generate_rbs).join(' | ')})"
|
112
129
|
end
|
130
|
+
|
131
|
+
sig { override.returns(String) }
|
132
|
+
def describe
|
133
|
+
"Union<#{types.map(&:describe).join(', ')}>"
|
134
|
+
end
|
113
135
|
end
|
114
136
|
|
115
137
|
# A type which matches all of the wrapped types.
|
@@ -136,6 +158,11 @@ module Parlour
|
|
136
158
|
def generate_rbs
|
137
159
|
"(#{types.map(&:generate_rbs).join(' & ')})"
|
138
160
|
end
|
161
|
+
|
162
|
+
sig { override.returns(String) }
|
163
|
+
def describe
|
164
|
+
"Intersection<#{types.map(&:describe).join(', ')}>"
|
165
|
+
end
|
139
166
|
end
|
140
167
|
|
141
168
|
# A fixed-length array of items, each with a known type.
|
@@ -162,6 +189,11 @@ module Parlour
|
|
162
189
|
def generate_rbs
|
163
190
|
"[#{types.map(&:generate_rbs).join(', ')}]"
|
164
191
|
end
|
192
|
+
|
193
|
+
sig { override.returns(String) }
|
194
|
+
def describe
|
195
|
+
"[#{types.map(&:describe).join(', ')}]"
|
196
|
+
end
|
165
197
|
end
|
166
198
|
|
167
199
|
class SingleElementCollection < Type
|
@@ -187,6 +219,11 @@ module Parlour
|
|
187
219
|
def generate_rbs
|
188
220
|
"#{collection_name}[#{element.generate_rbs}]"
|
189
221
|
end
|
222
|
+
|
223
|
+
sig { override.returns(String) }
|
224
|
+
def describe
|
225
|
+
"#{collection_name}<#{element.describe}>"
|
226
|
+
end
|
190
227
|
end
|
191
228
|
|
192
229
|
# An array with known element types.
|
@@ -282,6 +319,11 @@ module Parlour
|
|
282
319
|
def generate_rbs
|
283
320
|
"Hash[#{key.generate_rbs}, #{value.generate_rbs}]"
|
284
321
|
end
|
322
|
+
|
323
|
+
sig { override.returns(String) }
|
324
|
+
def describe
|
325
|
+
"Hash<#{key.describe}, #{value.describe}>"
|
326
|
+
end
|
285
327
|
end
|
286
328
|
|
287
329
|
# A record/shape; a hash with a fixed set of keys with given types.
|
@@ -310,6 +352,11 @@ module Parlour
|
|
310
352
|
def generate_rbs
|
311
353
|
"{ #{keys_to_types.map { |k, v| "#{k}: #{v.generate_rbs}" }.join(', ')} }"
|
312
354
|
end
|
355
|
+
|
356
|
+
sig { override.returns(String) }
|
357
|
+
def describe
|
358
|
+
"{ #{keys_to_types.map { |k, v| "#{k}: #{v.describe}" }.join(', ')} }"
|
359
|
+
end
|
313
360
|
end
|
314
361
|
|
315
362
|
# A type which represents the class of a type, rather than an instance.
|
@@ -338,9 +385,14 @@ module Parlour
|
|
338
385
|
def generate_rbs
|
339
386
|
"singleton(#{type.generate_rbs})"
|
340
387
|
end
|
388
|
+
|
389
|
+
sig { override.returns(String) }
|
390
|
+
def describe
|
391
|
+
"Class<#{type.describe}>"
|
392
|
+
end
|
341
393
|
end
|
342
394
|
|
343
|
-
#
|
395
|
+
# Type for a boolean.
|
344
396
|
class Boolean < Type
|
345
397
|
sig { params(other: Object).returns(T::Boolean) }
|
346
398
|
def ==(other)
|
@@ -356,8 +408,36 @@ module Parlour
|
|
356
408
|
def generate_rbs
|
357
409
|
"bool"
|
358
410
|
end
|
411
|
+
|
412
|
+
sig { override.returns(String) }
|
413
|
+
def describe
|
414
|
+
"bool"
|
415
|
+
end
|
359
416
|
end
|
360
417
|
|
418
|
+
# Type equivalent to the receiver.
|
419
|
+
class Self < Type
|
420
|
+
sig { params(other: Object).returns(T::Boolean) }
|
421
|
+
def ==(other)
|
422
|
+
Self === other
|
423
|
+
end
|
424
|
+
|
425
|
+
sig { override.returns(String) }
|
426
|
+
def generate_rbi
|
427
|
+
"T.self_type"
|
428
|
+
end
|
429
|
+
|
430
|
+
sig { override.returns(String) }
|
431
|
+
def generate_rbs
|
432
|
+
"self"
|
433
|
+
end
|
434
|
+
|
435
|
+
sig { override.returns(String) }
|
436
|
+
def describe
|
437
|
+
"self"
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
361
441
|
# The explicit lack of a type.
|
362
442
|
class Untyped < Type
|
363
443
|
sig { params(other: Object).returns(T::Boolean) }
|
@@ -374,6 +454,11 @@ module Parlour
|
|
374
454
|
def generate_rbs
|
375
455
|
"untyped"
|
376
456
|
end
|
457
|
+
|
458
|
+
sig { override.returns(String) }
|
459
|
+
def describe
|
460
|
+
"untyped"
|
461
|
+
end
|
377
462
|
end
|
378
463
|
|
379
464
|
# A type which can be called as a function.
|
@@ -439,6 +524,15 @@ module Parlour
|
|
439
524
|
end
|
440
525
|
"(#{rbs_params.map(&:to_rbs_param).join(', ')}) -> #{return_type&.generate_rbs || 'void'}"
|
441
526
|
end
|
527
|
+
|
528
|
+
sig { override.returns(String) }
|
529
|
+
def describe
|
530
|
+
# For simplicity, use RBS with pre-described parameter types
|
531
|
+
rbs_params = parameters.map do |param|
|
532
|
+
RbsGenerator::Parameter.new(param.name, type: param.type.describe, required: param.default.nil?)
|
533
|
+
end
|
534
|
+
"(#{rbs_params.map(&:to_rbs_param).join(', ')}) -> #{return_type&.describe || 'void'}"
|
535
|
+
end
|
442
536
|
end
|
443
537
|
end
|
444
538
|
end
|
data/lib/parlour/version.rb
CHANGED
data/rbi/parlour.rbi
CHANGED
@@ -3,7 +3,7 @@ module Kernel
|
|
3
3
|
end
|
4
4
|
|
5
5
|
module Parlour
|
6
|
-
VERSION = '5.0.0.beta.
|
6
|
+
VERSION = '5.0.0.beta.2'
|
7
7
|
|
8
8
|
class ConflictResolver
|
9
9
|
extend T::Sig
|
@@ -319,6 +319,12 @@ module Parlour
|
|
319
319
|
|
320
320
|
sig { params(type_like: TypeLike).returns(Type) }
|
321
321
|
def to_type(type_like); end
|
322
|
+
|
323
|
+
sig { returns(T.untyped) }
|
324
|
+
def hash; end
|
325
|
+
|
326
|
+
sig { abstract.returns(String) }
|
327
|
+
def describe; end
|
322
328
|
end
|
323
329
|
|
324
330
|
class Raw < Type
|
@@ -336,6 +342,9 @@ module Parlour
|
|
336
342
|
|
337
343
|
sig { override.returns(String) }
|
338
344
|
def generate_rbs; end
|
345
|
+
|
346
|
+
sig { override.returns(String) }
|
347
|
+
def describe; end
|
339
348
|
end
|
340
349
|
|
341
350
|
class Nilable < Type
|
@@ -353,6 +362,9 @@ module Parlour
|
|
353
362
|
|
354
363
|
sig { override.returns(String) }
|
355
364
|
def generate_rbs; end
|
365
|
+
|
366
|
+
sig { override.returns(String) }
|
367
|
+
def describe; end
|
356
368
|
end
|
357
369
|
|
358
370
|
class Union < Type
|
@@ -370,6 +382,9 @@ module Parlour
|
|
370
382
|
|
371
383
|
sig { override.returns(String) }
|
372
384
|
def generate_rbs; end
|
385
|
+
|
386
|
+
sig { override.returns(String) }
|
387
|
+
def describe; end
|
373
388
|
end
|
374
389
|
|
375
390
|
class Intersection < Type
|
@@ -387,6 +402,9 @@ module Parlour
|
|
387
402
|
|
388
403
|
sig { override.returns(String) }
|
389
404
|
def generate_rbs; end
|
405
|
+
|
406
|
+
sig { override.returns(String) }
|
407
|
+
def describe; end
|
390
408
|
end
|
391
409
|
|
392
410
|
class Tuple < Type
|
@@ -404,6 +422,9 @@ module Parlour
|
|
404
422
|
|
405
423
|
sig { override.returns(String) }
|
406
424
|
def generate_rbs; end
|
425
|
+
|
426
|
+
sig { override.returns(String) }
|
427
|
+
def describe; end
|
407
428
|
end
|
408
429
|
|
409
430
|
class SingleElementCollection < Type
|
@@ -423,6 +444,9 @@ module Parlour
|
|
423
444
|
|
424
445
|
sig { override.returns(String) }
|
425
446
|
def generate_rbs; end
|
447
|
+
|
448
|
+
sig { override.returns(String) }
|
449
|
+
def describe; end
|
426
450
|
end
|
427
451
|
|
428
452
|
class Array < SingleElementCollection
|
@@ -483,6 +507,9 @@ module Parlour
|
|
483
507
|
|
484
508
|
sig { override.returns(String) }
|
485
509
|
def generate_rbs; end
|
510
|
+
|
511
|
+
sig { override.returns(String) }
|
512
|
+
def describe; end
|
486
513
|
end
|
487
514
|
|
488
515
|
class Record < Type
|
@@ -500,6 +527,9 @@ module Parlour
|
|
500
527
|
|
501
528
|
sig { override.returns(String) }
|
502
529
|
def generate_rbs; end
|
530
|
+
|
531
|
+
sig { override.returns(String) }
|
532
|
+
def describe; end
|
503
533
|
end
|
504
534
|
|
505
535
|
class Class < Type
|
@@ -517,6 +547,9 @@ module Parlour
|
|
517
547
|
|
518
548
|
sig { override.returns(String) }
|
519
549
|
def generate_rbs; end
|
550
|
+
|
551
|
+
sig { override.returns(String) }
|
552
|
+
def describe; end
|
520
553
|
end
|
521
554
|
|
522
555
|
class Boolean < Type
|
@@ -528,6 +561,23 @@ module Parlour
|
|
528
561
|
|
529
562
|
sig { override.returns(String) }
|
530
563
|
def generate_rbs; end
|
564
|
+
|
565
|
+
sig { override.returns(String) }
|
566
|
+
def describe; end
|
567
|
+
end
|
568
|
+
|
569
|
+
class Self < Type
|
570
|
+
sig { params(other: Object).returns(T::Boolean) }
|
571
|
+
def ==(other); end
|
572
|
+
|
573
|
+
sig { override.returns(String) }
|
574
|
+
def generate_rbi; end
|
575
|
+
|
576
|
+
sig { override.returns(String) }
|
577
|
+
def generate_rbs; end
|
578
|
+
|
579
|
+
sig { override.returns(String) }
|
580
|
+
def describe; end
|
531
581
|
end
|
532
582
|
|
533
583
|
class Untyped < Type
|
@@ -539,6 +589,9 @@ module Parlour
|
|
539
589
|
|
540
590
|
sig { override.returns(String) }
|
541
591
|
def generate_rbs; end
|
592
|
+
|
593
|
+
sig { override.returns(String) }
|
594
|
+
def describe; end
|
542
595
|
end
|
543
596
|
|
544
597
|
class Proc < Type
|
@@ -578,6 +631,9 @@ module Parlour
|
|
578
631
|
|
579
632
|
sig { override.returns(String) }
|
580
633
|
def generate_rbs; end
|
634
|
+
|
635
|
+
sig { override.returns(String) }
|
636
|
+
def describe; end
|
581
637
|
end
|
582
638
|
end
|
583
639
|
|
@@ -1030,7 +1086,7 @@ module Parlour
|
|
1030
1086
|
name: String,
|
1031
1087
|
parameters: T.nilable(T::Array[Parameter]),
|
1032
1088
|
return_type: T.nilable(Types::TypeLike),
|
1033
|
-
returns: T.nilable(
|
1089
|
+
returns: T.nilable(Types::TypeLike),
|
1034
1090
|
abstract: T::Boolean,
|
1035
1091
|
implementation: T::Boolean,
|
1036
1092
|
override: T::Boolean,
|
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: 5.0.0.beta.
|
4
|
+
version: 5.0.0.beta.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Christiansen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sorbet-runtime
|