Module: Otoroshi::Sanctuary::ClassMethods

Defined in:
lib/otoroshi/sanctuary.rb

Overview

Class methods extended for the base class

Instance Method Summary collapse

Instance Method Details

#collection?(type) ⇒ true, false

Checks the type is an array

Parameters:

  • type (Class, Array<Class>)

    the tested type

Returns:

  • (true, false)


68
69
70
# File 'lib/otoroshi/sanctuary.rb', line 68

def collection?(type)
  type == Array || type.is_a?(Array)
end

#propertiesHash

Note:

this method will be updated by #add_to_properties

Returns the class properties

Returns:

  • (Hash)


77
78
79
# File 'lib/otoroshi/sanctuary.rb', line 77

def properties
  {}
end

#property(name, type = Object, one_of: nil, assert: ->(_) { true }, allow_nil: false, default: nil) ⇒ void

This method returns an undefined value.

Adds a new “property” to the class

Examples:

property name, type: String, assert: ->(v) { v.length > 3 }, allow_nil: true
property scores, type: [Integer], assert: ->(v) { v >= 0 }, default: []

Parameters:

  • name (Symbol)

    the property name

  • type (Class, Array<Class>) (defaults to: Object)

    the expected value or values type

  • one_of (Array) (defaults to: nil)

    the accepted values

  • assert (Proc) (defaults to: ->(_) { true })

    a lambda processing the value and returning true or false

  • allow_nil (true, false) (defaults to: false)

    allow nil as a value

  • default (Object) (defaults to: nil)

    default value if not set on initialization



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/otoroshi/sanctuary.rb', line 46

def property( # rubocop:disable Metrics/ParameterLists
  name,
  type = Object,
  one_of: nil,
  assert: ->(_) { true },
  allow_nil: false,
  default: nil
)
  add_to_properties(name, type, one_of, assert, allow_nil, default)
  define_validate_type!(name, type, allow_nil)
  define_validate_inclusion!(name, type, one_of, allow_nil)
  define_validate_assertion!(name, type, assert, allow_nil)
  define_getter(name)
  define_setter(name)
  redefine_initialize
end