parlour 4.0.0 → 4.0.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.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- data/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- data/.gitignore +1 -1
- data/.parlour +0 -0
- data/.rspec +0 -0
- data/.travis.yml +0 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +0 -0
- data/Gemfile +0 -0
- data/LICENSE.txt +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/lib/parlour.rb +0 -0
- data/lib/parlour/conflict_resolver.rb +31 -9
- data/lib/parlour/debugging.rb +0 -0
- data/lib/parlour/detached_rbi_generator.rb +0 -0
- data/lib/parlour/kernel_hack.rb +0 -0
- data/lib/parlour/parse_error.rb +0 -0
- data/lib/parlour/plugin.rb +0 -0
- data/lib/parlour/rbi_generator.rb +0 -0
- data/lib/parlour/rbi_generator/arbitrary.rb +0 -0
- data/lib/parlour/rbi_generator/attribute.rb +0 -0
- data/lib/parlour/rbi_generator/class_namespace.rb +0 -0
- data/lib/parlour/rbi_generator/constant.rb +0 -0
- data/lib/parlour/rbi_generator/enum_class_namespace.rb +0 -0
- data/lib/parlour/rbi_generator/extend.rb +0 -0
- data/lib/parlour/rbi_generator/include.rb +0 -0
- data/lib/parlour/rbi_generator/method.rb +0 -0
- data/lib/parlour/rbi_generator/module_namespace.rb +0 -0
- data/lib/parlour/rbi_generator/namespace.rb +0 -0
- data/lib/parlour/rbi_generator/options.rb +0 -0
- data/lib/parlour/rbi_generator/parameter.rb +0 -0
- data/lib/parlour/rbi_generator/rbi_object.rb +0 -0
- data/lib/parlour/rbi_generator/struct_class_namespace.rb +0 -0
- data/lib/parlour/rbi_generator/struct_prop.rb +0 -0
- data/lib/parlour/type_loader.rb +0 -0
- data/lib/parlour/type_parser.rb +0 -0
- data/lib/parlour/version.rb +1 -1
- data/parlour.gemspec +0 -0
- data/plugin_examples/foobar_plugin.rb +0 -0
- data/rbi/parlour.rbi +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 707934b89fd83fbb876582bd7e66679bc2f8cf2179961eed62358ba6266bf524
|
4
|
+
data.tar.gz: 3d0a0c8be95e09275a9b02232ce9b9b062a9f00eb3216a0e74ce63a036025d76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae723cbe6bebbba12ee3d802b223fa91fcda085f6b1fce4ec107efa3f9e3cc5df53ee0269a6e9d1391ff32c903d15b72153c67fae61392b7e5495688b69b7b0a
|
7
|
+
data.tar.gz: 98626719eb9d2c08f7e87c1ae48933d8b1afb9badab000bb408a8df26c57716846b71278654193c821ce59a552c83456d1f61523ce5bd9ff0e52d296ab34e274
|
File without changes
|
File without changes
|
data/.gitignore
CHANGED
data/.parlour
CHANGED
File without changes
|
data/.rspec
CHANGED
File without changes
|
data/.travis.yml
CHANGED
File without changes
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,11 @@ 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
|
+
## [4.0.1] - 2020-08-05
|
7
|
+
### Fixed
|
8
|
+
- Fixed duplicate includes and extends.
|
9
|
+
- Fixed the block return type for `#resolve_conflicts` not being nilable.
|
10
|
+
|
6
11
|
## [4.0.0] - 2020-05-23
|
7
12
|
### Added
|
8
13
|
- Parlour now defaults to loading the current project when running its command
|
data/CODE_OF_CONDUCT.md
CHANGED
File without changes
|
data/Gemfile
CHANGED
File without changes
|
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
data/lib/parlour.rb
CHANGED
File without changes
|
@@ -13,7 +13,7 @@ module Parlour
|
|
13
13
|
resolver: T.proc.params(
|
14
14
|
desc: String,
|
15
15
|
choices: T::Array[RbiGenerator::RbiObject]
|
16
|
-
).returns(RbiGenerator::RbiObject)
|
16
|
+
).returns(T.nilable(RbiGenerator::RbiObject))
|
17
17
|
).void
|
18
18
|
end
|
19
19
|
# Given a namespace, attempts to automatically resolve conflicts in the
|
@@ -23,13 +23,13 @@ module Parlour
|
|
23
23
|
# All children of the given namespace which are also namespaces are
|
24
24
|
# processed recursively, so passing {RbiGenerator#root} will eliminate all
|
25
25
|
# conflicts in the entire object tree.
|
26
|
-
#
|
26
|
+
#
|
27
27
|
# If automatic resolution is not possible, the block passed to this method
|
28
28
|
# is invoked and passed two arguments: a message on what the conflict is,
|
29
29
|
# and an array of candidate objects. The block should return one of these
|
30
30
|
# candidate objects, which will be kept, and all other definitions are
|
31
31
|
# deleted. Alternatively, the block may return nil, which will delete all
|
32
|
-
# definitions. The block may be invoked many times from one call to
|
32
|
+
# definitions. The block may be invoked many times from one call to
|
33
33
|
# {resolve_conflicts}, one for each unresolvable conflict.
|
34
34
|
#
|
35
35
|
# @param namespace [RbiGenerator::Namespace] The starting namespace to
|
@@ -52,14 +52,14 @@ module Parlour
|
|
52
52
|
child.name
|
53
53
|
end
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
grouped_by_name_children.each do |name, children|
|
57
57
|
Debugging.debug_puts(self, Debugging::Tree.begin("Checking children named #{name}..."))
|
58
58
|
|
59
59
|
if children.length > 1
|
60
60
|
Debugging.debug_puts(self, Debugging::Tree.here("Possible conflict between #{children.length} objects"))
|
61
61
|
|
62
|
-
# Special case: do we have two methods, one of which is a class method
|
62
|
+
# Special case: do we have two methods, one of which is a class method
|
63
63
|
# and the other isn't? If so, do nothing - this is fine
|
64
64
|
if children.length == 2 &&
|
65
65
|
children.all? { |c| c.is_a?(RbiGenerator::Method) } &&
|
@@ -78,12 +78,13 @@ module Parlour
|
|
78
78
|
c.is_a?(RbiGenerator::Include) || c.is_a?(RbiGenerator::Extend)
|
79
79
|
end
|
80
80
|
end
|
81
|
-
|
81
|
+
deduplicate_mixins_of_name(namespace, name)
|
82
|
+
|
82
83
|
Debugging.debug_puts(self, Debugging::Tree.end("Includes/extends do not conflict with namespaces; no resolution required"))
|
83
84
|
next
|
84
85
|
end
|
85
86
|
|
86
|
-
# Special case: do we have two attributes, one of which is a class
|
87
|
+
# Special case: do we have two attributes, one of which is a class
|
87
88
|
# attribute and the other isn't? If so, do nothing - this is fine
|
88
89
|
if children.length == 2 &&
|
89
90
|
children.all? { |c| c.is_a?(RbiGenerator::Attribute) } &&
|
@@ -93,13 +94,13 @@ module Parlour
|
|
93
94
|
next
|
94
95
|
end
|
95
96
|
|
96
|
-
# Special case: are they all clearly equal? If so, remove all but one
|
97
|
+
# Optimization for Special case: are they all clearly equal? If so, remove all but one
|
97
98
|
if all_eql?(children)
|
98
99
|
Debugging.debug_puts(self, Debugging::Tree.end("All children are identical"))
|
99
100
|
|
100
101
|
# All of the children are the same, so this deletes all of them
|
101
102
|
namespace.children.delete(T.must(children.first))
|
102
|
-
|
103
|
+
|
103
104
|
# Re-add one child
|
104
105
|
namespace.children << T.must(children.first)
|
105
106
|
next
|
@@ -239,5 +240,26 @@ module Parlour
|
|
239
240
|
def all_eql?(arr)
|
240
241
|
arr.each_cons(2).all? { |x, y| x == y }
|
241
242
|
end
|
243
|
+
|
244
|
+
sig { params(namespace: RbiGenerator::Namespace, name: T.nilable(String)).void }
|
245
|
+
# Given a namespace and a child name, removes all duplicate children that are mixins
|
246
|
+
# and that have the given name, except the first found instance.
|
247
|
+
#
|
248
|
+
# @param namespace [RbiGenerator::Namespace] The namespace to deduplicate mixins in.
|
249
|
+
# @param name [String] The name of the mixin modules to deduplicate.
|
250
|
+
# @return [void]
|
251
|
+
def deduplicate_mixins_of_name(namespace, name)
|
252
|
+
found_map = {}
|
253
|
+
namespace.children.delete_if do |x|
|
254
|
+
# ignore children whose names don't match
|
255
|
+
next unless x.name == name
|
256
|
+
# ignore children that are not mixins
|
257
|
+
next unless x.is_a?(RbiGenerator::Include) || x.is_a?(RbiGenerator::Extend)
|
258
|
+
|
259
|
+
delete = found_map.key?(x.class)
|
260
|
+
found_map[x.class] = true
|
261
|
+
delete
|
262
|
+
end
|
263
|
+
end
|
242
264
|
end
|
243
265
|
end
|
data/lib/parlour/debugging.rb
CHANGED
File without changes
|
File without changes
|
data/lib/parlour/kernel_hack.rb
CHANGED
File without changes
|
data/lib/parlour/parse_error.rb
CHANGED
File without changes
|
data/lib/parlour/plugin.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/parlour/type_loader.rb
CHANGED
File without changes
|
data/lib/parlour/type_parser.rb
CHANGED
File without changes
|
data/lib/parlour/version.rb
CHANGED
data/parlour.gemspec
CHANGED
File without changes
|
File without changes
|
data/rbi/parlour.rbi
CHANGED
@@ -11,7 +11,7 @@ module Parlour
|
|
11
11
|
sig { params(namespace: RbiGenerator::Namespace, resolver: T.proc.params(
|
12
12
|
desc: String,
|
13
13
|
choices: T::Array[RbiGenerator::RbiObject]
|
14
|
-
).returns(RbiGenerator::RbiObject)).void }
|
14
|
+
).returns(T.nilable(RbiGenerator::RbiObject))).void }
|
15
15
|
def resolve_conflicts(namespace, &resolver); end
|
16
16
|
|
17
17
|
sig { params(arr: T::Array[T.untyped]).returns(T.nilable(Symbol)) }
|
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.
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Christiansen
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05
|
11
|
+
date: 2020-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sorbet-runtime
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
-
description:
|
139
|
+
description:
|
140
140
|
email:
|
141
141
|
- hello@aaronc.cc
|
142
142
|
executables:
|
@@ -190,7 +190,7 @@ homepage: https://github.com/AaronC81/parlour
|
|
190
190
|
licenses:
|
191
191
|
- MIT
|
192
192
|
metadata: {}
|
193
|
-
post_install_message:
|
193
|
+
post_install_message:
|
194
194
|
rdoc_options: []
|
195
195
|
require_paths:
|
196
196
|
- lib
|
@@ -205,8 +205,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
205
|
- !ruby/object:Gem::Version
|
206
206
|
version: '0'
|
207
207
|
requirements: []
|
208
|
-
rubygems_version: 3.
|
209
|
-
signing_key:
|
208
|
+
rubygems_version: 3.1.2
|
209
|
+
signing_key:
|
210
210
|
specification_version: 4
|
211
211
|
summary: An RBI generator, merger and parser for Sorbet
|
212
212
|
test_files: []
|