webget-email_address_pattern_match_validation 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,78 @@
1
+ # = EmailAddressPatternMatchValidation
2
+ #
3
+ # Author:: Joel Parker Henderson, joelparkerhenderson@gmail.com
4
+ # Copyright:: Copyright (c) 2006-2008 Joel Parker Henderson
5
+ # License:: CreativeCommons License, Non-commercial Share Alike
6
+ # License:: LGPL, GNU Lesser General Public License
7
+ #
8
+ # Email address regex, to validate an email address using RFC 822.
9
+ #
10
+ # This is a gem wrapper around http://tfletcher.com/lib/rfc822.rb
11
+ #
12
+ # ==Example
13
+ # if EmailAddressPattern=~'foo@bar.com'
14
+ # puts "found"
15
+ # else
16
+ # puts "not found"
17
+ # end
18
+ # => found
19
+ #
20
+ # To find an email address in a string, do the pattern match
21
+ # then use the result, which is the match's string position:
22
+ #
23
+ # ==Example of match position
24
+ # match_position = EmailAddressPattern=~'foo@bar.com'
25
+ # => 0
26
+ #
27
+ # match_position = EmailAddressPattern=~'... foo@bar.com ...'
28
+ # => 4
29
+ #
30
+ # match_position = EmailAddressPattern=~'... hello world ...'
31
+ # => nil
32
+ #
33
+ # To do an exact pattern match, use the EmailAddressExactPattern.
34
+ # This matches the entire string from start to end; in other words,
35
+ # the entire string must be one email address.
36
+ #
37
+ # ==Example of exact pattern match
38
+ # if EmailAddressExactPattern=~'foo@bar.com'
39
+ # puts "found"
40
+ # else
41
+ # puts "not found"
42
+ # end
43
+ # => found
44
+ #
45
+ # if EmailAddressExactPattern=~'... foo@bar.com ...'
46
+ # puts "found"
47
+ # else
48
+ # puts "not found"
49
+ # end
50
+ # => not found
51
+ #
52
+ # The exact pattern is especialy useful to validate an email address.
53
+ #
54
+ # ==Example to validate an email address
55
+ # def valid?(email_address)
56
+ # EmailAddressExactPattern=~email_address ? true : false
57
+ # end
58
+ ##
59
+
60
+ module EmailAddressPatternMatchValidation
61
+
62
+ EmailAddressQText = '[^\\x0d\\x22\\x5c\\x80-\\xff]'
63
+ EmailAddressDText = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'
64
+ EmailAddressAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'
65
+ EmailAddressQuotedPair = '\\x5c[\\x00-\\x7f]'
66
+ EmailAddressDomainLiteral = "\\x5b(?:#{EmailAddressDText}|#{EmailAddressQuotedPair})*\\x5d"
67
+ EmailAddressQuotedString = "\\x22(?:#{EmailAddressQText}|#{EmailAddressQuotedPair})*\\x22"
68
+ EmailAddressDomainRef = EmailAddressAtom
69
+ EmailAddressSubDomain = "(?:#{EmailAddressDomainRef}|#{EmailAddressDomainLiteral})"
70
+ EmailAddressWord = "(?:#{EmailAddressAtom}|#{EmailAddressQuotedString})"
71
+ EmailAddressDomain = "#{EmailAddressSubDomain}(?:\\x2e#{EmailAddressSubDomain})*"
72
+ EmailAddressLocalPart = "#{EmailAddressWord}(?:\\x2e#{EmailAddressWord})*"
73
+ EmailAddressSpec = "#{EmailAddressLocalPart}\\x40#{EmailAddressDomain}"
74
+
75
+ EmailAddressPattern = /#{EmailAddressSpec}/
76
+ EmailAddressExactPattern = /\A#{EmailAddressSpec}\z/
77
+
78
+ end
@@ -0,0 +1,37 @@
1
+ require 'test/unit'
2
+ require 'email_address_pattern_match_validation'
3
+
4
+ class EmailAddressPatternMatchValidationTest < Test::Unit::TestCase
5
+
6
+ include EmailAddressPatternMatchValidation
7
+
8
+ def test_pattern_success
9
+ assert_equal(0,EmailAddressPattern=~'foo@bar.com')
10
+ end
11
+
12
+ def test_pattern_failure
13
+ assert_equal(nil,EmailAddressPattern=~'foo')
14
+ end
15
+
16
+ def test_pattern_chaff_success
17
+ assert_equal(4,EmailAddressPattern=~'... foo@bar.com ...')
18
+ end
19
+
20
+ def test_pattern_chaff_failure
21
+ assert_equal(nil,EmailAddressPattern=~'... foo ...')
22
+ end
23
+
24
+ def test_exact_pattern_success
25
+ assert_equal(0,EmailAddressExactPattern=~'foo@bar.com')
26
+ end
27
+
28
+ def test_exact_pattern_failure_due_to_left_chaff
29
+ assert_equal(nil,EmailAddressExactPattern=~'... foo@bar.com')
30
+ end
31
+
32
+ def test_exact_pattern_failure_due_to_right_chaff
33
+ assert_equal(nil,EmailAddressExactPattern=~'foo@bar.com ...')
34
+ end
35
+
36
+ end
37
+
metadata ADDED
@@ -0,0 +1,53 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: webget-email_address_pattern_match_validation
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - WebGet
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-05 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: webget@webget.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/email_address_pattern_match_validation.rb
26
+ has_rdoc: true
27
+ homepage: http://webget.com/
28
+ post_install_message:
29
+ rdoc_options: []
30
+
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: "0"
38
+ version:
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ requirements: []
46
+
47
+ rubyforge_project:
48
+ rubygems_version: 1.2.0
49
+ signing_key:
50
+ specification_version: 2
51
+ summary: Validate an email address using RFC 822 pattern match regex regular expressions
52
+ test_files:
53
+ - test/unit/email_address_pattern_match_validation_test.rb