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.
gem install data_type_validator
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
Custom.validate({ string_attr: "1", integer_attr: 1, float_attr: 1.21, boolean_attr: true })
> attribute_def :name(attribute key), :type(data_type)
> valid types are :string, :integer, :float, :boolean, DataTypeValidator::CustomContainer
class Custom < DataTypeValidator::CustomContainer
array_attribute_def :array_attr, :string
end
Custom.validate({ array_attr: ["1", "2"] })
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
Custom.validate({ array_attr: ["1", "2"], nested_attr: { string_attr: "1" } })
- 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.