parlour 4.0.1 → 5.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
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