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

#propertiesHash

Class properties

Examples:

{
  number: { type: Integer, allow_nil: false, default: 0 },
  message: { type: Integer, allow_nil: true, default: nil }
}

Returns:

  • (Hash)


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

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
# File 'lib/otoroshi/sanctuary.rb', line 46

def property(name, type = Object, one_of: nil, assert: ->(_) { true }, allow_nil: false, default: nil)
  add_to_properties(name, type, allow_nil, default)
  expected_type = type.is_a?(Array) ? type.first || Object : type
  collection = expected_type == Array || type.is_a?(Array)
  define_validate_type(name, expected_type, collection, allow_nil)
  define_validate_one_of(name, collection, one_of, allow_nil)
  define_validate_assertion(name, collection, assert, allow_nil)
  define_validate(name)
  define_getter(name)
  define_setter(name)
  class_eval Initializer.draw(properties), __FILE__, __LINE__ + 1
end