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.
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