Method: Axlsx::DataTypeValidator.validate

Defined in:
lib/axlsx/util/validators.rb

.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