# frozen_string_literal: true class Sinclair # Base class for configuration when using {Configurable} # # The methods will be added later by {ConfigFactory} # # The instance variables will be set by {ConfigBuilder} class Config autoload :MethodsBuilder, 'sinclair/config/methods_builder' extend ConfigClass # Return all the current configurations in a hash # # @return [Hash] # # @example Checking all hash/json formats # class LoginConfig < Sinclair::Config # add_configs :password, username: 'bob' # end # # config = LoginConfig.new # # config.to_hash # # returns { 'password' => nil, 'username' => 'bob' } # # config.as_json # # returns { 'password' => nil, 'username' => 'bob' } # # config.to_json # # returns '{"password":null,"username":"bob"}' def to_hash self.class.config_attributes.each_with_object({}) do |attribute, hash| hash[attribute.to_s] = public_send(attribute) end end end end