Module: Castkit::Core::Config

Included in:
Castkit::Contract::Base, DataObject
Defined in:
lib/castkit/core/config.rb

Overview

Provides per-class configuration for a Castkit::DataObject, including root key handling, strict mode, and unknown key behavior.

Instance Method Summary collapse

Instance Method Details

#allow_unknown(value = nil) ⇒ Boolean?

Sets or retrieves whether to allow unknown keys when they are encountered.

Parameters:

  • value (Boolean, nil) (defaults to: nil)

Returns:

  • (Boolean, nil)


45
46
47
# File 'lib/castkit/core/config.rb', line 45

def allow_unknown(value = nil)
  value.nil? ? @allow_unknown : (@allow_unknown = value)
end

#ignore_unknown(value = nil) ⇒ void

This method returns an undefined value.

Enables or disables ignoring unknown keys during deserialization.

This is the inverse of ‘strict`.

Parameters:

  • value (Boolean) (defaults to: nil)


29
30
31
# File 'lib/castkit/core/config.rb', line 29

def ignore_unknown(value = nil)
  @strict = !value
end

#relaxed(warn_on_unknown: true) ⇒ Class

Returns a relaxed version of the current class with strict mode off.

Useful for tolerant parsing scenarios.

Parameters:

  • warn_on_unknown (Boolean) (defaults to: true)

Returns:

  • (Class)

    a subclass with relaxed rules



55
56
57
58
59
60
# File 'lib/castkit/core/config.rb', line 55

def relaxed(warn_on_unknown: true)
  klass = Class.new(self)
  klass.strict(false)
  klass.warn_on_unknown(warn_on_unknown)
  klass
end

#strict(value = nil) ⇒ Boolean

Sets or retrieves strict mode behavior.

In strict mode, unknown keys during deserialization raise errors. If unset, falls back to ‘Castkit.configuration.strict_by_default`.

Parameters:

  • value (Boolean, nil) (defaults to: nil)

Returns:

  • (Boolean)


15
16
17
18
19
20
21
# File 'lib/castkit/core/config.rb', line 15

def strict(value = nil)
  if value.nil?
    @strict.nil? ? Castkit.configuration.strict_by_default : @strict
  else
    @strict = !!value
  end
end

#validation_rulesHash{Symbol => Boolean}

Returns a hash of config settings used during validation.

Returns:

  • (Hash{Symbol => Boolean})


65
66
67
68
69
70
71
# File 'lib/castkit/core/config.rb', line 65

def validation_rules
  @validation_rules ||= {
    strict: strict,
    allow_unknown: allow_unknown,
    warn_on_unknown: warn_on_unknown
  }
end

#warn_on_unknown(value = nil) ⇒ Boolean?

Sets or retrieves whether to emit warnings when unknown keys are encountered.

Parameters:

  • value (Boolean, nil) (defaults to: nil)

Returns:

  • (Boolean, nil)


37
38
39
# File 'lib/castkit/core/config.rb', line 37

def warn_on_unknown(value = nil)
  value.nil? ? @warn_on_unknown : (@warn_on_unknown = value)
end