parlour 5.0.0.beta.1 → 5.0.0.beta.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|