Skip to content

Commit 7ef5694

Browse files
committed
Shush parser warnings without using an unreliable autoload
We already explicitly require parsers from message elements, so drop the toplevel autoload and move warning suppression into the parsers themselves. Fixes #1162
1 parent 322ba78 commit 7ef5694

26 files changed

+332
-187
lines changed

lib/mail.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ def self.eager_autoload!
6868

6969
require 'mail/envelope'
7070

71-
register_autoload :Parsers, "mail/parsers"
72-
7371
# Autoload header field elements and transfer encodings.
7472
require 'mail/elements'
7573
require 'mail/encodings'

lib/mail/parsers.rb

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
# frozen_string_literal: true
2-
# Ragel-generated parsers are full of known warnings. Suppress them.
3-
begin
4-
orig, $VERBOSE = $VERBOSE, nil
52

6-
require 'mail/parsers/address_lists_parser'
7-
require 'mail/parsers/content_disposition_parser'
8-
require 'mail/parsers/content_location_parser'
9-
require 'mail/parsers/content_transfer_encoding_parser'
10-
require 'mail/parsers/content_type_parser'
11-
require 'mail/parsers/date_time_parser'
12-
require 'mail/parsers/envelope_from_parser'
13-
require 'mail/parsers/message_ids_parser'
14-
require 'mail/parsers/mime_version_parser'
15-
require 'mail/parsers/phrase_lists_parser'
16-
require 'mail/parsers/received_parser'
17-
ensure
18-
$VERBOSE = orig
19-
end
3+
require 'mail/parsers/address_lists_parser'
4+
require 'mail/parsers/content_disposition_parser'
5+
require 'mail/parsers/content_location_parser'
6+
require 'mail/parsers/content_transfer_encoding_parser'
7+
require 'mail/parsers/content_type_parser'
8+
require 'mail/parsers/date_time_parser'
9+
require 'mail/parsers/envelope_from_parser'
10+
require 'mail/parsers/message_ids_parser'
11+
require 'mail/parsers/mime_version_parser'
12+
require 'mail/parsers/phrase_lists_parser'
13+
require 'mail/parsers/received_parser'

lib/mail/parsers/address_lists_parser.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
require 'mail/utilities'
44
require 'mail/parser_tools'
55

6+
begin
7+
original_verbose, $VERBOSE = $VERBOSE, nil
8+
69

710

811

@@ -33205,3 +33208,7 @@ def self.parse(data)
3320533208
end
3320633209
end
3320733210
end
33211+
33212+
ensure
33213+
$VERBOSE = original_verbose
33214+
end

lib/mail/parsers/address_lists_parser.rl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
require 'mail/utilities'
33
require 'mail/parser_tools'
44

5+
begin
6+
original_verbose, $VERBOSE = $VERBOSE, nil
7+
58
%%{
69
machine address_lists;
710
alphtype int;
@@ -170,3 +173,7 @@ module Mail::Parsers
170173
end
171174
end
172175
end
176+
177+
ensure
178+
$VERBOSE = original_verbose
179+
end

lib/mail/parsers/content_disposition_parser.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
require 'mail/utilities'
44
require 'mail/parser_tools'
55

6+
begin
7+
original_verbose, $VERBOSE = $VERBOSE, nil
8+
69

710

811

@@ -899,3 +902,7 @@ def self.parse(data)
899902
end
900903
end
901904
end
905+
906+
ensure
907+
$VERBOSE = original_verbose
908+
end

lib/mail/parsers/content_disposition_parser.rl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
require 'mail/utilities'
33
require 'mail/parser_tools'
44

5+
begin
6+
original_verbose, $VERBOSE = $VERBOSE, nil
7+
58
%%{
69
machine content_disposition;
710
alphtype int;
@@ -80,3 +83,7 @@ module Mail::Parsers
8083
end
8184
end
8285
end
86+
87+
ensure
88+
$VERBOSE = original_verbose
89+
end

lib/mail/parsers/content_location_parser.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
require 'mail/utilities'
44
require 'mail/parser_tools'
55

6+
begin
7+
original_verbose, $VERBOSE = $VERBOSE, nil
8+
69

710

811

@@ -811,3 +814,7 @@ def self.parse(data)
811814
end
812815
end
813816
end
817+
818+
ensure
819+
$VERBOSE = original_verbose
820+
end

lib/mail/parsers/content_location_parser.rl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
require 'mail/utilities'
33
require 'mail/parser_tools'
44

5+
begin
6+
original_verbose, $VERBOSE = $VERBOSE, nil
7+
58
%%{
69
# RFC 2557 Content-Location
710
# https://tools.ietf.org/html/rfc2557#section-4.1
@@ -69,3 +72,7 @@ module Mail::Parsers
6972
end
7073
end
7174
end
75+
76+
ensure
77+
$VERBOSE = original_verbose
78+
end

lib/mail/parsers/content_transfer_encoding_parser.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
require 'mail/utilities'
44
require 'mail/parser_tools'
55

6+
begin
7+
original_verbose, $VERBOSE = $VERBOSE, nil
8+
69

710

811

@@ -520,3 +523,7 @@ def self.parse(data)
520523
end
521524
end
522525
end
526+
527+
ensure
528+
$VERBOSE = original_verbose
529+
end

lib/mail/parsers/content_transfer_encoding_parser.rl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
require 'mail/utilities'
33
require 'mail/parser_tools'
44

5+
begin
6+
original_verbose, $VERBOSE = $VERBOSE, nil
7+
58
%%{
69
machine content_transfer_encoding;
710
alphtype int;
@@ -62,3 +65,7 @@ module Mail::Parsers
6265
end
6366
end
6467
end
68+
69+
ensure
70+
$VERBOSE = original_verbose
71+
end

0 commit comments

Comments
 (0)