Module: Julewire::Core::Integration::Settings::ClassMethods

Defined in:
lib/julewire/core/integration/settings.rb

Instance Method Summary collapse

Instance Method Details

#byte_limitObject



28
29
30
# File 'lib/julewire/core/integration/settings.rb', line 28

def byte_limit
  proc { |value, name| Core::Validation.validate_byte_limit!(value, name: name) }
end

#integer_limit(positive: false) ⇒ Object



32
33
34
# File 'lib/julewire/core/integration/settings.rb', line 32

def integer_limit(positive: false)
  proc { |value, name| Core::Validation.validate_integer_limit!(value, name: name, positive: positive) }
end

#setting(name, default: nil, predicate: false, validate: nil, &block) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/julewire/core/integration/settings.rb', line 15

def setting(name, default: nil, predicate: false, validate: nil, &block)
  settings_defaults[name] = block || proc { default }
  settings_validators[name] = validate if validate
  ivar = :"@#{name}"

  define_method(name) { instance_variable_get(ivar) }
  define_method(:"#{name}=") do |value|
    instance_variable_set(ivar, validate_setting(name, value))
  end

  define_method(:"#{name}?") { !!public_send(name) } if predicate
end

#settings_defaultsObject



36
37
38
# File 'lib/julewire/core/integration/settings.rb', line 36

def settings_defaults
  @settings_defaults ||= {}
end

#settings_validatorsObject



40
41
42
# File 'lib/julewire/core/integration/settings.rb', line 40

def settings_validators
  @settings_validators ||= {}
end