Sha256: f8ad9080e3f46b5d0819f5f0701f1429914adb3b1d1d50af9a48c26eb168f225
Contents?: true
Size: 1.3 KB
Versions: 4
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true module Orthoses module ActiveSupport class Concern def initialize(loader) @loader = loader end def call lazy_tracer = Orthoses::CallTracer::Lazy.new store = lazy_tracer.trace('ActiveSupport::Concern#class_methods') do @loader.call end lazy_tracer.captures.each do |capture| receiver_name = Orthoses::Utils.module_name(capture.method.receiver) next unless receiver_name class_methods_name = "#{receiver_name}::ClassMethods" members = members_prototype_of(class_methods_name) writer = ::RBS::Writer.new(out: StringIO.new) members.each do |member| writer.write_member(member) end out = writer.out # NOTE: Should I remove the method that is accidentally added in prototype rb? store[class_methods_name].concat(out.string.each_line.to_a) end store end def members_prototype_of(mod_name) mod = Object.const_get(mod_name) runtime = ::RBS::Prototype::Runtime.new(patterns: nil, env: nil, merge: false) type_name = TypeName(mod_name) [].tap do |members| runtime.generate_methods(mod, type_name, members) end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems