orthoses 0.1.0 → 0.2.0
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/README.md +2 -2
- data/lib/orthoses/builder.rb +1 -1
- data/lib/orthoses/content/duplication_checker.rb +46 -0
- data/lib/orthoses/content.rb +9 -8
- data/lib/orthoses/delegate_class.rb +12 -6
- data/lib/orthoses/{include_extend_prepend.rb → mixin.rb} +1 -1
- data/lib/orthoses/version.rb +1 -1
- data/lib/orthoses.rb +1 -1
- data/sig/orthoses/content/duplication_checker.rbs +4 -0
- data/sig/orthoses/{include_extend_prepend.rbs → mixin.rbs} +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2fbbb509545bf6efd770838fff4ac02168f0352f0f2e2561ed927eb3479a4bb
|
4
|
+
data.tar.gz: 259b1cf53cc3b2ea17ec3d6088260131ccd9d8562ec002b0d515cb817b96d228
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50aceef69e828e6fbd90cbb23813bd66676b399d4a5551728eebf9ae8c24544aeda11c7d57810826575c53b215da541d232eb5a8ecb26fb9cf2d5a99822c7a91
|
7
|
+
data.tar.gz: 36972f90ecdf75efa516c2fb576ea616f2b949a5930463f01ff9046335ae6571d7e98f9c33593bee21397cd29754da4abdfea038c956eaaa74d92deded56ba71
|
data/README.md
CHANGED
@@ -31,7 +31,7 @@ Orthoses::Builder.new do
|
|
31
31
|
%r{app/models}.match?(path)
|
32
32
|
}
|
33
33
|
use YourCustom::Middleware
|
34
|
-
use Orthoses::
|
34
|
+
use Orthoses::Mixin
|
35
35
|
use Orthoses::Constant
|
36
36
|
use Orthoses::Walk,
|
37
37
|
root: "Foo"
|
@@ -48,7 +48,7 @@ end.call
|
|
48
48
|
Add constant signature to class/module.
|
49
49
|
Signatures are predicted from constant values.
|
50
50
|
|
51
|
-
### Orthoses::
|
51
|
+
### Orthoses::Mixin
|
52
52
|
|
53
53
|
Add module include/extend/prepend definition.
|
54
54
|
It use `Module#{includeed,extended,prepended}` for capture.
|
data/lib/orthoses/builder.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
module Orthoses
|
2
|
+
class Content
|
3
|
+
# Check and drop duplication method, const etc...
|
4
|
+
class DuplicationChecker
|
5
|
+
def initialize(decl)
|
6
|
+
@decl = decl
|
7
|
+
@uniq_map = {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def <<(member)
|
11
|
+
key = member_key(member)
|
12
|
+
if @uniq_map.key?(key)
|
13
|
+
Orthoses.logger.warn("#{@decl.name}::#{member_to_s(member)} was droped since duplication")
|
14
|
+
else
|
15
|
+
@uniq_map[key] = member
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def uniq_members
|
20
|
+
@uniq_map.values
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def member_to_s(member)
|
26
|
+
out = StringIO.new
|
27
|
+
RBS::Writer.new(out: out).write_member(member)
|
28
|
+
out.string.chomp
|
29
|
+
end
|
30
|
+
|
31
|
+
def member_key(member)
|
32
|
+
case member
|
33
|
+
when RBS::AST::Members::MethodDefinition
|
34
|
+
# member.types.hash is different
|
35
|
+
[member.class, member.name, member.kind]
|
36
|
+
when RBS::AST::Members::LocationOnly
|
37
|
+
[member.class]
|
38
|
+
when RBS::AST::Members::Alias
|
39
|
+
[member.class, member.new_name, member.old_name, member.kind]
|
40
|
+
else
|
41
|
+
[member.class, member.name]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/orthoses/content.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'orthoses/content/duplication_checker'
|
4
|
+
|
3
5
|
module Orthoses
|
4
6
|
# Common interface for output.
|
5
7
|
# Orthoses::Content expect to use result of middleware.
|
@@ -94,19 +96,18 @@ module Orthoses
|
|
94
96
|
out = StringIO.new
|
95
97
|
writer = RBS::Writer.new(out: out)
|
96
98
|
decls = RBS::Parser.parse_signature(buffer).map do |parsed_decl|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
99
|
+
parsed_decl.tap do |decl|
|
100
|
+
duplicate_checker = DuplicationChecker.new(decl)
|
101
|
+
decl.members.each do |member|
|
102
|
+
duplicate_checker << member
|
103
|
+
end
|
104
|
+
decl.members.replace(duplicate_checker.uniq_members)
|
101
105
|
end
|
102
|
-
parsed_decl
|
103
106
|
end
|
104
107
|
writer.write(decls)
|
105
108
|
out.string
|
106
109
|
rescue RBS::ParsingError
|
107
|
-
|
108
|
-
puts rbs
|
109
|
-
puts "```"
|
110
|
+
Orthoses.logger.error "```rbs\n#{rbs}```"
|
110
111
|
raise
|
111
112
|
end
|
112
113
|
end
|
@@ -29,17 +29,23 @@ module Orthoses
|
|
29
29
|
next unless subclass_name
|
30
30
|
delegate_to_class_name = Utils.module_name(delegate_to_class)
|
31
31
|
next unless delegate_to_class_name
|
32
|
-
store[subclass_name].header
|
32
|
+
next unless store[subclass_name].header.nil?
|
33
|
+
|
34
|
+
header = "class #{subclass_name} < ::#{delegate_to_class_name}#{temporary_type_params(delegate_to_class_name)}"
|
35
|
+
store[subclass_name].header = header
|
33
36
|
end
|
34
37
|
end
|
35
38
|
store
|
36
39
|
end
|
37
40
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
def temporary_type_params(name)
|
42
|
+
Utils.known_type_params(name)&.then do |params|
|
43
|
+
if params.empty?
|
44
|
+
nil
|
45
|
+
else
|
46
|
+
"[#{params.map { :untyped }.join(', ')}]"
|
47
|
+
end
|
48
|
+
end
|
43
49
|
end
|
44
50
|
end
|
45
51
|
end
|
data/lib/orthoses/version.rb
CHANGED
data/lib/orthoses.rb
CHANGED
@@ -10,7 +10,7 @@ require_relative 'orthoses/content'
|
|
10
10
|
require_relative 'orthoses/create_file_by_name'
|
11
11
|
require_relative 'orthoses/delegate_class'
|
12
12
|
require_relative 'orthoses/filter'
|
13
|
-
require_relative 'orthoses/
|
13
|
+
require_relative 'orthoses/mixin'
|
14
14
|
require_relative 'orthoses/load_rbs'
|
15
15
|
require_relative 'orthoses/object_space_all'
|
16
16
|
require_relative 'orthoses/pp'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orthoses
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ksss
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbs
|
@@ -40,11 +40,12 @@ files:
|
|
40
40
|
- lib/orthoses/call_tracer.rb
|
41
41
|
- lib/orthoses/constant.rb
|
42
42
|
- lib/orthoses/content.rb
|
43
|
+
- lib/orthoses/content/duplication_checker.rb
|
43
44
|
- lib/orthoses/create_file_by_name.rb
|
44
45
|
- lib/orthoses/delegate_class.rb
|
45
46
|
- lib/orthoses/filter.rb
|
46
|
-
- lib/orthoses/include_extend_prepend.rb
|
47
47
|
- lib/orthoses/load_rbs.rb
|
48
|
+
- lib/orthoses/mixin.rb
|
48
49
|
- lib/orthoses/object_space_all.rb
|
49
50
|
- lib/orthoses/pp.rb
|
50
51
|
- lib/orthoses/store.rb
|
@@ -62,11 +63,12 @@ files:
|
|
62
63
|
- sig/orthoses/const_load_error.rbs
|
63
64
|
- sig/orthoses/constant.rbs
|
64
65
|
- sig/orthoses/content.rbs
|
66
|
+
- sig/orthoses/content/duplication_checker.rbs
|
65
67
|
- sig/orthoses/create_file_by_name.rbs
|
66
68
|
- sig/orthoses/delegate_class.rbs
|
67
69
|
- sig/orthoses/filter.rbs
|
68
|
-
- sig/orthoses/include_extend_prepend.rbs
|
69
70
|
- sig/orthoses/load_rbs.rbs
|
71
|
+
- sig/orthoses/mixin.rbs
|
70
72
|
- sig/orthoses/name_space_error.rbs
|
71
73
|
- sig/orthoses/object_space_all.rbs
|
72
74
|
- sig/orthoses/pp.rbs
|