mail 2.5.5 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +8 -9
  3. data/CONTRIBUTING.md +13 -0
  4. data/Dependencies.txt +0 -1
  5. data/Gemfile +7 -24
  6. data/README.md +36 -15
  7. data/Rakefile +10 -2
  8. data/VERSION +4 -0
  9. data/lib/mail.rb +1 -1
  10. data/lib/mail/body.rb +2 -2
  11. data/lib/mail/check_delivery_params.rb +10 -47
  12. data/lib/mail/core_extensions/string.rb +12 -2
  13. data/lib/mail/elements/address.rb +38 -82
  14. data/lib/mail/elements/address_list.rb +19 -42
  15. data/lib/mail/elements/content_disposition_element.rb +3 -7
  16. data/lib/mail/elements/content_location_element.rb +2 -6
  17. data/lib/mail/elements/content_transfer_encoding_element.rb +3 -10
  18. data/lib/mail/elements/content_type_element.rb +4 -8
  19. data/lib/mail/elements/date_time_element.rb +3 -7
  20. data/lib/mail/elements/envelope_from_element.rb +3 -11
  21. data/lib/mail/elements/message_ids_element.rb +1 -6
  22. data/lib/mail/elements/mime_version_element.rb +3 -7
  23. data/lib/mail/elements/phrase_list.rb +2 -7
  24. data/lib/mail/elements/received_element.rb +3 -7
  25. data/lib/mail/encodings.rb +0 -1
  26. data/lib/mail/envelope.rb +0 -5
  27. data/lib/mail/field.rb +53 -17
  28. data/lib/mail/field_list.rb +18 -18
  29. data/lib/mail/fields/common/common_address.rb +15 -20
  30. data/lib/mail/fields/common/common_date.rb +0 -7
  31. data/lib/mail/fields/common/common_field.rb +1 -1
  32. data/lib/mail/fields/content_transfer_encoding_field.rb +0 -6
  33. data/lib/mail/fields/resent_sender_field.rb +1 -1
  34. data/lib/mail/fields/sender_field.rb +1 -1
  35. data/lib/mail/fields/unstructured_field.rb +7 -1
  36. data/lib/mail/header.rb +8 -22
  37. data/lib/mail/mail.rb +12 -0
  38. data/lib/mail/matchers/has_sent_mail.rb +34 -1
  39. data/lib/mail/message.rb +18 -11
  40. data/lib/mail/multibyte/unicode.rb +1 -1
  41. data/lib/mail/network/delivery_methods/exim.rb +10 -6
  42. data/lib/mail/network/delivery_methods/file_delivery.rb +8 -4
  43. data/lib/mail/network/delivery_methods/sendmail.rb +7 -9
  44. data/lib/mail/network/delivery_methods/smtp.rb +5 -2
  45. data/lib/mail/network/delivery_methods/smtp_connection.rb +6 -2
  46. data/lib/mail/network/delivery_methods/test_mailer.rb +8 -5
  47. data/lib/mail/network/retriever_methods/imap.rb +18 -13
  48. data/lib/mail/parsers.rb +26 -0
  49. data/lib/mail/parsers/address_lists_parser.rb +132 -0
  50. data/lib/mail/parsers/content_disposition_parser.rb +67 -0
  51. data/lib/mail/parsers/content_location_parser.rb +35 -0
  52. data/lib/mail/parsers/content_transfer_encoding_parser.rb +33 -0
  53. data/lib/mail/parsers/content_type_parser.rb +64 -0
  54. data/lib/mail/parsers/date_time_parser.rb +36 -0
  55. data/lib/mail/parsers/envelope_from_parser.rb +45 -0
  56. data/lib/mail/parsers/message_ids_parser.rb +39 -0
  57. data/lib/mail/parsers/mime_version_parser.rb +41 -0
  58. data/lib/mail/parsers/phrase_lists_parser.rb +33 -0
  59. data/lib/mail/parsers/ragel.rb +17 -0
  60. data/lib/mail/parsers/ragel/common.rl +184 -0
  61. data/lib/mail/parsers/ragel/date_time.rl +30 -0
  62. data/lib/mail/parsers/ragel/parser_info.rb +61 -0
  63. data/lib/mail/parsers/ragel/ruby.rb +29 -0
  64. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb +14864 -0
  65. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl +37 -0
  66. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb +751 -0
  67. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl +37 -0
  68. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb +614 -0
  69. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl +37 -0
  70. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb +447 -0
  71. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl +37 -0
  72. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb +825 -0
  73. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl +37 -0
  74. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb +817 -0
  75. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl +37 -0
  76. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb +2129 -0
  77. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl +37 -0
  78. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb +1570 -0
  79. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl +37 -0
  80. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb +440 -0
  81. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl +37 -0
  82. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb +564 -0
  83. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl +37 -0
  84. data/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl +51 -0
  85. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb +5144 -0
  86. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl +37 -0
  87. data/lib/mail/parsers/ragel/ruby/parser.rb.rl.erb +37 -0
  88. data/lib/mail/parsers/received_parser.rb +47 -0
  89. data/lib/mail/parts_list.rb +4 -2
  90. data/lib/mail/patterns.rb +3 -1
  91. data/lib/mail/utilities.rb +3 -1
  92. data/lib/mail/version.rb +1 -1
  93. data/lib/mail/version_specific/ruby_1_8.rb +1 -1
  94. data/lib/mail/version_specific/ruby_1_9.rb +13 -1
  95. metadata +55 -51
  96. data/lib/VERSION +0 -4
  97. data/lib/load_parsers.rb +0 -35
  98. data/lib/mail/parsers/address_lists.rb +0 -64
  99. data/lib/mail/parsers/address_lists.treetop +0 -19
  100. data/lib/mail/parsers/content_disposition.rb +0 -535
  101. data/lib/mail/parsers/content_disposition.treetop +0 -46
  102. data/lib/mail/parsers/content_location.rb +0 -139
  103. data/lib/mail/parsers/content_location.treetop +0 -20
  104. data/lib/mail/parsers/content_transfer_encoding.rb +0 -201
  105. data/lib/mail/parsers/content_transfer_encoding.treetop +0 -18
  106. data/lib/mail/parsers/content_type.rb +0 -971
  107. data/lib/mail/parsers/content_type.treetop +0 -68
  108. data/lib/mail/parsers/date_time.rb +0 -114
  109. data/lib/mail/parsers/date_time.treetop +0 -11
  110. data/lib/mail/parsers/envelope_from.rb +0 -194
  111. data/lib/mail/parsers/envelope_from.treetop +0 -32
  112. data/lib/mail/parsers/message_ids.rb +0 -45
  113. data/lib/mail/parsers/message_ids.treetop +0 -15
  114. data/lib/mail/parsers/mime_version.rb +0 -144
  115. data/lib/mail/parsers/mime_version.treetop +0 -19
  116. data/lib/mail/parsers/phrase_lists.rb +0 -45
  117. data/lib/mail/parsers/phrase_lists.treetop +0 -15
  118. data/lib/mail/parsers/received.rb +0 -71
  119. data/lib/mail/parsers/received.treetop +0 -11
  120. data/lib/mail/parsers/rfc2045.rb +0 -421
  121. data/lib/mail/parsers/rfc2045.treetop +0 -35
  122. data/lib/mail/parsers/rfc2822.rb +0 -5397
  123. data/lib/mail/parsers/rfc2822.treetop +0 -408
  124. data/lib/mail/parsers/rfc2822_obsolete.rb +0 -3768
  125. data/lib/mail/parsers/rfc2822_obsolete.treetop +0 -241
  126. data/lib/tasks/corpus.rake +0 -125
  127. 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
