Skip to content

justinmcp/cana

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cana

License Hex.pm

Cana is a simple email address validator based on RFC3696, RFC5322, RFC5321, Wikipedia and various other reading.

Project goals

Cana is a small, single purpose library, only for email address validation.

Installation

Add cana to your mix.exs.

def deps do
  [
    {:cana, "~> 0.1.0"}
  ]
end

Examples

iex> Cana.validate_email_address("[email protected]")
{:ok, %{domain: "progressiveaspect.com", local: "justin"}}

iex> Cana.validate_email_address("badad\"[email protected]")
{:error, "expected string \"@\" at column: 5"}

Benchmarks

Taken with a teaspoon of salt; test of 10000 items.

Operating System: Linux
CPU Information: Intel(R) Core(TM) i7-4771 CPU @ 3.50GHz
Number of Available Cores: 2
Available memory: 7.75 GB
Elixir 1.10.4
Erlang 23.0.3

Benchmark suite executing with the following configuration:
warmup: 2 s
time: 5 s
memory time: 0 ns
parallel: 1
inputs: none specified
Estimated total run time: 14 s

Benchmarking invalid...
Benchmarking valid...

Name              ips        average  deviation         median         99th %
invalid         19.62       50.97 ms    ±13.79%       48.41 ms       91.28 ms
valid           10.76       92.94 ms    ±11.02%       88.66 ms      123.64 ms

Comparison: 
invalid         19.62
valid           10.76 - 1.82x slower +41.97 ms

License

Copyright (c) 2020 Justin McPherson

This project is licensed under the terms of the MIT license, please see the LICENCE.md file for more details.

About

Cana is a simple email address validator.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages