ruby_email 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 695c3ef1a1b8f15a41b409e40c21a9faf29916cf
4
+ data.tar.gz: 9e4ca4b2e7dd6e295e6e6e883d1873a1b4adbda4
5
+ SHA512:
6
+ metadata.gz: c16f25b5502ac66803ee478512a8e917ab9701c262a2ff6029a126b0cc63803ded73d6fb34bf867a7fc1534e0597742e69145064426a589d8a0715df00d60798
7
+ data.tar.gz: 9be99178fe6a3b6bf55e5ae39fcd02a53fcb66347845d68bbfaf5bccd0a178593a05e84277f7618f4ab185d7418eee5299628f5067289222052d0874ad8ef9a5
checksums.yaml.gz.sig ADDED
Binary file
data/CHANGELOG ADDED
@@ -0,0 +1,14 @@
1
+ v0.1.3
2
+ * Rename the gem to be standard compliant
3
+
4
+ v0.1.2
5
+ * Add documentation
6
+
7
+ v0.1.1
8
+ * Fix readme and changelog
9
+
10
+ v0.1
11
+ * Initialize git
12
+ * Create regexp and basic helpers
13
+ * Gemfile and dependancies
14
+ * Create unitary test (cover 100%)
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'nomorebeer' # action against drunk driving
4
+
data/Gemfile.lock ADDED
@@ -0,0 +1,13 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ nomorebeer (1.1)
5
+
6
+ PLATFORMS
7
+ ruby
8
+
9
+ DEPENDENCIES
10
+ nomorebeer
11
+
12
+ BUNDLED WITH
13
+ 1.11.2
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # A RFC compliant Email validator
2
+
3
+ Compliant to the [rfc 5322](http://www.ietf.org/rfc/rfc5322.txt) standard.
4
+
5
+ ## Usage
6
+
7
+ ```ruby
8
+ require 'ruby_email'
9
+
10
+ "local@domain".is_email? # => true
11
+ RubyEmail.validates? "toto@tata" # => true
12
+ RubyEmail.match "toto@tata" # => #<MatchData "toto@tata" local:"toto" domain:"tata">
13
+ "local".is_email? # => false
14
+ RubyEmail.validates? "toto" # => false
15
+ RubyEmail.match "toto" # => nil
16
+ ```
17
+
18
+ ## Unitary tests
19
+
20
+ ```sh
21
+ rake test
22
+ ```
23
+
24
+ ## Contributes !
25
+
26
+ Find a bug ? Want a new feature ?
27
+ Create a clear pull request and we'll see :)
28
+
29
+ - Nephos (poulet_a)
data/Rakefile ADDED
@@ -0,0 +1,16 @@
1
+ #encoding: utf-8
2
+
3
+ task :default => [:test]
4
+
5
+ task :test do
6
+ ruby "test/unit_test.rb"
7
+ end
8
+
9
+ namespace :test do
10
+
11
+ desc "Unitary tests."
12
+ task :test do
13
+ ruby "test/unit_test.rb"
14
+ end
15
+
16
+ end
data/lib/ruby_email.rb ADDED
@@ -0,0 +1,42 @@
1
+ # http://www.ietf.org/rfc/rfc5322.txt
2
+ module RubyEmail
3
+ # one valid character (not . because used to separe domains)
4
+ ATEXT = '([A-Za-z0-9!#\$%&\'*\+\-/=\?\^_`\{\}\|~])'
5
+ ATOM = "#{ATEXT}+"
6
+ DOT_ATOM_TEXT = "(#{ATOM})(\\.#{ATOM})*"
7
+ # email grammar
8
+ VALIDE = "(?<local>#{DOT_ATOM_TEXT})@(?<domain>#{DOT_ATOM_TEXT})"
9
+ # regexp to validate complete email
10
+ REGEXP = Regexp.new "\\A#{VALIDE}\\Z"
11
+
12
+ # Check if the {::String} is a valid email
13
+ # @param str [::String] string to match
14
+ # @raise [ArgumentError] if str is not a String
15
+ # @return [TrueClass or FalseClass]
16
+ def self.validates? str
17
+ !!match(str)
18
+ end
19
+
20
+ # Check if the string is a valid email and details how
21
+ # @param str [::String] string to match
22
+ # @raise [ArgumentError] if str is not a String
23
+ # @return [MatchData or NilClass] matched email with the keys "local" and "domain"
24
+ def self.match str
25
+ raise ArgumentError, "Cannot validate a `#{str.class}`. Only `String` can be." unless str.is_a?(String)
26
+ str.match(REGEXP)
27
+ end
28
+
29
+ # included by {::String}
30
+ module String
31
+ # Check if the current [::String] instance is a valid email
32
+ # @return [TrueClass or FalseClass]
33
+ def is_email?
34
+ RubyEmail.validates? self
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ class String
41
+ include RubyEmail::String
42
+ end
@@ -0,0 +1,34 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'ruby_email'
3
+ s.version = File.read("version")
4
+ s.date = Time.now.getgm.to_s.split.first
5
+ s.summary = File.read("CHANGELOG").match(/^v[^\n]+\n((\t[^\n]+\n)+)/m)[1].split("\t").join
6
+ s.description = 'A RFC compliant email validator'
7
+ s.authors = ['Nephos (poulet_a)']
8
+ s.email = ['arthur.poulet@mailoo.org']
9
+ s.files = %w(
10
+ lib/ruby_email.rb
11
+
12
+ README.md
13
+ CHANGELOG
14
+
15
+ Rakefile
16
+ Gemfile
17
+ Gemfile.lock
18
+ ruby_email.gemspec
19
+ version
20
+
21
+ test/unit_test.rb
22
+ )
23
+ s.executables = %w(
24
+ )
25
+ s.homepage = 'https://github.com/Nephos/RubyEmail'
26
+ s.license = 'WTFPL'
27
+
28
+ s.cert_chain = ['certs/nephos.pem']
29
+ s.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $0 =~ /gem\z/
30
+
31
+ # s.add_dependency 'nephos', '~> 1.0'
32
+ s.add_dependency 'nomorebeer', '~> 1.1'
33
+
34
+ end
data/test/unit_test.rb ADDED
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "test/unit"
4
+
5
+ require_relative '../lib/ruby_email'
6
+
7
+ class TestRubyEmail < Test::Unit::TestCase
8
+
9
+ def test_simple_true
10
+ assert RubyEmail.validates?("toto@toto")
11
+ assert RubyEmail.validates?("toto@toto.toto")
12
+ assert RubyEmail.validates?("toto@toto.toto.toto")
13
+ assert RubyEmail.validates?("toto@toto.toto.toto.toto")
14
+ end
15
+
16
+ def test_simple_false
17
+ assert !RubyEmail.validates?("t")
18
+ assert !RubyEmail.validates?("t@")
19
+ assert !RubyEmail.validates?("@t")
20
+ end
21
+
22
+ def test_plus_true
23
+ assert RubyEmail.validates?("i'am%toto@here")
24
+ assert RubyEmail.validates?("ich-bin-toto@___")
25
+ assert RubyEmail.validates?("arthur+spam@mail.com")
26
+ end
27
+
28
+ def test_plus_false
29
+ assert !RubyEmail.validates?("i have @ some things")
30
+ assert !RubyEmail.validates?("toto;toto@toto;toto")
31
+ assert !RubyEmail.validates?("toto,toto@toto,toto")
32
+ assert !RubyEmail.validates?("toto()toto@toto()toto")
33
+ assert !RubyEmail.validates?("toto[]toto@toto[]toto")
34
+ assert !RubyEmail.validates?("toto:toto@toto:toto")
35
+ assert !RubyEmail.validates?("toto<>toto@toto<>toto")
36
+ assert !RubyEmail.validates?("toto\\toto@toto\\toto")
37
+ assert !RubyEmail.validates?("toto\"toto@toto\"toto")
38
+ end
39
+
40
+ def test_match
41
+ m = RubyEmail.match "toto@toto.toto.toto.toto"
42
+ assert m.names & %w(local domain)
43
+ assert_equal "toto", m["local"]
44
+ assert_equal "toto.toto.toto.toto", m["domain"]
45
+ end
46
+
47
+ def test_string
48
+ assert !"toto".is_email?
49
+ assert "toto@toto".is_email?
50
+ end
51
+
52
+ def test_exceptions
53
+ assert_raise { RubyEmail.match 1 }
54
+ assert_raise { RubyEmail.validates? 1.0 }
55
+ assert_raise { RubyEmail.validates? /toto/ }
56
+ assert_raise { RubyEmail.validates? :ok }
57
+ assert_raise { RubyEmail.validates? Class }
58
+ end
59
+
60
+ end
data/version ADDED
@@ -0,0 +1 @@
1
+ 0.1.3
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_email
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - Nephos (poulet_a)
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRYwFAYDVQQDDA1hcnRo
14
+ dXIucG91bGV0MRkwFwYKCZImiZPyLGQBGRYJY3J5cHRvbGFiMRMwEQYKCZImiZPy
15
+ LGQBGRYDbmV0MB4XDTE1MTAwMzIxNTQyMFoXDTE2MTAwMjIxNTQyMFowSDEWMBQG
16
+ A1UEAwwNYXJ0aHVyLnBvdWxldDEZMBcGCgmSJomT8ixkARkWCWNyeXB0b2xhYjET
17
+ MBEGCgmSJomT8ixkARkWA25ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
+ ggEBANnLB9vH7/O0aUWi0f9VtC7F73zMC1OvxDaJq+qIcmGBFiKPOngDCRyKffWf
19
+ A6gyf7VsJAlDVFYoyNw7bzLFjBT9gkb5xmED3Uaxvt8Ax131YvKv0sTsQeiTVHHW
20
+ 1crq7266hW1McrFU2A1uQRV8FHuruUJBuP7UUYK7fZi0barbkdAIb4VvQFZxXByI
21
+ lKdQSuhu8k0RcG1vTACEsQXJIUImc8CWMi8/TG3HidJdASMvIWtV2rNQXlQ+UgIc
22
+ UeHC0p+SNTrc09H6q+5eH8NRYhJ91xKuLXv7NNy8M3quAMHcQ1GM6DWljc+Jc4cm
23
+ uAPQMYJf7Vy6OzWLoEiv2QU6sE0CAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
+ DwQEAwIEsDAdBgNVHQ4EFgQU08cDEZOTZNjP/0+E2unJWyw4NzQwJgYDVR0RBB8w
25
+ HYEbYXJ0aHVyLnBvdWxldEBjcnlwdG9sYWIubmV0MCYGA1UdEgQfMB2BG2FydGh1
26
+ ci5wb3VsZXRAY3J5cHRvbGFiLm5ldDANBgkqhkiG9w0BAQUFAAOCAQEAo60BuRZM
27
+ 5Vtn0H0kHHTPiXz09lwxx4cFpTqrTTM0T6qM3gKsR5eLyR1Rt5hGmYLPgY4ZW4zI
28
+ XcuDbgRJrczZs7AZNy5NXyVWpxCwkZzklpbGTuYQdFz7mKfVyALjLjrilOIktXcz
29
+ PvB7EoLlqYvq9cnwV3WE1MkRcBd07xpofcp0kxae2dCOZPUq24TcNaRe7Utw6jjA
30
+ iL0bcH7zZkzMsNoNpPAgsd3ovU4Mf9M+A3M8COmd7KzKyZ0k7P12u5InPWUsNQS2
31
+ tcYkgfqUJPitIJx1RvWZpIyH5uJhRUYK3+vU9nMOxez5WbIlC1TtpByKAPMX+sht
32
+ gib3AoIT8jh/2w==
33
+ -----END CERTIFICATE-----
34
+ date: 2016-04-29 00:00:00.000000000 Z
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: nomorebeer
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.1'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.1'
50
+ description: A RFC compliant email validator
51
+ email:
52
+ - arthur.poulet@mailoo.org
53
+ executables: []
54
+ extensions: []
55
+ extra_rdoc_files: []
56
+ files:
57
+ - CHANGELOG
58
+ - Gemfile
59
+ - Gemfile.lock
60
+ - README.md
61
+ - Rakefile
62
+ - lib/ruby_email.rb
63
+ - ruby_email.gemspec
64
+ - test/unit_test.rb
65
+ - version
66
+ homepage: https://github.com/Nephos/RubyEmail
67
+ licenses:
68
+ - WTFPL
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.5.1
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: "* Initialize git"
90
+ test_files: []
91
+ has_rdoc:
metadata.gz.sig ADDED
Binary file