@@ -31,11 +31,13 @@ module Mail
31
31
  end
32
32
 
33
33
  def sort!(order)
34
- sorted = self.sort do |a, b|
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) <=> get_order_value(b, 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
- FIELD_BODY = /.+/
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}]/
@@ -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
@@ -105,7 +105,7 @@ module Mail
105
105
 
106
106
  def Ruby18.fix_encoding(encoding)
107
107
  case encoding.upcase
108
- when 'UTF8'
108
+ when 'UTF8', 'UTF_8'
109
109
  'UTF-8'
110
110
  when 'UTF16', 'UTF-16'
111
111
  'UTF-16BE'
@@ -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-?(\d{1,2})?(\w{1,2})/i
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.5.5
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: 2017-06-09 00:00:00.000000000 Z
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
- - !ruby/object:Gem::Dependency
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: 1.4.8
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
- - lib/VERSION
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/address_lists.rb
212
- - lib/mail/parsers/address_lists.treetop
213
- - lib/mail/parsers/content_disposition.rb
214
- - lib/mail/parsers/content_disposition.treetop
215
- - lib/mail/parsers/content_location.rb
216
- - lib/mail/parsers/content_location.treetop
217
- - lib/mail/parsers/content_transfer_encoding.rb
218
- - lib/mail/parsers/content_transfer_encoding.treetop
219
- - lib/mail/parsers/content_type.rb
220
- - lib/mail/parsers/content_type.treetop
221
- - lib/mail/parsers/date_time.rb
222
- - lib/mail/parsers/date_time.treetop
223
- - lib/mail/parsers/envelope_from.rb
224
- - lib/mail/parsers/envelope_from.treetop
225
- - lib/mail/parsers/message_ids.rb
226
- - lib/mail/parsers/message_ids.treetop
227
- - lib/mail/parsers/mime_version.rb
228
- - lib/mail/parsers/mime_version.treetop
229
- - lib/mail/parsers/phrase_lists.rb
230
- - lib/mail/parsers/phrase_lists.treetop
231
- - lib/mail/parsers/received.rb
232
- - lib/mail/parsers/received.treetop
233
- - lib/mail/parsers/rfc2045.rb
234
- - lib/mail/parsers/rfc2045.treetop
235
- - lib/mail/parsers/rfc2822.rb
236
- - lib/mail/parsers/rfc2822.treetop
237
- - lib/mail/parsers/rfc2822_obsolete.rb
238
- - lib/mail/parsers/rfc2822_obsolete.treetop
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.6.11
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
@@ -1,4 +0,0 @@
1
- major:2
2
- minor:5
3
- patch:5
4
- build:
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