orthoses 1.1.0 → 1.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/Gemfile.lock +1 -1
- data/README.md +1 -6
- data/lib/orthoses/content/duplication_checker.rb +1 -1
- data/lib/orthoses/content/environment.rb +1 -1
- data/lib/orthoses/content.rb +6 -2
- data/lib/orthoses/create_file_by_name.rb +1 -22
- data/lib/orthoses/outputable/avoid_recursive_ancestor_error.rb +3 -0
- data/lib/orthoses/outputable/uniq_content_body.rb +26 -0
- data/lib/orthoses/outputable.rb +2 -0
- data/lib/orthoses/utils/underscore.rb +21 -0
- data/lib/orthoses/utils.rb +6 -4
- data/lib/orthoses/version.rb +1 -1
- data/lib/orthoses.rb +23 -25
- data/sig/orthoses/outputable/uniq_content_body.rbs +6 -0
- data/sig/orthoses/utils/underscore.rbs +4 -0
- data/sig/orthoses.rbs +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0520f0eccc23c9e57186592193f7c30175b59aa1364bcf5de49f1bcbff0a68d5
|
4
|
+
data.tar.gz: deaeb9dd3baed337b22a0b6990bbddd98df1c282c1dc6269edeb3a78060abae1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94037bb0ff51e74b055e8282048d818ca051a102fdcdb16f64dc00c1a83194bcd4a721d68c9dbf43e47a691b66ef7b992b319a69fff4b0afc9374cdf8001d0a2
|
7
|
+
data.tar.gz: 27611b811fead68b26ccd941d5111039ad7fddb0fdaad6d0509bf9b5d6bdfc29783daab517a959389a95890eba75ce57b5933a9c26158f17b3a2d8d0ab2948ff
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -32,7 +32,7 @@ namespace :rbs do
|
|
32
32
|
desc "build RBS to sig/out"
|
33
33
|
task :build do
|
34
34
|
Orthoses::Builder.new do
|
35
|
-
use Orthoses::CreateFileByName
|
35
|
+
use Orthoses::CreateFileByName,
|
36
36
|
base_dir: Rails.root.join("sig/out"),
|
37
37
|
header: "# !!! GENERATED CODE !!!"
|
38
38
|
use Orthoses::Filter do |name, _content|
|
@@ -165,11 +165,6 @@ Run `rbs prototype rb` command process to `paths` option files.
|
|
165
165
|
|
166
166
|
Run `rbs prototype runtime` command process with `patterns` option string.
|
167
167
|
|
168
|
-
### Orthoses::AvoidRecursiveAncestorError
|
169
|
-
|
170
|
-
Mixin a module into an Object class raises `RBS::RecursiveAncestorError` when validation.
|
171
|
-
Please add this middleware then.
|
172
|
-
|
173
168
|
### Orthoses::Autoload
|
174
169
|
|
175
170
|
Force load const defined by `autoload`.
|
@@ -17,7 +17,7 @@ module Orthoses
|
|
17
17
|
|
18
18
|
def initialize(constant_filter: nil, mixin_filter: nil, attribute_filter: nil)
|
19
19
|
@load_env = RBS::Environment.new
|
20
|
-
@known_env = Utils.rbs_environment(
|
20
|
+
@known_env = Utils.rbs_environment(cache: false)
|
21
21
|
@constant_filter = constant_filter
|
22
22
|
@mixin_filter = mixin_filter
|
23
23
|
@attribute_filter = attribute_filter
|
data/lib/orthoses/content.rb
CHANGED
@@ -19,12 +19,14 @@ module Orthoses
|
|
19
19
|
attr_reader :name
|
20
20
|
attr_reader :body
|
21
21
|
attr_accessor :header
|
22
|
+
attr_accessor :comment
|
22
23
|
|
23
24
|
def initialize(name:)
|
24
25
|
Orthoses.logger.debug("Create Orthoses::Content for #{name}")
|
25
26
|
@name = name
|
26
27
|
@body = []
|
27
28
|
@header = nil
|
29
|
+
@comment = nil
|
28
30
|
end
|
29
31
|
|
30
32
|
def <<(line)
|
@@ -63,7 +65,9 @@ module Orthoses
|
|
63
65
|
end
|
64
66
|
|
65
67
|
def original_rbs
|
66
|
-
a = [
|
68
|
+
a = []
|
69
|
+
a << @comment if @comment
|
70
|
+
a << @header
|
67
71
|
a << " #{@body.join("\n ")}" if @body.length > 0
|
68
72
|
a << "end"
|
69
73
|
a.join("\n")
|
@@ -111,7 +115,7 @@ module Orthoses
|
|
111
115
|
end
|
112
116
|
|
113
117
|
def auto_header
|
114
|
-
env = Utils.rbs_environment
|
118
|
+
env = Utils.rbs_environment
|
115
119
|
if entry = env.class_decls[TypeName(name).absolute!]
|
116
120
|
@header = Content::HeaderBuilder.new(env: env).build(entry: entry)
|
117
121
|
return
|
@@ -13,33 +13,12 @@ module Orthoses
|
|
13
13
|
@if = binding.local_variable_get(:if)
|
14
14
|
end
|
15
15
|
|
16
|
-
using
|
17
|
-
refine String do
|
18
|
-
# avoid load active_support
|
19
|
-
def underscore
|
20
|
-
return self unless /[A-Z-]|::/.match?(self)
|
21
|
-
word = self.to_s.gsub("::", "/")
|
22
|
-
word.gsub!(/(?:(?<=([A-Za-z\d]))|\b)((?-mix:(?=a)b))(?=\b|[^a-z])/) { "#{$1 && '_' }#{$2.downcase}" }
|
23
|
-
word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
|
24
|
-
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
25
|
-
word.tr!("-", "_")
|
26
|
-
word.downcase!
|
27
|
-
word
|
28
|
-
end
|
29
|
-
end
|
30
|
-
})
|
16
|
+
using Utils::Underscore
|
31
17
|
|
32
18
|
def call
|
33
19
|
store = @loader.call
|
34
20
|
|
35
21
|
store.each do |name, content|
|
36
|
-
begin
|
37
|
-
content.uniq!
|
38
|
-
rescue NameError, LoadError => err
|
39
|
-
Orthoses.logger.error(err.inspect)
|
40
|
-
next
|
41
|
-
end
|
42
|
-
|
43
22
|
next unless @if.nil? || @if.call(name, content)
|
44
23
|
|
45
24
|
file_path = Pathname("#{@base_dir}/#{name.to_s.split('::').map(&:underscore).join('/')}.rbs")
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Orthoses
|
4
|
+
module Outputable
|
5
|
+
# UniqContentBody is an internal middleware
|
6
|
+
# It's using on orthoses/outputable.rb
|
7
|
+
class UniqContentBody
|
8
|
+
def initialize(loader)
|
9
|
+
@loader = loader
|
10
|
+
end
|
11
|
+
|
12
|
+
def call
|
13
|
+
@loader.call.tap do |store|
|
14
|
+
store.each do |name, content|
|
15
|
+
begin
|
16
|
+
content.uniq!
|
17
|
+
rescue NameError, LoadError => err
|
18
|
+
Orthoses.logger.error(err.inspect)
|
19
|
+
next
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/orthoses/outputable.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'orthoses/outputable/avoid_recursive_ancestor_error'
|
4
|
+
require 'orthoses/outputable/uniq_content_body'
|
4
5
|
|
5
6
|
module Orthoses
|
6
7
|
# Module for output middleware.
|
@@ -15,6 +16,7 @@ module Orthoses
|
|
15
16
|
module Outputable
|
16
17
|
def call
|
17
18
|
@loader = AvoidRecursiveAncestorError.new(@loader)
|
19
|
+
@loader = UniqContentBody.new(@loader)
|
18
20
|
super
|
19
21
|
end
|
20
22
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Orthoses
|
4
|
+
module Utils
|
5
|
+
module Underscore
|
6
|
+
refine String do
|
7
|
+
# avoid load active_support
|
8
|
+
def underscore
|
9
|
+
return self unless /[A-Z-]|::/.match?(self)
|
10
|
+
word = self.to_s.gsub("::", "/")
|
11
|
+
word.gsub!(/(?:(?<=([A-Za-z\d]))|\b)((?-mix:(?=a)b))(?=\b|[^a-z])/) { "#{$1 && '_' }#{$2.downcase}" }
|
12
|
+
word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
|
13
|
+
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
14
|
+
word.tr!("-", "_")
|
15
|
+
word.downcase!
|
16
|
+
word
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/orthoses/utils.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
module Orthoses
|
4
4
|
module Utils
|
5
|
+
autoload :Underscore, "orthoses/utils/underscore"
|
6
|
+
|
5
7
|
def self.unautoload!
|
6
8
|
warn "`Orthoses::Utils.unautoload!` is deprecated. please use `Orthoses::Autoload` middleware instead."
|
7
9
|
ObjectSpace.each_object(Module) do |mod|
|
@@ -27,7 +29,7 @@ module Orthoses
|
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
30
|
-
def self.rbs_defined_const?(name, library: nil, collection:
|
32
|
+
def self.rbs_defined_const?(name, library: nil, collection: true)
|
31
33
|
return false if name.start_with?("#<")
|
32
34
|
env = rbs_environment(library: library, collection: collection)
|
33
35
|
name = name.sub(/Object::/, '')
|
@@ -35,7 +37,7 @@ module Orthoses
|
|
35
37
|
env.constant_decls.has_key?(target)
|
36
38
|
end
|
37
39
|
|
38
|
-
def self.rbs_defined_class?(name, library: nil, collection:
|
40
|
+
def self.rbs_defined_class?(name, library: nil, collection: true)
|
39
41
|
return false if name.start_with?("#<")
|
40
42
|
env = rbs_environment(library: library, collection: collection)
|
41
43
|
target = rbs_type_name(name)
|
@@ -69,7 +71,7 @@ module Orthoses
|
|
69
71
|
end
|
70
72
|
}.call
|
71
73
|
|
72
|
-
def self.rbs_environment(library: nil, collection:
|
74
|
+
def self.rbs_environment(library: nil, collection: true, cache: true)
|
73
75
|
@env_cache ||= {}
|
74
76
|
if cache && hit = @env_cache[[library, collection]]
|
75
77
|
return hit
|
@@ -188,7 +190,7 @@ module Orthoses
|
|
188
190
|
else
|
189
191
|
raise TypeError
|
190
192
|
end
|
191
|
-
rbs_environment
|
193
|
+
rbs_environment.class_decls[type_name]&.then do |entry|
|
192
194
|
entry.decls.first.decl.type_params
|
193
195
|
end
|
194
196
|
end
|
data/lib/orthoses/version.rb
CHANGED
data/lib/orthoses.rb
CHANGED
@@ -3,33 +3,31 @@
|
|
3
3
|
require 'rbs'
|
4
4
|
require 'pathname'
|
5
5
|
|
6
|
-
require_relative 'orthoses/attribute'
|
7
|
-
require_relative 'orthoses/builder'
|
8
|
-
require_relative 'orthoses/call_tracer'
|
9
|
-
require_relative 'orthoses/constant'
|
10
|
-
require_relative 'orthoses/content'
|
11
|
-
require_relative 'orthoses/create_file_by_name'
|
12
|
-
require_relative 'orthoses/delegate_class'
|
13
|
-
require_relative 'orthoses/filter'
|
14
|
-
require_relative 'orthoses/mixin'
|
15
|
-
require_relative 'orthoses/load_rbs'
|
16
|
-
require_relative 'orthoses/object_space_all'
|
17
|
-
require_relative 'orthoses/outputable'
|
18
|
-
require_relative 'orthoses/path_helper'
|
19
|
-
require_relative 'orthoses/pp'
|
20
|
-
require_relative 'orthoses/rbs_prototype_rb'
|
21
|
-
require_relative 'orthoses/rbs_prototype_runtime'
|
22
|
-
require_relative 'orthoses/store'
|
23
|
-
require_relative 'orthoses/tap'
|
24
|
-
require_relative 'orthoses/autoload'
|
25
|
-
require_relative 'orthoses/utils'
|
26
|
-
require_relative 'orthoses/version'
|
27
|
-
require_relative 'orthoses/walk'
|
28
|
-
require_relative 'orthoses/writer'
|
29
|
-
|
30
6
|
module Orthoses
|
31
|
-
|
7
|
+
autoload :Attribute, 'orthoses/attribute'
|
8
|
+
autoload :Builder, 'orthoses/builder'
|
9
|
+
autoload :CallTracer, 'orthoses/call_tracer'
|
10
|
+
autoload :Constant, 'orthoses/constant'
|
11
|
+
autoload :Content, 'orthoses/content'
|
12
|
+
autoload :CreateFileByName, 'orthoses/create_file_by_name'
|
13
|
+
autoload :DelegateClass, 'orthoses/delegate_class'
|
14
|
+
autoload :Filter, 'orthoses/filter'
|
15
|
+
autoload :Mixin, 'orthoses/mixin'
|
32
16
|
autoload :LazyTracePoint, 'orthoses/lazy_trace_point'
|
17
|
+
autoload :LoadRBS, 'orthoses/load_rbs'
|
18
|
+
autoload :ObjectSpaceAll, 'orthoses/object_space_all'
|
19
|
+
autoload :Outputable, 'orthoses/outputable'
|
20
|
+
autoload :PathHelper, 'orthoses/path_helper'
|
21
|
+
autoload :PP, 'orthoses/pp'
|
22
|
+
autoload :RBSPrototypeRB, 'orthoses/rbs_prototype_rb'
|
23
|
+
autoload :RBSPrototypeRuntime, 'orthoses/rbs_prototype_runtime'
|
24
|
+
autoload :Store, 'orthoses/store'
|
25
|
+
autoload :Tap, 'orthoses/tap'
|
26
|
+
autoload :Autoload, 'orthoses/autoload'
|
27
|
+
autoload :Utils, 'orthoses/utils'
|
28
|
+
autoload :VERSION, 'orthoses/version'
|
29
|
+
autoload :Walk, 'orthoses/walk'
|
30
|
+
autoload :Writer, 'orthoses/writer'
|
33
31
|
|
34
32
|
METHOD_METHOD = ::Kernel.instance_method(:method)
|
35
33
|
INSTANCE_METHOD_METHOD = ::Module.instance_method(:instance_method)
|
data/sig/orthoses.rbs
CHANGED
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: 1.
|
4
|
+
version: 1.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-
|
11
|
+
date: 2022-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbs
|
@@ -60,6 +60,7 @@ files:
|
|
60
60
|
- lib/orthoses/object_space_all.rb
|
61
61
|
- lib/orthoses/outputable.rb
|
62
62
|
- lib/orthoses/outputable/avoid_recursive_ancestor_error.rb
|
63
|
+
- lib/orthoses/outputable/uniq_content_body.rb
|
63
64
|
- lib/orthoses/path_helper.rb
|
64
65
|
- lib/orthoses/pp.rb
|
65
66
|
- lib/orthoses/rbs_prototype_rb.rb
|
@@ -67,6 +68,7 @@ files:
|
|
67
68
|
- lib/orthoses/store.rb
|
68
69
|
- lib/orthoses/tap.rb
|
69
70
|
- lib/orthoses/utils.rb
|
71
|
+
- lib/orthoses/utils/underscore.rb
|
70
72
|
- lib/orthoses/version.rb
|
71
73
|
- lib/orthoses/walk.rb
|
72
74
|
- lib/orthoses/writer.rb
|
@@ -103,6 +105,7 @@ files:
|
|
103
105
|
- sig/orthoses/object_space_all.rbs
|
104
106
|
- sig/orthoses/outputable.rbs
|
105
107
|
- sig/orthoses/outputable/avoid_recursive_ancestor_error.rbs
|
108
|
+
- sig/orthoses/outputable/uniq_content_body.rbs
|
106
109
|
- sig/orthoses/path_helper.rbs
|
107
110
|
- sig/orthoses/pp.rbs
|
108
111
|
- sig/orthoses/rbs_prototype_rb.rbs
|
@@ -110,6 +113,7 @@ files:
|
|
110
113
|
- sig/orthoses/store.rbs
|
111
114
|
- sig/orthoses/tap.rbs
|
112
115
|
- sig/orthoses/utils.rbs
|
116
|
+
- sig/orthoses/utils/underscore.rbs
|
113
117
|
- sig/orthoses/walk.rbs
|
114
118
|
- sig/orthoses/writer.rbs
|
115
119
|
homepage: https://github.com/ksss/orthoses
|
@@ -133,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
137
|
- !ruby/object:Gem::Version
|
134
138
|
version: '0'
|
135
139
|
requirements: []
|
136
|
-
rubygems_version: 3.
|
140
|
+
rubygems_version: 3.3.16
|
137
141
|
signing_key:
|
138
142
|
specification_version: 4
|
139
143
|
summary: Framework for Generate RBS
|