Class: Axlsx::DataTypeValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/axlsx/util/validators.rb

Overview

Validate that the class of the value provided is either an instance or the class of the allowed types and that any specified additional validation returns true.

Class Method Summary collapse

Class Method Details

.validate(name, types, v, other = lambda{|arg| true }) ⇒ Boolean

Perform validation

Parameters:

  • name (String)

    The name of what is being validated. This is included in the error message

  • types (Array, Class)

    A single class or array of classes that the value is validated against.

  • other (Block) (defaults to: lambda{|arg| true })

    Any block that must evaluate to true for the value to be valid

Returns:

  • (Boolean)

    true if validation succeeds.

Raises:

  • (ArugumentError)

    Raised if the class of the value provided is not in the specified array of types or the block passed returns false

See Also:



35
36
37
38
39
40
41
42
43
44
# File 'lib/axlsx/util/validators.rb', line 35

def self.validate(name, types, v, other= lambda{|arg| true })
  types = [types] unless types.is_a? Array
  valid_type = false
  if v.class == Class
    types.each { |t| valid_type = true if v.ancestors.include?(t) }
  else
    types.each { |t| valid_type = true if v.is_a?(t) }
  end
  raise ArgumentError, (ERR_TYPE % [v.inspect, name, types.inspect]) unless (other.call(v) && valid_type)
end