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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8718c01d3ca0c5ea18285c9082218c526e280626d15da555b17773ec8d582ac3
4
- data.tar.gz: 2541364526894cb9f2870a4a69169418ca57ad042911507bd96557e54df1abfd
3
+ metadata.gz: 0520f0eccc23c9e57186592193f7c30175b59aa1364bcf5de49f1bcbff0a68d5
4
+ data.tar.gz: deaeb9dd3baed337b22a0b6990bbddd98df1c282c1dc6269edeb3a78060abae1
5
5
  SHA512:
6
- metadata.gz: b8dbc5aaeda5a1943a61bfc8b0190994373284e5c4712d2ffe710fe31fe95949406b8d2a3929dfad09b573b14c19d81c7f558cbc7ac197055d128596e2625272
7
- data.tar.gz: 465cff7f5fa29e7b599549a790b85ba1d597e820e6437811ead5e8de031fee797ef07746bba448451b2b73715511e8bd59a65cb8b32bf86ab1d09832a06ac3a7
6
+ metadata.gz: 94037bb0ff51e74b055e8282048d818ca051a102fdcdb16f64dc00c1a83194bcd4a721d68c9dbf43e47a691b66ef7b992b319a69fff4b0afc9374cdf8001d0a2
7
+ data.tar.gz: 27611b811fead68b26ccd941d5111039ad7fddb0fdaad6d0509bf9b5d6bdfc29783daab517a959389a95890eba75ce57b5933a9c26158f17b3a2d8d0ab2948ff
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- orthoses (1.1.0)
4
+ orthoses (1.2.0)
5
5
  rbs (~> 2.0)
6
6
 
7
7
  GEM
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`.
@@ -4,7 +4,7 @@ module Orthoses
4
4
  class DuplicationChecker
5
5
  def initialize(decl, env: nil)
6
6
  @decl = decl
7
- @env = env || Utils.rbs_environment(collection: true)
7
+ @env = env || Utils.rbs_environment
8
8
  end
9
9
 
10
10
  def update_decl
@@ -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(collection: true, cache: false)
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
@@ -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 = [@header]
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(collection: true)
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(Module.new {
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")
@@ -11,6 +11,9 @@ module Orthoses
11
11
 
12
12
  def call
13
13
  @loader.call.tap do |store|
14
+ next if !store.key?("Object")
15
+ next if store["Object"].body.empty?
16
+
14
17
  object_mixins = {}
15
18
  collect_mixin_recursive(store, "Object", object_mixins)
16
19
 
@@ -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
@@ -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
@@ -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: false)
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: false)
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: false, cache: true)
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(collection: true).class_decls[type_name]&.then do |entry|
193
+ rbs_environment.class_decls[type_name]&.then do |entry|
192
194
  entry.decls.first.decl.type_params
193
195
  end
194
196
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Orthoses
4
- VERSION = "1.1.0"
4
+ VERSION = "1.2.0"
5
5
  end
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
- # Use autoload just in case there are side effects.
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)
@@ -0,0 +1,6 @@
1
+ # THIS IS GENERATED CODE from `$ rake generate_self_sig`
2
+
3
+ class Orthoses::Outputable::UniqContentBody
4
+ def initialize: (untyped loader) -> void
5
+ def call: () -> untyped
6
+ end
@@ -0,0 +1,4 @@
1
+ # THIS IS GENERATED CODE from `$ rake generate_self_sig`
2
+
3
+ module Orthoses::Utils::Underscore
4
+ end
data/sig/orthoses.rbs CHANGED
@@ -1,7 +1,7 @@
1
1
  # THIS IS GENERATED CODE from `$ rake generate_self_sig`
2
2
 
3
3
  module Orthoses
4
- VERSION: "1.1.0"
4
+ VERSION: "1.2.0"
5
5
  attr_accessor self.logger: ::Logger
6
6
  type store = Hash[String, Orthoses::Content]
7
7
  INSTANCE_METHOD_METHOD: UnboundMethod
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.1.0
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-09-14 00:00:00.000000000 Z
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.4.0.dev
140
+ rubygems_version: 3.3.16
137
141
  signing_key:
138
142
  specification_version: 4
139
143
  summary: Framework for Generate RBS