parlour 4.0.1 → 5.0.0.beta.1

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +208 -20
  4. data/exe/parlour +45 -6
  5. data/lib/parlour.rb +27 -1
  6. data/lib/parlour/conversion/converter.rb +34 -0
  7. data/lib/parlour/conversion/rbi_to_rbs.rb +223 -0
  8. data/lib/parlour/detached_rbs_generator.rb +25 -0
  9. data/lib/parlour/generator.rb +34 -0
  10. data/lib/parlour/options.rb +71 -0
  11. data/lib/parlour/rbi_generator.rb +24 -37
  12. data/lib/parlour/rbi_generator/arbitrary.rb +5 -2
  13. data/lib/parlour/rbi_generator/attribute.rb +14 -5
  14. data/lib/parlour/rbi_generator/class_namespace.rb +8 -3
  15. data/lib/parlour/rbi_generator/constant.rb +17 -6
  16. data/lib/parlour/rbi_generator/enum_class_namespace.rb +8 -3
  17. data/lib/parlour/rbi_generator/extend.rb +5 -2
  18. data/lib/parlour/rbi_generator/include.rb +5 -2
  19. data/lib/parlour/rbi_generator/method.rb +15 -10
  20. data/lib/parlour/rbi_generator/module_namespace.rb +7 -2
  21. data/lib/parlour/rbi_generator/namespace.rb +39 -12
  22. data/lib/parlour/rbi_generator/parameter.rb +11 -5
  23. data/lib/parlour/rbi_generator/rbi_object.rb +19 -78
  24. data/lib/parlour/rbi_generator/struct_class_namespace.rb +9 -2
  25. data/lib/parlour/rbi_generator/struct_prop.rb +12 -9
  26. data/lib/parlour/rbi_generator/type_alias.rb +101 -0
  27. data/lib/parlour/rbs_generator.rb +24 -0
  28. data/lib/parlour/rbs_generator/arbitrary.rb +92 -0
  29. data/lib/parlour/rbs_generator/attribute.rb +82 -0
  30. data/lib/parlour/rbs_generator/block.rb +49 -0
  31. data/lib/parlour/rbs_generator/class_namespace.rb +106 -0
  32. data/lib/parlour/rbs_generator/constant.rb +95 -0
  33. data/lib/parlour/rbs_generator/extend.rb +92 -0
  34. data/lib/parlour/rbs_generator/include.rb +92 -0
  35. data/lib/parlour/rbs_generator/interface_namespace.rb +34 -0
  36. data/lib/parlour/rbs_generator/method.rb +146 -0
  37. data/lib/parlour/rbs_generator/method_signature.rb +104 -0
  38. data/lib/parlour/rbs_generator/module_namespace.rb +35 -0
  39. data/lib/parlour/rbs_generator/namespace.rb +627 -0
  40. data/lib/parlour/rbs_generator/parameter.rb +145 -0
  41. data/lib/parlour/rbs_generator/rbs_object.rb +78 -0
  42. data/lib/parlour/rbs_generator/type_alias.rb +96 -0
  43. data/lib/parlour/type_parser.rb +152 -0
  44. data/lib/parlour/typed_object.rb +87 -0
  45. data/lib/parlour/types.rb +445 -0
  46. data/lib/parlour/version.rb +1 -1
  47. data/parlour.gemspec +1 -1
  48. data/rbi/parlour.rbi +982 -76
  49. metadata +30 -7
  50. data/lib/parlour/rbi_generator/options.rb +0 -74
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: 4.0.1
4
+ version: 5.0.0.beta.1
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-08-05 00:00:00.000000000 Z
11
+ date: 2020-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-runtime
@@ -159,9 +159,14 @@ files:
159
159
  - exe/parlour
160
160
  - lib/parlour.rb
161
161
  - lib/parlour/conflict_resolver.rb
162
+ - lib/parlour/conversion/converter.rb
163
+ - lib/parlour/conversion/rbi_to_rbs.rb
162
164
  - lib/parlour/debugging.rb
163
165
  - lib/parlour/detached_rbi_generator.rb
166
+ - lib/parlour/detached_rbs_generator.rb
167
+ - lib/parlour/generator.rb
164
168
  - lib/parlour/kernel_hack.rb
169
+ - lib/parlour/options.rb
165
170
  - lib/parlour/parse_error.rb
166
171
  - lib/parlour/plugin.rb
167
172
  - lib/parlour/rbi_generator.rb
@@ -175,13 +180,31 @@ files:
175
180
  - lib/parlour/rbi_generator/method.rb
176
181
  - lib/parlour/rbi_generator/module_namespace.rb
177
182
  - lib/parlour/rbi_generator/namespace.rb
178
- - lib/parlour/rbi_generator/options.rb
179
183
  - lib/parlour/rbi_generator/parameter.rb
180
184
  - lib/parlour/rbi_generator/rbi_object.rb
181
185
  - lib/parlour/rbi_generator/struct_class_namespace.rb
182
186
  - lib/parlour/rbi_generator/struct_prop.rb
