Skip to content

HernanRivasAcosta/validerl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

validerl

Erlang input validation and normalization utilities

Contact Us

If you find any bugs or have a problem while using this library, please open an issue in this repo (or a pull request :)).

And you can check all of our open-source projects at inaka.github.io.

Usage

Simply call the funtions in the validerl module, you can validate multiple types

  • Boolean validation (accepts 1, 0 or lowercase strings and binaries)

    validerl:get_value(<<"true">>, boolean). % {ok, true}
    validerl:get_value(0, boolean).          % {ok, false}
    validerl:get_value("garbage", boolean).  % {error, {invalid_boolean, "garbage"}}
  • Binary validation (accepts lists, binaries and atoms, does not handle UTF8)

    validerl:get_value(<<"valid bin">>, binary). % {ok, <<"valid bin">>}
    validerl:get_value(some_atom, binary).       % {ok, <<"some_atom">>}
    validerl:get_value("a string", binary).      % {ok, <<"a string">>}
    validerl:get_value({a, tuple}, binary).      % {error, {invalid_binary, {a, tuple}}}
  • String validation (same as binary validation but returns strings, does not allow UTF8)

    validerl:get_value(<<"valid bin">>, string). % {ok, "valid bin"}
    validerl:get_value(some_atom, string).       % {ok, "some_atom"}
    validerl:get_value("a string", string).      % {ok, "a string"}
    validerl:get_value({a, tuple}, string).      % {error, {invalid_string, {a, tuple}}}
  • Integer validation (accepts integers and both strings and binaries containing a valid integer)

    validerl:get_value(<<"322">>, integer).   % {ok, 322}
    validerl:get_value(123, integer).         % {ok, 123}
    validerl:get_value("6422", integer).      % {ok, 6422}
    validerl:get_value("not valid", integer). % {error, {invalid_integer, "not valid"}}
  • Integer validation with range (same as the integer validation, but checks bounds, interprets 'undefined' as no bounds)

    validerl:get_value(123, {integer, {0, 1000}}).       % {ok, 123}
    validerl:get_value(1232, {integer, {0, 1000}}).      % {error, {out_of_valid_range, 1232}}
    validerl:get_value(123, {integer, {0, undefined}}).  % {ok, 123}
    validerl:get_value(1232, {integer, {0, undefined}}). % {ok, 1232}
    validerl:get_value(-10, {integer, {0, undefined}}).  % {error, {out_of_valid_range, -10}}
  • Atom validation (same as the string or binary validation)

    validerl:get_value(<<"valid bin">>, atom). % {ok, 'valid bin'}
    validerl:get_value(some_atom, atom).       % {ok, some_atom}
    validerl:get_value("string", atom).        % {ok, string}
    validerl:get_value({a, tuple}, atom).      % {error, {invalid_atom, {a, tuple}}}
  • Tuple validation (validates a N-uple of any valid types)

    validerl:get_value({321, "true"}, {integer, boolean}).        % {ok, {321, true}}
    validerl:get_value({321, "true", other}, {integer, boolean}). % {error, {bad_arity, 3}}
  • List validation (validates a list of items of any other type)

    validerl:get_value([1, <<"2">>, 3, "4"], [integer]). % {ok, [1, 2, 3, 4]}
    validerl:get_value([1, 2, 3, other], [integer]).     % {error, {invalid_integer, other}
  • Function validation (uses a function to validate the value)

    validerl:get_value(custom_value, {module, function}).
    % Assumes the function called is 'validate/1'
    validerl:get_value(custom_value, module).
    % The function will be called with 'Args ++ [custom_value]' as arguments
    validerl:get_value(custom_value, {module, function, Args}).
    validerl:get_value(custom_value, SomeFun).

About

Erlang input validation and normalization utilities

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages