Sha256: 3c6a635a574366fe5c3fcce2251d30112216a498cc62d3bdd7926965f96b134e

Contents?: true

Size: 1.25 KB

Versions: 13

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

module Orthoses
  module ActiveSupport
    # <= 6.1
    #   def config_accessor(*names, instance_reader: true, instance_writer: true, instance_accessor: true)
    # >= 7
    #   def config_accessor(*names, instance_reader: true, instance_writer: true, instance_accessor: true, default: nil)
    class Configurable
      def initialize(loader)
        @loader = loader
      end

      def call
        config_accessor = CallTracer::Lazy.new

        store = config_accessor.trace('ActiveSupport::Configurable::ClassMethods#config_accessor') do
          @loader.call
        end
        config_accessor.captures.each do |capture|
          mod_name = Utils.module_name(capture.method.receiver) or next
          content = store[mod_name]
          capture.argument[:names].each do |name|
            content << "def self.#{name}: () -> untyped"
            content << "def self.#{name}=: (untyped value) -> untyped"
            if capture.argument[:instance_accessor]
              content << "def #{name}: () -> untyped" if capture.argument[:instance_reader]
              content << "def #{name}=: (untyped value) -> untyped" if capture.argument[:instance_writer]
            end
          end
        end

        store
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
orthoses-rails-1.8.1 lib/orthoses/active_support/configurable.rb
orthoses-rails-1.8.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-1.7.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-1.6.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-1.5.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-1.4.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-1.3.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-1.2.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-1.1.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-1.0.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-0.9.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-0.8.0 lib/orthoses/active_support/configurable.rb
orthoses-rails-0.7.0 lib/orthoses/active_support/configurable.rb