187
+ - lib/parlour/rbi_generator/type_alias.rb
188
+ - lib/parlour/rbs_generator.rb
189
+ - lib/parlour/rbs_generator/arbitrary.rb
190
+ - lib/parlour/rbs_generator/attribute.rb
191
+ - lib/parlour/rbs_generator/block.rb
192
+ - lib/parlour/rbs_generator/class_namespace.rb
193
+ - lib/parlour/rbs_generator/constant.rb
194
+ - lib/parlour/rbs_generator/extend.rb
195
+ - lib/parlour/rbs_generator/include.rb
196
+ - lib/parlour/rbs_generator/interface_namespace.rb
197
+ - lib/parlour/rbs_generator/method.rb
198
+ - lib/parlour/rbs_generator/method_signature.rb
199
+ - lib/parlour/rbs_generator/module_namespace.rb
200
+ - lib/parlour/rbs_generator/namespace.rb
201
+ - lib/parlour/rbs_generator/parameter.rb
202
+ - lib/parlour/rbs_generator/rbs_object.rb
203
+ - lib/parlour/rbs_generator/type_alias.rb
183
204
  - lib/parlour/type_loader.rb
184
205
  - lib/parlour/type_parser.rb
206
+ - lib/parlour/typed_object.rb
207
+ - lib/parlour/types.rb
185
208
  - lib/parlour/version.rb
186
209
  - parlour.gemspec
187
210
  - plugin_examples/foobar_plugin.rb
@@ -201,12 +224,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
201
224
  version: '0'
202
225
  required_rubygems_version: !ruby/object:Gem::Requirement
203
226
  requirements:
204
- - - ">="
227
+ - - ">"
205
228
  - !ruby/object:Gem::Version
206
- version: '0'
229
+ version: 1.3.1
207
230
  requirements: []
208
- rubygems_version: 3.1.2
231
+ rubygems_version: 3.0.3
209
232
  signing_key:
210
233
  specification_version: 4
211
- summary: An RBI generator, merger and parser for Sorbet
234
+ summary: A type information generator, merger and parser for Sorbet and Ruby 3/Steep
212
235
  test_files: []
@@ -1,74 +0,0 @@
1
- # typed: true
2
- module Parlour
3
- class RbiGenerator
4
- # A set of immutable formatting options passed to all calls of
5
- # {RbiObject#generate_rbi}.
6
- class Options
7
- extend T::Sig
8
-
9
- sig { params(break_params: Integer, tab_size: Integer, sort_namespaces: T::Boolean).void }
10
- # Creates a new set of formatting options.
11
- #
12
- # @example Create Options with +break_params+ of +4+ and +tab_size+ of +2+.
13
- # Parlour::RbiGenerator::Options.new(break_params: 4, tab_size: 2)
14
- #
15
- # @param break_params [Integer] If there are at least this many parameters in a
16
- # Sorbet +sig+, then it is broken onto separate lines.
17
- # @param tab_size [Integer] The number of spaces to use per indent.
18
- # @param sort_namespaces [Boolean] Whether to sort all items within a
19
- # namespace alphabetically.
20
- # @return [void]
21
- def initialize(break_params:, tab_size:, sort_namespaces:)
22
- @break_params = break_params
23
- @tab_size = tab_size
24
- @sort_namespaces = sort_namespaces
25
- end
26
-
27
- sig { returns(Integer) }
28
- # If there are at least this many parameters in a Sorbet +sig+, then it
29
- # is broken onto separate lines.
30
- #
31
- # # With break_params: 5
32
- # sig { params(name: String, age: Integer, hobbies: T::Array(String), country: Symbol).void }
33
- #
34
- # # With break_params: 4
35
- # sig do
36
- # params(
37
- # name: String,
38
- # age: Integer,
39
- # hobbies: T::Array(String),
40
- # country: Symbol
41
- # ).void
42
- # end
43
- #
44
- # @return [Integer]
45
- attr_reader :break_params
46
-
47
- sig { returns(Integer) }
48
- # The number of spaces to use per indent.
49
- # @return [Integer]
50
- attr_reader :tab_size
51
-
52
- sig { returns(T::Boolean) }
53
- # Whether to sort all items within a namespace alphabetically.
54
- # Items which are typically grouped together, such as "include" or
55
- # "extend" calls, will remain grouped together when sorted.
56
- # If true, items are sorted by their name when the RBI is generated.
57
- # If false, items are generated in the order they are added to the
58
- # namespace.
59
- # @return [Boolean]
60
- attr_reader :sort_namespaces
61
-
62
- sig { params(level: Integer, str: String).returns(String) }
63
- # Returns a string indented to the given indent level, according to the
64
- # set {tab_size}.
65
- #
66
- # @param level [Integer] The indent level, as an integer. 0 is totally unindented.
67
- # @param str [String] The string to indent.
68
- # @return [String] The indented string.
69
- def indented(level, str)
70
- " " * (level * tab_size) + str
71
- end
72
- end
73
- end
74
- end