data_type_validator
Simple DSL for datatype validation for basic data types. Inspired from GRPC DSL. The purpose of this library is strictly not for application validations like email, pattern matching. This is purely for datatype matching. Since ruby is dynamic language, usecases where strict datatypes should be enforced this library will be helpful.
installation
gem install data_type_validator
Usage
Structure Definition
class Custom < DataTypeValidator::CustomContainer
attribute_def :string_attr, :string
attribute_def :integer_attr, :integer
attribute_def :float_attr, :float
attribute_def :boolean_attr, :boolean
end
Validations
return true if valid
throws exception DataTypeValidator::Errors::InvalidTypeDefinitions if invalid
Custom.validate({ string_attr: "1", integer_attr: 1, float_attr: 1.21, boolean_attr: true })
attribute_def
> attribute_def :name(attribute key), :type(data_type)
> valid types are :string, :integer, :float, :boolean, DataTypeValidator::CustomContainer
Array attribute Definition
class Custom < DataTypeValidator::CustomContainer
array_attribute_def :array_attr, :string
end
invocation
Custom.validate({ array_attr: ["1", "2"] })
Nested hash attribute definition
class NestedCustom < DataTypeValidator::CustomContainer
attribute_def :string_attr, :string
end
class Custom < DataTypeValidator::CustomContainer
attribute_def :nested_attr, NestedCustom.type_alias
array_attribute_def :array_attr, :string
end
invocation
Custom.validate({ array_attr: ["1", "2"], nested_attr: { string_attr: "1" } })
NOTES
- Does not support inheritance. always inherit from DataTypeValidator::CustomContainer.
- The purpose of this library is only type validation. We intended to avoid multilevel inheritance, other complex patterns.
- We follow GRPC DSL. Neat and clean.