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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64cbbb058a7d4dc7c5f6f0d8cc66a23a1b2026253ad20add3cc63777a1c42227
4
- data.tar.gz: 15742e8389d7fc4e129bca6ab48203f13dad5b2338eff73a2b4c530ba239d327
3
+ metadata.gz: c2fbbb509545bf6efd770838fff4ac02168f0352f0f2e2561ed927eb3479a4bb
4
+ data.tar.gz: 259b1cf53cc3b2ea17ec3d6088260131ccd9d8562ec002b0d515cb817b96d228
5
5
  SHA512:
6
- metadata.gz: 276874fcb60ce45b3b2ffe3388e963b596f65a466c4f36f5b3986b561f756f721d797e8217a27b6a292f988343fe8f4209886b876ba03e4512466b51903e4996
7
- data.tar.gz: 73b2a614b599980d20d2d0334d87f4f508b163beff9a766979d67f39f49213a634c9e907725efd1f7a51e1552b5db90e80f3d766bba024ff050d50c5d5522b5c
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::IncludeExtendPrepend
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::IncludeExtendPrepend
51
+ ### Orthoses::Mixin
52
52
 
53
53
  Add module include/extend/prepend definition.
54
54
  It use `Module#{includeed,extended,prepended}` for capture.
@@ -5,7 +5,7 @@ module Orthoses
5
5
  # Builder.new do
6
6
  # use Orthoses::CreateFileByName
7
7
  # use Orthoses::Constant
8
- # use Orthoses::IncludeExtendPrepend
8
+ # use Orthoses::Mixin
9
9
  # use Orthoses::Walk,
10
10
  # root: "Foo"
11
11
  # run ->() { require 'foo' }
@@ -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
@@ -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
- before_members = parsed_decl.members.dup
98
- parsed_decl.members.uniq! { |m| [m.class, m.respond_to?(:name) ? m.name : nil] }
99
- (before_members - parsed_decl.members).each do |droped_member|
100
- Orthoses.logger.warn("#{parsed_decl.name}::#{droped_member.name.to_s}: #{droped_member.to_s} was droped since duplication")
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
- puts "```rbs"
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 = "class #{subclass_name} < #{delegate_to_class_name}"
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 from_DelegateClass?(klass)
39
- klass.name.nil? &&
40
- klass.superclass == Delegator &&
41
- klass.instance_methods.include?(:__setobj__) &&
42
- klass.instance_method(:__setobj__).source_location.first.end_with?("delegate.rb")
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
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Orthoses
4
- class IncludeExtendPrepend
4
+ class Mixin
5
5
  def initialize(loader, if: nil)
6
6
  @loader = loader
7
7
  @if = binding.local_variable_get(:if)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Orthoses
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
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/include_extend_prepend'
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'
@@ -0,0 +1,4 @@
1
+ # THIS IS GENERATED CODE from `$ rake generate_self_sig`
2
+
3
+ class Orthoses::Content::DuplicationChecker
4
+ end
@@ -1,4 +1,4 @@
1
1
  # THIS IS GENERATED CODE from `$ rake generate_self_sig`
2
2
 
3
- class Orthoses::IncludeExtendPrepend
3
+ class Orthoses::Mixin
4
4
  end
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.1.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-08 00:00:00.000000000 Z
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