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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8117de48194856013f343430fd893e1b8bc75e51fc8b8811e70bc89a3f9989aa
4
- data.tar.gz: bc980c3cb70a33c60fc92c23f10f2d844da076161a65e2c24fde49e24d4aceb9
3
+ metadata.gz: 67507b0ea29af60c22d4e326220ea362441969c56c06d357767660356ff39b6c
4
+ data.tar.gz: 1f2cc037d17d4a3bfabc86b34b937d9a7fc9986af0302eb950fe310146944739
5
5
  SHA512:
6
- metadata.gz: 6bcf142fd126d52f38d2d0d5f597e85d7a4274c321b927230ce100aae9d3941bd6abb7e2cf35ccf597c2b5eaf71121126d5bd85c814d63cdece0e479536740c3
7
- data.tar.gz: 5af1d6099e12dff2105dca26c4a6db90bba1190018ab7e514dd413e272e3942ef3b608666e91e5fa26b6bdc23f2d886e41ab1d1655085e36ca5f0b94b461448f
6
+ metadata.gz: 446a15c1a26e799b3d407ef0e1e2c02b441a559da38a327cda3d2110ea6013825beb6870c14a42531425bb6b83a8595d1298cfe70d9bbd87cc27ebff9e397985
7
+ data.tar.gz: 8b4df35779cd3b6c1129811a271788a303bf1c57fe271bebea135a48c06dafbb1ecead10a9e3da3ae36b4d17953848767a0a546b2a7de00fc24b3ff02ec71e04
@@ -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(String),
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
@@ -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
- # Generic type for a boolean.
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
@@ -1,5 +1,5 @@
1
1
  # typed: strong
2
2
  module Parlour
3
3
  # The library version.
4
- VERSION = '5.0.0.beta.1'
4
+ VERSION = '5.0.0.beta.2'
5
5
  end
@@ -3,7 +3,7 @@ module Kernel
3
3
  end
4
4
 
5
5
  module Parlour
6
- VERSION = '5.0.0.beta.1'
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(String),
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.1
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-13 00:00:00.000000000 Z
11
+ date: 2020-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-runtime