mail 2.5.5 → 2.6.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.
- checksums.yaml +4 -4
- data/CHANGELOG.rdoc +8 -9
- data/CONTRIBUTING.md +13 -0
- data/Dependencies.txt +0 -1
- data/Gemfile +7 -24
- data/README.md +36 -15
- data/Rakefile +10 -2
- data/VERSION +4 -0
- data/lib/mail.rb +1 -1
- data/lib/mail/body.rb +2 -2
- data/lib/mail/check_delivery_params.rb +10 -47
- data/lib/mail/core_extensions/string.rb +12 -2
- data/lib/mail/elements/address.rb +38 -82
- data/lib/mail/elements/address_list.rb +19 -42
- data/lib/mail/elements/content_disposition_element.rb +3 -7
- data/lib/mail/elements/content_location_element.rb +2 -6
- data/lib/mail/elements/content_transfer_encoding_element.rb +3 -10
- data/lib/mail/elements/content_type_element.rb +4 -8
- data/lib/mail/elements/date_time_element.rb +3 -7
- data/lib/mail/elements/envelope_from_element.rb +3 -11
- data/lib/mail/elements/message_ids_element.rb +1 -6
- data/lib/mail/elements/mime_version_element.rb +3 -7
- data/lib/mail/elements/phrase_list.rb +2 -7
- data/lib/mail/elements/received_element.rb +3 -7
- data/lib/mail/encodings.rb +0 -1
- data/lib/mail/envelope.rb +0 -5
- data/lib/mail/field.rb +53 -17
- data/lib/mail/field_list.rb +18 -18
- data/lib/mail/fields/common/common_address.rb +15 -20
- data/lib/mail/fields/common/common_date.rb +0 -7
- data/lib/mail/fields/common/common_field.rb +1 -1
- data/lib/mail/fields/content_transfer_encoding_field.rb +0 -6
- data/lib/mail/fields/resent_sender_field.rb +1 -1
- data/lib/mail/fields/sender_field.rb +1 -1
- data/lib/mail/fields/unstructured_field.rb +7 -1
- data/lib/mail/header.rb +8 -22
- data/lib/mail/mail.rb +12 -0
- data/lib/mail/matchers/has_sent_mail.rb +34 -1
- data/lib/mail/message.rb +18 -11
- data/lib/mail/multibyte/unicode.rb +1 -1
- data/lib/mail/network/delivery_methods/exim.rb +10 -6
- data/lib/mail/network/delivery_methods/file_delivery.rb +8 -4
- data/lib/mail/network/delivery_methods/sendmail.rb +7 -9
- data/lib/mail/network/delivery_methods/smtp.rb +5 -2
- data/lib/mail/network/delivery_methods/smtp_connection.rb +6 -2
- data/lib/mail/network/delivery_methods/test_mailer.rb +8 -5
- data/lib/mail/network/retriever_methods/imap.rb +18 -13
- data/lib/mail/parsers.rb +26 -0
- data/lib/mail/parsers/address_lists_parser.rb +132 -0
- data/lib/mail/parsers/content_disposition_parser.rb +67 -0
- data/lib/mail/parsers/content_location_parser.rb +35 -0
- data/lib/mail/parsers/content_transfer_encoding_parser.rb +33 -0
- data/lib/mail/parsers/content_type_parser.rb +64 -0
- data/lib/mail/parsers/date_time_parser.rb +36 -0
- data/lib/mail/parsers/envelope_from_parser.rb +45 -0
- data/lib/mail/parsers/message_ids_parser.rb +39 -0
- data/lib/mail/parsers/mime_version_parser.rb +41 -0
- data/lib/mail/parsers/phrase_lists_parser.rb +33 -0
- data/lib/mail/parsers/ragel.rb +17 -0
- data/lib/mail/parsers/ragel/common.rl +184 -0
- data/lib/mail/parsers/ragel/date_time.rl +30 -0
- data/lib/mail/parsers/ragel/parser_info.rb +61 -0
- data/lib/mail/parsers/ragel/ruby.rb +29 -0
- data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb +14864 -0
- data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb +751 -0
- data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb +614 -0
- data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb +447 -0
- data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb +825 -0
- data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb +817 -0
- data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb +2129 -0
- data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb +1570 -0
- data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb +440 -0
- data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb +564 -0
- data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl +51 -0
- data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb +5144 -0
- data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl +37 -0
- data/lib/mail/parsers/ragel/ruby/parser.rb.rl.erb +37 -0
- data/lib/mail/parsers/received_parser.rb +47 -0
- data/lib/mail/parts_list.rb +4 -2
- data/lib/mail/patterns.rb +3 -1
- data/lib/mail/utilities.rb +3 -1
- data/lib/mail/version.rb +1 -1
- data/lib/mail/version_specific/ruby_1_8.rb +1 -1
- data/lib/mail/version_specific/ruby_1_9.rb +13 -1
- metadata +55 -51
- data/lib/VERSION +0 -4
- data/lib/load_parsers.rb +0 -35
- data/lib/mail/parsers/address_lists.rb +0 -64
- data/lib/mail/parsers/address_lists.treetop +0 -19
- data/lib/mail/parsers/content_disposition.rb +0 -535
- data/lib/mail/parsers/content_disposition.treetop +0 -46
- data/lib/mail/parsers/content_location.rb +0 -139
- data/lib/mail/parsers/content_location.treetop +0 -20
- data/lib/mail/parsers/content_transfer_encoding.rb +0 -201
- data/lib/mail/parsers/content_transfer_encoding.treetop +0 -18
- data/lib/mail/parsers/content_type.rb +0 -971
- data/lib/mail/parsers/content_type.treetop +0 -68
- data/lib/mail/parsers/date_time.rb +0 -114
- data/lib/mail/parsers/date_time.treetop +0 -11
- data/lib/mail/parsers/envelope_from.rb +0 -194
- data/lib/mail/parsers/envelope_from.treetop +0 -32
- data/lib/mail/parsers/message_ids.rb +0 -45
- data/lib/mail/parsers/message_ids.treetop +0 -15
- data/lib/mail/parsers/mime_version.rb +0 -144
- data/lib/mail/parsers/mime_version.treetop +0 -19
- data/lib/mail/parsers/phrase_lists.rb +0 -45
- data/lib/mail/parsers/phrase_lists.treetop +0 -15
- data/lib/mail/parsers/received.rb +0 -71
- data/lib/mail/parsers/received.treetop +0 -11
- data/lib/mail/parsers/rfc2045.rb +0 -421
- data/lib/mail/parsers/rfc2045.treetop +0 -35
- data/lib/mail/parsers/rfc2822.rb +0 -5397
- data/lib/mail/parsers/rfc2822.treetop +0 -408
- data/lib/mail/parsers/rfc2822_obsolete.rb +0 -3768
- data/lib/mail/parsers/rfc2822_obsolete.treetop +0 -241
- data/lib/tasks/corpus.rake +0 -125
- data/lib/tasks/treetop.rake +0 -10
@@ -0,0 +1,37 @@
|
|
1
|
+
%%{
|
2
|
+
machine received;
|
3
|
+
|
4
|
+
include rb_actions "rb_actions.rl";
|
5
|
+
include common "../../common.rl";
|
6
|
+
|
7
|
+
getkey data_unpacked[p];
|
8
|
+
|
9
|
+
main := received;
|
10
|
+
}%%
|
11
|
+
|
12
|
+
module Mail
|
13
|
+
module Parsers
|
14
|
+
module Ragel
|
15
|
+
module ReceivedMachine
|
16
|
+
%%write data;
|
17
|
+
|
18
|
+
def self.parse(data)
|
19
|
+
p = 0
|
20
|
+
eof = data.length
|
21
|
+
stack = []
|
22
|
+
|
23
|
+
actions = []
|
24
|
+
data_unpacked = data.bytes.to_a
|
25
|
+
%%write init;
|
26
|
+
%%write exec;
|
27
|
+
|
28
|
+
if p == eof && cs >= %%{ write first_final; }%%
|
29
|
+
return actions, nil
|
30
|
+
else
|
31
|
+
return [], "Only able to parse up to #{data[0..p]}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
%%{
|
2
|
+
machine <%= parser_name %>;
|
3
|
+
|
4
|
+
include rb_actions "rb_actions.rl";
|
5
|
+
include common "../../common.rl";
|
6
|
+
|
7
|
+
getkey data_unpacked[p];
|
8
|
+
|
9
|
+
main := <%= parser_name %>;
|
10
|
+
}%%
|
11
|
+
|
12
|
+
module Mail
|
13
|
+
module Parsers
|
14
|
+
module Ragel
|
15
|
+
module <%= parser_name_cc %>
|
16
|
+
%%write data;
|
17
|
+
|
18
|
+
def self.parse(data)
|
19
|
+
p = 0
|
20
|
+
eof = data.length
|
21
|
+
stack = []
|
22
|
+
|
23
|
+
actions = []
|
24
|
+
data_unpacked = data.bytes.to_a
|
25
|
+
%%write init;
|
26
|
+
%%write exec;
|
27
|
+
|
28
|
+
if p == eof && cs >= %%{ write first_final; }%%
|
29
|
+
return actions, nil
|
30
|
+
else
|
31
|
+
return [], "Only able to parse up to #{data[0..p]}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Mail::Parsers
|
2
|
+
class ReceivedParser
|
3
|
+
|
4
|
+
def parse(s)
|
5
|
+
actions, error = Ragel.parse(:received, s)
|
6
|
+
if error
|
7
|
+
raise Mail::Field::ParseError.new(Mail::ReceivedElement, s, error)
|
8
|
+
end
|
9
|
+
|
10
|
+
received = ReceivedStruct.new
|
11
|
+
|
12
|
+
received_tokens_s = date_s = time_s = nil
|
13
|
+
actions.each_slice(2) do |action_id, p|
|
14
|
+
action = Mail::Parsers::Ragel::ACTIONS[action_id]
|
15
|
+
case action
|
16
|
+
|
17
|
+
# Received Tokens:
|
18
|
+
when :received_tokens_s then received_tokens_s = p
|
19
|
+
when :received_tokens_e
|
20
|
+
received.info = s[received_tokens_s..(p-1)]
|
21
|
+
|
22
|
+
# Date
|
23
|
+
when :date_s then date_s = p
|
24
|
+
when :date_e
|
25
|
+
received.date = s[date_s..(p-1)].strip
|
26
|
+
|
27
|
+
# Time
|
28
|
+
when :time_s then time_s = p
|
29
|
+
when :time_e
|
30
|
+
received.time = s[time_s..(p-1)]
|
31
|
+
|
32
|
+
when :angle_addr_s, :comment_e, :comment_s,
|
33
|
+
:domain_e, :domain_s, :local_dot_atom_e,
|
34
|
+
:local_dot_atom_pre_comment_e,
|
35
|
+
:local_dot_atom_pre_comment_s,
|
36
|
+
:local_dot_atom_s, :qstr_e, :qstr_s,
|
37
|
+
:local_quoted_string_s, :local_quoted_string_e
|
38
|
+
# ignored actions
|
39
|
+
|
40
|
+
else
|
41
|
+
raise Mail::Field::ParseError.new(Mail::ReceivedElement, s, "Failed to process unknown action: #{action}")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
received
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/mail/parts_list.rb
CHANGED
@@ -31,11 +31,13 @@ module Mail
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def sort!(order)
|
34
|
-
|
34
|
+
# stable sort should be used to maintain the relative order as the parts are added
|
35
|
+
i = 0;
|
36
|
+
sorted = self.sort_by do |a|
|
35
37
|
# OK, 10000 is arbitrary... if anyone actually wants to explicitly sort 10000 parts of a
|
36
38
|
# single email message... please show me a use case and I'll put more work into this method,
|
37
39
|
# in the meantime, it works :)
|
38
|
-
get_order_value(a, order)
|
40
|
+
[get_order_value(a, order), i += 1]
|
39
41
|
end
|
40
42
|
self.clear
|
41
43
|
sorted.each { |p| self << p }
|
data/lib/mail/patterns.rb
CHANGED
@@ -20,10 +20,12 @@ module Mail
|
|
20
20
|
FWS = /#{CRLF}#{WSP}*/
|
21
21
|
TEXT = /[#{text}]/ # + obs-text
|
22
22
|
FIELD_NAME = /[#{field_name}]+/
|
23
|
-
|
23
|
+
FIELD_PREFIX = /\A(#{FIELD_NAME})/
|
24
|
+
FIELD_BODY = /.+/m
|
24
25
|
FIELD_LINE = /^[#{field_name}]+:\s*.+$/
|
25
26
|
FIELD_SPLIT = /^(#{FIELD_NAME})\s*:\s*(#{FIELD_BODY})?$/
|
26
27
|
HEADER_LINE = /^([#{field_name}]+:\s*.+)$/
|
28
|
+
HEADER_SPLIT = /#{CRLF}(?!#{WSP})/
|
27
29
|
|
28
30
|
QP_UNSAFE = /[^#{qp_safe}]/
|
29
31
|
QP_SAFE = /[#{qp_safe}]/
|
data/lib/mail/utilities.rb
CHANGED
@@ -21,7 +21,9 @@ module Mail
|
|
21
21
|
original_encoding = str.encoding
|
22
22
|
str.force_encoding('ASCII-8BIT')
|
23
23
|
if (PHRASE_UNSAFE === str)
|
24
|
-
dquote(str).force_encoding(original_encoding)
|
24
|
+
quoted_str = dquote(str).force_encoding(original_encoding)
|
25
|
+
str.force_encoding(original_encoding)
|
26
|
+
quoted_str
|
25
27
|
else
|
26
28
|
str.force_encoding(original_encoding)
|
27
29
|
end
|
data/lib/mail/version.rb
CHANGED
@@ -3,7 +3,7 @@ module Mail
|
|
3
3
|
module VERSION
|
4
4
|
|
5
5
|
version = {}
|
6
|
-
File.read(File.join(File.dirname(__FILE__), '../', 'VERSION')).each_line do |line|
|
6
|
+
File.read(File.join(File.dirname(__FILE__), '../', '../', 'VERSION')).each_line do |line|
|
7
7
|
type, value = line.chomp.split(":")
|
8
8
|
next if type =~ /^\s+$/ || value =~ /^\s+$/
|
9
9
|
version[type] = value
|
@@ -108,6 +108,10 @@ module Mail
|
|
108
108
|
def Ruby19.pick_encoding(charset)
|
109
109
|
case charset
|
110
110
|
|
111
|
+
# ISO-8859-8-I etc. http://en.wikipedia.org/wiki/ISO-8859-8-I
|
112
|
+
when /^iso-?8859-(\d+)(-i)?$/i
|
113
|
+
"ISO-8859-#{$1}"
|
114
|
+
|
111
115
|
# ISO-8859-15, ISO-2022-JP and alike
|
112
116
|
when /iso-?(\d{4})-?(\w{1,2})/i
|
113
117
|
"ISO-#{$1}-#{$2}"
|
@@ -117,7 +121,7 @@ module Mail
|
|
117
121
|
"ISO-#{$1}-#{$2}-#{$3}"
|
118
122
|
|
119
123
|
# UTF-8, UTF-32BE and alike
|
120
|
-
when /utf
|
124
|
+
when /utf[\-_]?(\d{1,2})?(\w{1,2})/i
|
121
125
|
"UTF-#{$1}#{$2}".gsub(/\A(UTF-(?:16|32))\z/, '\\1BE')
|
122
126
|
|
123
127
|
# Windows-1252 and alike
|
@@ -127,6 +131,14 @@ module Mail
|
|
127
131
|
when /^8bit$/
|
128
132
|
Encoding::ASCII_8BIT
|
129
133
|
|
134
|
+
# alternatives/misspellings of us-ascii seen in the wild
|
135
|
+
when /^iso-?646(-us)?$/i, /us=ascii/i
|
136
|
+
Encoding::ASCII
|
137
|
+
|
138
|
+
# Microsoft-specific alias for MACROMAN
|
139
|
+
when /^macintosh$/i
|
140
|
+
Encoding::MACROMAN
|
141
|
+
|
130
142
|
# Microsoft-specific alias for CP949 (Korean)
|
131
143
|
when 'ks_c_5601-1987'
|
132
144
|
Encoding::CP949
|
metadata
CHANGED
@@ -1,43 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikel Lindsaar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mime-types
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.16'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '1.16'
|
27
|
-
-
|
28
|
-
name: treetop
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.4.8
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
30
|
+
- - "<"
|
39
31
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
32
|
+
version: '3'
|
41
33
|
- !ruby/object:Gem::Dependency
|
42
34
|
name: bundler
|
43
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,8 +104,7 @@ files:
|
|
112
104
|
- README.md
|
113
105
|
- Rakefile
|
114
106
|
- TODO.rdoc
|
115
|
-
-
|
116
|
-
- lib/load_parsers.rb
|
107
|
+
- VERSION
|
117
108
|
- lib/mail.rb
|
118
109
|
- lib/mail/attachments_list.rb
|
119
110
|
- lib/mail/body.rb
|
@@ -208,34 +199,47 @@ files:
|
|
208
199
|
- lib/mail/network/retriever_methods/imap.rb
|
209
200
|
- lib/mail/network/retriever_methods/pop3.rb
|
210
201
|
- lib/mail/network/retriever_methods/test_retriever.rb
|
211
|
-
- lib/mail/parsers
|
212
|
-
- lib/mail/parsers/
|
213
|
-
- lib/mail/parsers/
|
214
|
-
- lib/mail/parsers/
|
215
|
-
- lib/mail/parsers/
|
216
|
-
- lib/mail/parsers/
|
217
|
-
- lib/mail/parsers/
|
218
|
-
- lib/mail/parsers/
|
219
|
-
- lib/mail/parsers/
|
220
|
-
- lib/mail/parsers/
|
221
|
-
- lib/mail/parsers/
|
222
|
-
- lib/mail/parsers/
|
223
|
-
- lib/mail/parsers/
|
224
|
-
- lib/mail/parsers/
|
225
|
-
- lib/mail/parsers/
|
226
|
-
- lib/mail/parsers/
|
227
|
-
- lib/mail/parsers/
|
228
|
-
- lib/mail/parsers/
|
229
|
-
- lib/mail/parsers/
|
230
|
-
- lib/mail/parsers/
|
231
|
-
- lib/mail/parsers/
|
232
|
-
- lib/mail/parsers/
|
233
|
-
- lib/mail/parsers/
|
234
|
-
- lib/mail/parsers/
|
235
|
-
- lib/mail/parsers/
|
236
|
-
- lib/mail/parsers/
|
237
|
-
- lib/mail/parsers/
|
238
|
-
- lib/mail/parsers/
|
202
|
+
- lib/mail/parsers.rb
|
203
|
+
- lib/mail/parsers/address_lists_parser.rb
|
204
|
+
- lib/mail/parsers/content_disposition_parser.rb
|
205
|
+
- lib/mail/parsers/content_location_parser.rb
|
206
|
+
- lib/mail/parsers/content_transfer_encoding_parser.rb
|
207
|
+
- lib/mail/parsers/content_type_parser.rb
|
208
|
+
- lib/mail/parsers/date_time_parser.rb
|
209
|
+
- lib/mail/parsers/envelope_from_parser.rb
|
210
|
+
- lib/mail/parsers/message_ids_parser.rb
|
211
|
+
- lib/mail/parsers/mime_version_parser.rb
|
212
|
+
- lib/mail/parsers/phrase_lists_parser.rb
|
213
|
+
- lib/mail/parsers/ragel.rb
|
214
|
+
- lib/mail/parsers/ragel/common.rl
|
215
|
+
- lib/mail/parsers/ragel/date_time.rl
|
216
|
+
- lib/mail/parsers/ragel/parser_info.rb
|
217
|
+
- lib/mail/parsers/ragel/ruby.rb
|
218
|
+
- lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb
|
219
|
+
- lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl
|
220
|
+
- lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb
|
221
|
+
- lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl
|
222
|
+
- lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb
|
223
|
+
- lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl
|
224
|
+
- lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb
|
225
|
+
- lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl
|
226
|
+
- lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb
|
227
|
+
- lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl
|
228
|
+
- lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb
|
229
|
+
- lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl
|
230
|
+
- lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb
|
231
|
+
- lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl
|
232
|
+
- lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb
|
233
|
+
- lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl
|
234
|
+
- lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb
|
235
|
+
- lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl
|
236
|
+
- lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb
|
237
|
+
- lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl
|
238
|
+
- lib/mail/parsers/ragel/ruby/machines/rb_actions.rl
|
239
|
+
- lib/mail/parsers/ragel/ruby/machines/received_machine.rb
|
240
|
+
- lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl
|
241
|
+
- lib/mail/parsers/ragel/ruby/parser.rb.rl.erb
|
242
|
+
- lib/mail/parsers/received_parser.rb
|
239
243
|
- lib/mail/part.rb
|
240
244
|
- lib/mail/parts_list.rb
|
241
245
|
- lib/mail/patterns.rb
|
@@ -244,14 +248,14 @@ files:
|
|
244
248
|
- lib/mail/version.rb
|
245
249
|
- lib/mail/version_specific/ruby_1_8.rb
|
246
250
|
- lib/mail/version_specific/ruby_1_9.rb
|
247
|
-
- lib/tasks/corpus.rake
|
248
|
-
- lib/tasks/treetop.rake
|
249
251
|
homepage: http://github.com/mikel/mail
|
250
252
|
licenses:
|
251
253
|
- MIT
|
252
254
|
metadata: {}
|
253
255
|
post_install_message:
|
254
|
-
rdoc_options:
|
256
|
+
rdoc_options:
|
257
|
+
- "--exclude"
|
258
|
+
- lib/mail/values/unicode_tables.dat
|
255
259
|
require_paths:
|
256
260
|
- lib
|
257
261
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -266,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
266
270
|
version: '0'
|
267
271
|
requirements: []
|
268
272
|
rubyforge_project:
|
269
|
-
rubygems_version: 2.
|
273
|
+
rubygems_version: 2.2.2
|
270
274
|
signing_key:
|
271
275
|
specification_version: 4
|
272
276
|
summary: Mail provides a nice Ruby DSL for making, sending and reading emails.
|
data/lib/VERSION
DELETED
data/lib/load_parsers.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# This file loads up the parsers for mail to use. It also will attempt to compile parsers
|
3
|
-
# if they don't exist.
|
4
|
-
#
|
5
|
-
# It also only uses the compiler if we are running the SPEC suite
|
6
|
-
module Mail # :doc:
|
7
|
-
require 'treetop/runtime'
|
8
|
-
|
9
|
-
def self.compile_parser(parser)
|
10
|
-
require 'treetop/compiler'
|
11
|
-
Treetop.load(File.join(File.dirname(__FILE__)) + "/mail/parsers/#{parser}")
|
12
|
-
end
|
13
|
-
|
14
|
-
parsers = %w[ rfc2822_obsolete rfc2822 address_lists phrase_lists
|
15
|
-
date_time received message_ids envelope_from rfc2045
|
16
|
-
mime_version content_type content_disposition
|
17
|
-
content_transfer_encoding content_location ]
|
18
|
-
|
19
|
-
if defined?(MAIL_SPEC_SUITE_RUNNING)
|
20
|
-
parsers.each do |parser|
|
21
|
-
compile_parser(parser)
|
22
|
-
end
|
23
|
-
|
24
|
-
else
|
25
|
-
parsers.each do |parser|
|
26
|
-
begin
|
27
|
-
require "mail/parsers/#{parser}"
|
28
|
-
rescue LoadError
|
29
|
-
compile_parser(parser)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
# Autogenerated from a Treetop grammar. Edits may be lost.
|
2
|
-
|
3
|
-
|
4
|
-
module Mail
|
5
|
-
module AddressLists
|
6
|
-
include Treetop::Runtime
|
7
|
-
|
8
|
-
def root
|
9
|
-
@root ||= :primary_address
|
10
|
-
end
|
11
|
-
|
12
|
-
include RFC2822
|
13
|
-
|
14
|
-
module PrimaryAddress0
|
15
|
-
def addresses
|
16
|
-
([first_addr] + other_addr.elements.map { |o| o.addr_value }).reject { |e| e.empty? }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
module PrimaryAddress1
|
21
|
-
def addresses
|
22
|
-
[first_addr] + other_addr.elements.map { |o| o.addr_value }
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def _nt_primary_address
|
27
|
-
start_index = index
|
28
|
-
if node_cache[:primary_address].has_key?(index)
|
29
|
-
cached = node_cache[:primary_address][index]
|
30
|
-
if cached
|
31
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
32
|
-
@index = cached.interval.end
|
33
|
-
end
|
34
|
-
return cached
|
35
|
-
end
|
36
|
-
|
37
|
-
i0 = index
|
38
|
-
r1 = _nt_address_list
|
39
|
-
r1.extend(PrimaryAddress0)
|
40
|
-
if r1
|
41
|
-
r0 = r1
|
42
|
-
else
|
43
|
-
r2 = _nt_obs_addr_list
|
44
|
-
r2.extend(PrimaryAddress1)
|
45
|
-
if r2
|
46
|
-
r0 = r2
|
47
|
-
else
|
48
|
-
@index = i0
|
49
|
-
r0 = nil
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
node_cache[:primary_address][start_index] = r0
|
54
|
-
|
55
|
-
r0
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
|
60
|
-
class AddressListsParser < Treetop::Runtime::CompiledParser
|
61
|
-
include AddressLists
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|