Class: HasConfig::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/has_config/configuration.rb

Constant Summary collapse

CHAINING_OPTIONS =
%i(blank nil false).freeze
MODIFIABLE_ATTRS =
%i(chain_on default validations).freeze
VALID_TYPES =
%i(string integer boolean).freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, type: nil, default: nil, validations: [], chain_on: :blank) ⇒ Configuration

Returns a new instance of Configuration.

Raises:



19
20
21
22
23
24
25
26
27
28
# File 'lib/has_config/configuration.rb', line 19

def initialize(name, type: nil, default: nil, validations: [], chain_on: :blank)
  raise InvalidType, 'Type is required' if type.nil?

  @chain_on     = chain_on.to_sym
  @default      = default
  @name         = name.to_s
  @type         = type.to_sym
  @validations  = [validations].flatten
  validate
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/has_config/configuration.rb', line 7

def name
  @name
end

#typeObject (readonly)

Returns the value of attribute type.



7
8
9
# File 'lib/has_config/configuration.rb', line 7

def type
  @type
end

Class Method Details

.modify(configuration, config) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/has_config/configuration.rb', line 10

def self.modify(configuration, config)
  configuration = configuration.dup
  MODIFIABLE_ATTRS.each do |key|
    configuration.public_send("#{key}=", config[key]) if config.key?(key)
  end
  configuration.validate
  configuration
end

Instance Method Details

#validateObject



30
31
32
33
# File 'lib/has_config/configuration.rb', line 30

def validate
  validate_configuration
  validate_chain_on
end