Sha256: ee1962123df223aed39fec199a0c26fa8ba93faec47e0d07f35ce2ed9e2ae3f0

Contents?: true

Size: 817 Bytes

Versions: 8

Compression:

Stored size: 817 Bytes

Contents

# frozen_string_literal: true

module RubyLokaliseApi
  module Concerns
    # Allows to set supported attributes for classes
    module AttrsLoadable
      class << self
        def extended(klass)
          klass.class_exec do
            define_method :supported_attrs do
              that_klass = self.class
              that_klass.const_defined?(:ATTRS) ? that_klass.const_get(:ATTRS) : []
            end
          end
        end
      end

      def inherited(subclass)
        klass_attributes = attributes_for subclass, const_get(:ATTRS_FILENAME)

        if klass_attributes&.any?
          subclass.class_exec do
            const_set :ATTRS, klass_attributes
            attr_reader(*klass_attributes)
          end
        end

        super
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ruby-lokalise-api-9.4.0 lib/ruby_lokalise_api/concerns/attrs_loadable.rb
ruby-lokalise-api-9.3.0 lib/ruby_lokalise_api/concerns/attrs_loadable.rb
ruby-lokalise-api-9.2.1 lib/ruby_lokalise_api/concerns/attrs_loadable.rb
ruby-lokalise-api-9.2.0 lib/ruby_lokalise_api/concerns/attrs_loadable.rb
ruby-lokalise-api-9.0.1 lib/ruby_lokalise_api/concerns/attrs_loadable.rb
ruby-lokalise-api-9.0.0 lib/ruby_lokalise_api/concerns/attrs_loadable.rb
ruby-lokalise-api-8.0.1 lib/ruby_lokalise_api/concerns/attrs_loadable.rb
ruby-lokalise-api-8.0.0 lib/ruby_lokalise_api/concerns/attrs_loadable.rb