Sha256: 4a0fdee66bff5210f949a85c677fc102b8aa8f2ecb23330c54c0e08a7f91a0c9

Contents?: true

Size: 890 Bytes

Versions: 5

Compression:

Stored size: 890 Bytes

Contents

# frozen_string_literal: true

module Confset
  # The main configuration backbone
  class Configuration < Module
    # Accepts configuration options,
    # initializing a module that can be used to extend
    # the necessary class with the provided config methods
    def initialize(**attributes)
      attributes.each do |name, default|
        define_reader(name, default)
        define_writer(name)
      end
    end

    private
      def define_reader(name, default)
        variable = :"@#{name}"

        define_method(name) do
          if instance_variable_defined?(variable)
            instance_variable_get(variable)
          else
            default
          end
        end
      end

      def define_writer(name)
        variable = :"@#{name}"

        define_method("#{name}=") do |value|
          instance_variable_set(variable, value)
        end
      end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
confset-1.1.0 lib/confset/configuration.rb
confset-1.0.3 lib/confset/configuration.rb
confset-1.0.2 lib/confset/configuration.rb
confset-1.0.1 lib/confset/configuration.rb
confset-1.0.0 lib/confset/configuration.rb