actionmailer 2.3.5 → 2.3.6
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.
- data/CHANGELOG +8 -0
- data/MIT-LICENSE +1 -1
- data/Rakefile +1 -1
- data/lib/action_mailer.rb +1 -1
- data/lib/action_mailer/base.rb +2 -2
- data/lib/action_mailer/quoting.rb +1 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail.rb +1 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/Makefile +18 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/address.rb +4 -38
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/attachments.rb +65 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/base64.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/compat.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/config.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/core_extensions.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/encode.rb +9 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/header.rb +4 -2
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/index.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/interface.rb +33 -1
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/loader.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/mail.rb +1 -1
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/mailbox.rb +3 -2
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/main.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/mbox.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/net.rb +3 -1
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/obsolete.rb +0 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.rb +1060 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.y +416 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/port.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/quoting.rb +47 -1
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/require_arch.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/scanner.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/scanner_r.rb +2 -1
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/stringio.rb +0 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/utils.rb +50 -25
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/COPYING +504 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/README +12 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet.rb +67 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb +927 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb +42 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb +238 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb +112 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb +75 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb +64 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb +42 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb +89 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb +244 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb +88 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb +596 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb +42 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb +430 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb +42 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb +474 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb +42 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb +289 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb +570 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb +229 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb +229 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb +330 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb +227 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb +202 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb +226 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb +201 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb +147 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb +89 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb +45 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb +542 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb +124 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb +56 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb +88 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb +168 -0
- data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb +87 -0
- data/lib/action_mailer/vendor/{tmail-1.2.3 → tmail-1.2.7}/tmail/version.rb +1 -1
- data/lib/action_mailer/vendor/tmail.rb +2 -2
- data/lib/action_mailer/version.rb +1 -1
- data/test/abstract_unit.rb +1 -1
- data/test/fixtures/helpers/example_helper.rb +1 -1
- data/test/mail_service_test.rb +66 -2
- data/test/quoting_test.rb +10 -4
- metadata +87 -37
- data/lib/action_mailer/vendor/tmail-1.2.3/tmail/attachments.rb +0 -46
- data/lib/action_mailer/vendor/tmail-1.2.3/tmail/parser.rb +0 -1478
data/CHANGELOG
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
+
*2.3.6 (May 23, 2010)*
|
|
2
|
+
|
|
3
|
+
* Upgrade TMail from 1.2.3 to 1.2.7. [Mikel Lindsaar]
|
|
4
|
+
|
|
5
|
+
|
|
1
6
|
*2.3.5 (November 25, 2009)*
|
|
2
7
|
|
|
3
8
|
* Minor Bug Fixes and deprecation warnings
|
|
4
9
|
|
|
10
|
+
|
|
5
11
|
*2.3.4 (September 4, 2009)*
|
|
6
12
|
|
|
7
13
|
* Minor bug fixes.
|
|
8
14
|
|
|
15
|
+
|
|
9
16
|
*2.3.3 (July 12, 2009)*
|
|
10
17
|
|
|
11
18
|
* No changes, just a version bump.
|
|
12
19
|
|
|
20
|
+
|
|
13
21
|
*2.3.2 [Final] (March 15, 2009)*
|
|
14
22
|
|
|
15
23
|
* Fixed that ActionMailer should send correctly formatted Return-Path in MAIL FROM for SMTP #1842 [Matt Jones]
|
data/MIT-LICENSE
CHANGED
data/Rakefile
CHANGED
|
@@ -54,7 +54,7 @@ spec = Gem::Specification.new do |s|
|
|
|
54
54
|
s.rubyforge_project = "actionmailer"
|
|
55
55
|
s.homepage = "http://www.rubyonrails.org"
|
|
56
56
|
|
|
57
|
-
s.add_dependency('actionpack', '= 2.3.
|
|
57
|
+
s.add_dependency('actionpack', '= 2.3.6' + PKG_BUILD)
|
|
58
58
|
|
|
59
59
|
s.has_rdoc = true
|
|
60
60
|
s.requirements << 'none'
|
data/lib/action_mailer.rb
CHANGED
data/lib/action_mailer/base.rb
CHANGED
|
@@ -593,7 +593,7 @@ module ActionMailer #:nodoc:
|
|
|
593
593
|
end
|
|
594
594
|
|
|
595
595
|
def template_path
|
|
596
|
-
|
|
596
|
+
File.join(template_root, mailer_name)
|
|
597
597
|
end
|
|
598
598
|
|
|
599
599
|
def initialize_template_class(assigns)
|
|
@@ -675,7 +675,7 @@ module ActionMailer #:nodoc:
|
|
|
675
675
|
def perform_delivery_smtp(mail)
|
|
676
676
|
destinations = mail.destinations
|
|
677
677
|
mail.ready_to_send
|
|
678
|
-
sender = (mail['return-path'] && mail['return-path'].spec) || mail
|
|
678
|
+
sender = (mail['return-path'] && mail['return-path'].spec) || Array(mail.from).first
|
|
679
679
|
|
|
680
680
|
smtp = Net::SMTP.new(smtp_settings[:address], smtp_settings[:port])
|
|
681
681
|
smtp.enable_starttls_auto if smtp_settings[:enable_starttls_auto] && smtp.respond_to?(:enable_starttls_auto)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# lib/tmail/Makefile
|
|
2
|
+
#
|
|
3
|
+
|
|
4
|
+
debug:
|
|
5
|
+
rm -f parser.rb
|
|
6
|
+
make parser.rb DEBUG=true
|
|
7
|
+
|
|
8
|
+
parser.rb: parser.y
|
|
9
|
+
if [ "$(DEBUG)" = true ]; then \
|
|
10
|
+
racc -v -g -o$@ parser.y ;\
|
|
11
|
+
else \
|
|
12
|
+
racc -E -o$@ parser.y ;\
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
clean:
|
|
16
|
+
rm -f parser.rb parser.output
|
|
17
|
+
|
|
18
|
+
distclean: clean
|
|
@@ -46,7 +46,7 @@ module TMail
|
|
|
46
46
|
#
|
|
47
47
|
# Just pass the email address in as a string to Address.parse:
|
|
48
48
|
#
|
|
49
|
-
# email = TMail::Address.parse('Mikel Lindsaar <mikel@lindsaar.net>)
|
|
49
|
+
# email = TMail::Address.parse('Mikel Lindsaar <mikel@lindsaar.net>')
|
|
50
50
|
# #=> #<TMail::Address mikel@lindsaar.net>
|
|
51
51
|
# email.address
|
|
52
52
|
# #=> "mikel@lindsaar.net"
|
|
@@ -63,7 +63,7 @@ module TMail
|
|
|
63
63
|
# Address.parse and catch any SyntaxError:
|
|
64
64
|
#
|
|
65
65
|
# begin
|
|
66
|
-
# TMail::
|
|
66
|
+
# TMail::Address.parse("mikel 2@@@@@ me .com")
|
|
67
67
|
# rescue TMail::SyntaxError
|
|
68
68
|
# puts("Invalid Email Address Detected")
|
|
69
69
|
# else
|
|
@@ -81,41 +81,7 @@ module TMail
|
|
|
81
81
|
#
|
|
82
82
|
# Raises a TMail::SyntaxError on invalid email format
|
|
83
83
|
def Address.parse( str )
|
|
84
|
-
Parser.parse :ADDRESS,
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def Address.special_quote_address(str) #:nodoc:
|
|
88
|
-
# Takes a string which is an address and adds quotation marks to special
|
|
89
|
-
# edge case methods that the RACC parser can not handle.
|
|
90
|
-
#
|
|
91
|
-
# Right now just handles two edge cases:
|
|
92
|
-
#
|
|
93
|
-
# Full stop as the last character of the display name:
|
|
94
|
-
# Mikel L. <mikel@me.com>
|
|
95
|
-
# Returns:
|
|
96
|
-
# "Mikel L." <mikel@me.com>
|
|
97
|
-
#
|
|
98
|
-
# Unquoted @ symbol in the display name:
|
|
99
|
-
# mikel@me.com <mikel@me.com>
|
|
100
|
-
# Returns:
|
|
101
|
-
# "mikel@me.com" <mikel@me.com>
|
|
102
|
-
#
|
|
103
|
-
# Any other address not matching these patterns just gets returned as is.
|
|
104
|
-
case
|
|
105
|
-
# This handles the missing "" in an older version of Apple Mail.app
|
|
106
|
-
# around the display name when the display name contains a '@'
|
|
107
|
-
# like 'mikel@me.com <mikel@me.com>'
|
|
108
|
-
# Just quotes it to: '"mikel@me.com" <mikel@me.com>'
|
|
109
|
-
when str =~ /\A([^"].+@.+[^"])\s(<.*?>)\Z/
|
|
110
|
-
return "\"#{$1}\" #{$2}"
|
|
111
|
-
# This handles cases where 'Mikel A. <mikel@me.com>' which is a trailing
|
|
112
|
-
# full stop before the address section. Just quotes it to
|
|
113
|
-
# '"Mikel A. <mikel@me.com>"
|
|
114
|
-
when str =~ /\A(.*?\.)\s(<.*?>)\Z/
|
|
115
|
-
return "\"#{$1}\" #{$2}"
|
|
116
|
-
else
|
|
117
|
-
str
|
|
118
|
-
end
|
|
84
|
+
Parser.parse :ADDRESS, str
|
|
119
85
|
end
|
|
120
86
|
|
|
121
87
|
def address_group? #:nodoc:
|
|
@@ -412,7 +378,7 @@ module TMail
|
|
|
412
378
|
if first
|
|
413
379
|
first = false
|
|
414
380
|
else
|
|
415
|
-
strategy.
|
|
381
|
+
strategy.puts_meta ','
|
|
416
382
|
end
|
|
417
383
|
strategy.space
|
|
418
384
|
mbox.accept strategy
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
|
|
3
|
+
= Attachment handling file
|
|
4
|
+
|
|
5
|
+
=end
|
|
6
|
+
|
|
7
|
+
require 'kconv'
|
|
8
|
+
require 'stringio'
|
|
9
|
+
|
|
10
|
+
module TMail
|
|
11
|
+
class Attachment < StringIO
|
|
12
|
+
attr_accessor :original_filename, :content_type
|
|
13
|
+
alias quoted_filename original_filename
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class Mail
|
|
17
|
+
def has_attachments?
|
|
18
|
+
attachment?(self) || multipart? && parts.any? { |part| attachment?(part) }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Returns true if this part's content main type is text, else returns false.
|
|
22
|
+
# By main type is meant "text/plain" is text. "text/html" is text
|
|
23
|
+
def text_content_type?
|
|
24
|
+
self.header['content-type'] && (self.header['content-type'].main_type == 'text')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def inline_attachment?(part)
|
|
28
|
+
part['content-id'] || (part['content-disposition'] && part['content-disposition'].disposition == 'inline' && !part.text_content_type?)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def attachment?(part)
|
|
32
|
+
part.disposition_is_attachment? || (!part.content_type.nil? && !part.text_content_type?) unless part.multipart?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def attachments
|
|
36
|
+
if multipart?
|
|
37
|
+
parts.collect { |part| attachment(part) }.flatten.compact
|
|
38
|
+
elsif attachment?(self)
|
|
39
|
+
[attachment(self)]
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def attachment(part)
|
|
46
|
+
if part.multipart?
|
|
47
|
+
part.attachments
|
|
48
|
+
elsif attachment?(part)
|
|
49
|
+
content = part.body # unquoted automatically by TMail#body
|
|
50
|
+
file_name = (part['content-location'] && part['content-location'].body) ||
|
|
51
|
+
part.sub_header('content-type', 'name') ||
|
|
52
|
+
part.sub_header('content-disposition', 'filename') ||
|
|
53
|
+
'noname'
|
|
54
|
+
|
|
55
|
+
return if content.blank?
|
|
56
|
+
|
|
57
|
+
attachment = TMail::Attachment.new(content)
|
|
58
|
+
attachment.original_filename = file_name.strip unless file_name.blank?
|
|
59
|
+
attachment.content_type = part.content_type
|
|
60
|
+
attachment
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -113,6 +113,7 @@ module TMail
|
|
|
113
113
|
|
|
114
114
|
encoded = '=\?(?:iso-2022-jp|euc-jp|shift_jis)\?[QB]\?[a-z0-9+/=]+\?='
|
|
115
115
|
ENCODED_WORDS = /#{encoded}(?:\s+#{encoded})*/i
|
|
116
|
+
SPACER = "\t"
|
|
116
117
|
|
|
117
118
|
OUTPUT_ENCODING = {
|
|
118
119
|
'EUC' => 'e',
|
|
@@ -165,6 +166,10 @@ module TMail
|
|
|
165
166
|
@f << str
|
|
166
167
|
end
|
|
167
168
|
|
|
169
|
+
def puts_meta( str )
|
|
170
|
+
@f << str
|
|
171
|
+
end
|
|
172
|
+
|
|
168
173
|
def text( str )
|
|
169
174
|
@f << decode(str)
|
|
170
175
|
end
|
|
@@ -301,6 +306,10 @@ module TMail
|
|
|
301
306
|
add_text str
|
|
302
307
|
end
|
|
303
308
|
|
|
309
|
+
def puts_meta( str )
|
|
310
|
+
add_text str + @eol + SPACER
|
|
311
|
+
end
|
|
312
|
+
|
|
304
313
|
def text( str )
|
|
305
314
|
scanadd normalize_encoding(str)
|
|
306
315
|
end
|
|
@@ -243,6 +243,8 @@ module TMail
|
|
|
243
243
|
|
|
244
244
|
def do_parse
|
|
245
245
|
quote_boundary
|
|
246
|
+
quote_unquoted_name
|
|
247
|
+
quote_unquoted_bencode
|
|
246
248
|
obj = Parser.parse(self.class::PARSE_TYPE, @body, @comments)
|
|
247
249
|
set obj if obj
|
|
248
250
|
end
|
|
@@ -314,7 +316,7 @@ module TMail
|
|
|
314
316
|
if first
|
|
315
317
|
first = false
|
|
316
318
|
else
|
|
317
|
-
strategy.
|
|
319
|
+
strategy.puts_meta ','
|
|
318
320
|
strategy.space
|
|
319
321
|
end
|
|
320
322
|
a.accept strategy
|
|
@@ -817,7 +819,7 @@ module TMail
|
|
|
817
819
|
if v
|
|
818
820
|
strategy.meta ';'
|
|
819
821
|
strategy.space
|
|
820
|
-
strategy.kv_pair k, v
|
|
822
|
+
strategy.kv_pair k, unquote(v)
|
|
821
823
|
end
|
|
822
824
|
end
|
|
823
825
|
end
|
|
File without changes
|
|
@@ -595,6 +595,12 @@ module TMail
|
|
|
595
595
|
# Invalid message IDs are ignored (silently, unless configured otherwise) and result in
|
|
596
596
|
# a nil message ID. Left and right angle brackets are required.
|
|
597
597
|
#
|
|
598
|
+
# Be warned however, that calling mail.ready_to_send will overwrite whatever value you
|
|
599
|
+
# have in this field with an automatically generated unique value.
|
|
600
|
+
#
|
|
601
|
+
# If you really want to set your own message ID and know what you are doing per the
|
|
602
|
+
# various RFCs, you can do so with the enforced_message_id= command
|
|
603
|
+
#
|
|
598
604
|
# Example:
|
|
599
605
|
#
|
|
600
606
|
# mail = TMail::Mail.new
|
|
@@ -606,6 +612,22 @@ module TMail
|
|
|
606
612
|
set_string_attr 'Message-Id', str
|
|
607
613
|
end
|
|
608
614
|
|
|
615
|
+
# Destructively sets the message ID of the mail object instance to the passed in string
|
|
616
|
+
# and also guarantees that calling #ready_to_send will not destroy what you set as the
|
|
617
|
+
# message_id
|
|
618
|
+
#
|
|
619
|
+
# Example:
|
|
620
|
+
#
|
|
621
|
+
# mail = TMail::Mail.new
|
|
622
|
+
# mail.message_id = "<348F04F142D69C21-291E56D292BC@xxxx.net>"
|
|
623
|
+
# mail.message_id #=> "<348F04F142D69C21-291E56D292BC@xxxx.net>"
|
|
624
|
+
# mail.ready_to_send
|
|
625
|
+
# mail.message_id #=> "<348F04F142D69C21-291E56D292BC@xxxx.net>"
|
|
626
|
+
def enforced_message_id=( str )
|
|
627
|
+
@message_id_enforced = true
|
|
628
|
+
self.message_id = ( str )
|
|
629
|
+
end
|
|
630
|
+
|
|
609
631
|
# Returns the "In-Reply-To:" field contents as an array of this mail instance if it exists
|
|
610
632
|
#
|
|
611
633
|
# If the in_reply_to field does not exist, returns nil by default or you can pass in as
|
|
@@ -843,7 +865,17 @@ module TMail
|
|
|
843
865
|
if h = @header['content-type']
|
|
844
866
|
h['charset'] or default
|
|
845
867
|
else
|
|
846
|
-
default
|
|
868
|
+
mime_version_charset || default
|
|
869
|
+
end
|
|
870
|
+
end
|
|
871
|
+
|
|
872
|
+
# some weird emails come with the charset specified in the mime-version header:
|
|
873
|
+
#
|
|
874
|
+
# #<TMail::MimeVersionHeader "1.0\n charset=\"gb2312\"">
|
|
875
|
+
#
|
|
876
|
+
def mime_version_charset
|
|
877
|
+
if header['mime-version'].inspect =~ /charset=('|\\")?([^\\"']+)/
|
|
878
|
+
$2
|
|
847
879
|
end
|
|
848
880
|
end
|
|
849
881
|
|
|
File without changes
|
|
@@ -547,7 +547,7 @@ module TMail
|
|
|
547
547
|
end
|
|
548
548
|
|
|
549
549
|
def read_multipart( src )
|
|
550
|
-
bound = @header['content-type'].params['boundary']
|
|
550
|
+
bound = @header['content-type'].params['boundary'] || ::TMail.new_boundary
|
|
551
551
|
is_sep = /\A--#{Regexp.quote bound}(?:--)?[ \t]*(?:\n|\r\n|\r)/
|
|
552
552
|
lastbound = "--#{bound}--"
|
|
553
553
|
|
|
@@ -364,9 +364,10 @@ module TMail
|
|
|
364
364
|
end
|
|
365
365
|
|
|
366
366
|
def fromline2time( line )
|
|
367
|
-
m = /\AFrom \S+ \w+ (\w+) (\d+) (\d+):(\d+):(\d+) (\d+)/.match(line)
|
|
368
|
-
or return nil
|
|
367
|
+
m = /\AFrom \S+ \w+ (\w+) (\d+) (\d+):(\d+):(\d+) (\d+)/.match(line) or return nil
|
|
369
368
|
Time.local(m[6].to_i, m[1], m[2].to_i, m[3].to_i, m[4].to_i, m[5].to_i)
|
|
369
|
+
rescue
|
|
370
|
+
nil
|
|
370
371
|
end
|
|
371
372
|
|
|
372
373
|
end # UNIXMbox
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,1060 @@
|
|
|
1
|
+
#
|
|
2
|
+
# DO NOT MODIFY!!!!
|
|
3
|
+
# This file is automatically generated by racc 1.4.5
|
|
4
|
+
# from racc grammer file "lib/tmail/parser.y".
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
require 'racc/parser'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
#
|
|
11
|
+
# parser.rb
|
|
12
|
+
#
|
|
13
|
+
# Copyright (c) 1998-2007 Minero Aoki
|
|
14
|
+
#
|
|
15
|
+
# This program is free software.
|
|
16
|
+
# You can distribute/modify this program under the terms of
|
|
17
|
+
# the GNU Lesser General Public License version 2.1.
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
require 'tmail/scanner'
|
|
21
|
+
require 'tmail/utils'
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
module TMail
|
|
25
|
+
|
|
26
|
+
class Parser < Racc::Parser
|
|
27
|
+
|
|
28
|
+
module_eval <<'..end lib/tmail/parser.y modeval..id2dd1c7d21d', 'lib/tmail/parser.y', 340
|
|
29
|
+
|
|
30
|
+
include TextUtils
|
|
31
|
+
|
|
32
|
+
def self.parse( ident, str, cmt = nil )
|
|
33
|
+
str = special_quote_address(str) if ident.to_s =~ /M?ADDRESS/
|
|
34
|
+
new.parse(ident, str, cmt)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.special_quote_address(str) #:nodoc:
|
|
38
|
+
# Takes a string which is an address and adds quotation marks to special
|
|
39
|
+
# edge case methods that the RACC parser can not handle.
|
|
40
|
+
#
|
|
41
|
+
# Right now just handles two edge cases:
|
|
42
|
+
#
|
|
43
|
+
# Full stop as the last character of the display name:
|
|
44
|
+
# Mikel L. <mikel@me.com>
|
|
45
|
+
# Returns:
|
|
46
|
+
# "Mikel L." <mikel@me.com>
|
|
47
|
+
#
|
|
48
|
+
# Unquoted @ symbol in the display name:
|
|
49
|
+
# mikel@me.com <mikel@me.com>
|
|
50
|
+
# Returns:
|
|
51
|
+
# "mikel@me.com" <mikel@me.com>
|
|
52
|
+
#
|
|
53
|
+
# Any other address not matching these patterns just gets returned as is.
|
|
54
|
+
case
|
|
55
|
+
# This handles the missing "" in an older version of Apple Mail.app
|
|
56
|
+
# around the display name when the display name contains a '@'
|
|
57
|
+
# like 'mikel@me.com <mikel@me.com>'
|
|
58
|
+
# Just quotes it to: '"mikel@me.com" <mikel@me.com>'
|
|
59
|
+
when str =~ /\A([^"].+@.+[^"])\s(<.*?>)\Z/
|
|
60
|
+
return "\"#{$1}\" #{$2}"
|
|
61
|
+
# This handles cases where 'Mikel A. <mikel@me.com>' which is a trailing
|
|
62
|
+
# full stop before the address section. Just quotes it to
|
|
63
|
+
# '"Mikel A." <mikel@me.com>'
|
|
64
|
+
when str =~ /\A(.*?\.)\s(<.*?>)\s*\Z/
|
|
65
|
+
return "\"#{$1}\" #{$2}"
|
|
66
|
+
else
|
|
67
|
+
str
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
MAILP_DEBUG = false
|
|
72
|
+
|
|
73
|
+
def initialize
|
|
74
|
+
self.debug = MAILP_DEBUG
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def debug=( flag )
|
|
78
|
+
@yydebug = flag && Racc_debug_parser
|
|
79
|
+
@scanner_debug = flag
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def debug
|
|
83
|
+
@yydebug
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def parse( ident, str, comments = nil )
|
|
87
|
+
@scanner = Scanner.new(str, ident, comments)
|
|
88
|
+
@scanner.debug = @scanner_debug
|
|
89
|
+
@first = [ident, ident]
|
|
90
|
+
result = yyparse(self, :parse_in)
|
|
91
|
+
comments.map! {|c| to_kcode(c) } if comments
|
|
92
|
+
result
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
private
|
|
96
|
+
|
|
97
|
+
def parse_in( &block )
|
|
98
|
+
yield @first
|
|
99
|
+
@scanner.scan(&block)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def on_error( t, val, vstack )
|
|
103
|
+
raise TMail::SyntaxError, "parse error on token #{racc_token2str t}"
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
..end lib/tmail/parser.y modeval..id2dd1c7d21d
|
|
107
|
+
|
|
108
|
+
##### racc 1.4.5 generates ###
|
|
109
|
+
|
|
110
|
+
racc_reduce_table = [
|
|
111
|
+
0, 0, :racc_error,
|
|
112
|
+
2, 35, :_reduce_1,
|
|
113
|
+
2, 35, :_reduce_2,
|
|
114
|
+
2, 35, :_reduce_3,
|
|
115
|
+
2, 35, :_reduce_4,
|
|
116
|
+
2, 35, :_reduce_5,
|
|
117
|
+
2, 35, :_reduce_6,
|
|
118
|
+
2, 35, :_reduce_7,
|
|
119
|
+
2, 35, :_reduce_8,
|
|
120
|
+
2, 35, :_reduce_9,
|
|
121
|
+
2, 35, :_reduce_10,
|
|
122
|
+
2, 35, :_reduce_11,
|
|
123
|
+
2, 35, :_reduce_12,
|
|
124
|
+
6, 36, :_reduce_13,
|
|
125
|
+
0, 48, :_reduce_none,
|
|
126
|
+
2, 48, :_reduce_none,
|
|
127
|
+
3, 49, :_reduce_16,
|
|
128
|
+
5, 49, :_reduce_17,
|
|
129
|
+
1, 50, :_reduce_18,
|
|
130
|
+
7, 37, :_reduce_19,
|
|
131
|
+
0, 51, :_reduce_none,
|
|
132
|
+
2, 51, :_reduce_21,
|
|
133
|
+
0, 52, :_reduce_none,
|
|
134
|
+
2, 52, :_reduce_23,
|
|
135
|
+
1, 58, :_reduce_24,
|
|
136
|
+
3, 58, :_reduce_25,
|
|
137
|
+
2, 58, :_reduce_26,
|
|
138
|
+
0, 53, :_reduce_none,
|
|
139
|
+
2, 53, :_reduce_28,
|
|
140
|
+
0, 54, :_reduce_29,
|
|
141
|
+
3, 54, :_reduce_30,
|
|
142
|
+
0, 55, :_reduce_none,
|
|
143
|
+
2, 55, :_reduce_32,
|
|
144
|
+
2, 55, :_reduce_33,
|
|
145
|
+
0, 56, :_reduce_none,
|
|
146
|
+
2, 56, :_reduce_35,
|
|
147
|
+
1, 61, :_reduce_36,
|
|
148
|
+
1, 61, :_reduce_37,
|
|
149
|
+
0, 57, :_reduce_none,
|
|
150
|
+
2, 57, :_reduce_39,
|
|
151
|
+
1, 38, :_reduce_none,
|
|
152
|
+
1, 38, :_reduce_none,
|
|
153
|
+
3, 38, :_reduce_none,
|
|
154
|
+
1, 46, :_reduce_none,
|
|
155
|
+
1, 46, :_reduce_none,
|
|
156
|
+
1, 46, :_reduce_none,
|
|
157
|
+
1, 39, :_reduce_none,
|
|
158
|
+
2, 39, :_reduce_47,
|
|
159
|
+
1, 64, :_reduce_48,
|
|
160
|
+
3, 64, :_reduce_49,
|
|
161
|
+
1, 68, :_reduce_none,
|
|
162
|
+
1, 68, :_reduce_none,
|
|
163
|
+
1, 69, :_reduce_52,
|
|
164
|
+
3, 69, :_reduce_53,
|
|
165
|
+
1, 47, :_reduce_none,
|
|
166
|
+
1, 47, :_reduce_none,
|
|
167
|
+
2, 47, :_reduce_56,
|
|
168
|
+
2, 67, :_reduce_none,
|
|
169
|
+
3, 65, :_reduce_58,
|
|
170
|
+
2, 65, :_reduce_59,
|
|
171
|
+
1, 70, :_reduce_60,
|
|
172
|
+
2, 70, :_reduce_61,
|
|
173
|
+
4, 62, :_reduce_62,
|
|
174
|
+
3, 62, :_reduce_63,
|
|
175
|
+
2, 72, :_reduce_none,
|
|
176
|
+
2, 73, :_reduce_65,
|
|
177
|
+
4, 73, :_reduce_66,
|
|
178
|
+
3, 63, :_reduce_67,
|
|
179
|
+
1, 63, :_reduce_68,
|
|
180
|
+
1, 74, :_reduce_none,
|
|
181
|
+
2, 74, :_reduce_70,
|
|
182
|
+
1, 71, :_reduce_71,
|
|
183
|
+
3, 71, :_reduce_72,
|
|
184
|
+
1, 59, :_reduce_73,
|
|
185
|
+
3, 59, :_reduce_74,
|
|
186
|
+
1, 76, :_reduce_75,
|
|
187
|
+
2, 76, :_reduce_76,
|
|
188
|
+
1, 75, :_reduce_none,
|
|
189
|
+
1, 75, :_reduce_none,
|
|
190
|
+
1, 75, :_reduce_none,
|
|
191
|
+
1, 77, :_reduce_none,
|
|
192
|
+
1, 77, :_reduce_none,
|
|
193
|
+
1, 77, :_reduce_none,
|
|
194
|
+
1, 66, :_reduce_none,
|
|
195
|
+
2, 66, :_reduce_none,
|
|
196
|
+
3, 60, :_reduce_85,
|
|
197
|
+
1, 40, :_reduce_86,
|
|
198
|
+
3, 40, :_reduce_87,
|
|
199
|
+
1, 79, :_reduce_none,
|
|
200
|
+
2, 79, :_reduce_89,
|
|
201
|
+
1, 41, :_reduce_90,
|
|
202
|
+
2, 41, :_reduce_91,
|
|
203
|
+
3, 42, :_reduce_92,
|
|
204
|
+
5, 43, :_reduce_93,
|
|
205
|
+
3, 43, :_reduce_94,
|
|
206
|
+
0, 80, :_reduce_95,
|
|
207
|
+
5, 80, :_reduce_96,
|
|
208
|
+
5, 80, :_reduce_97,
|
|
209
|
+
1, 44, :_reduce_98,
|
|
210
|
+
3, 45, :_reduce_99,
|
|
211
|
+
0, 81, :_reduce_none,
|
|
212
|
+
1, 81, :_reduce_none,
|
|
213
|
+
1, 78, :_reduce_none,
|
|
214
|
+
1, 78, :_reduce_none,
|
|
215
|
+
1, 78, :_reduce_none,
|
|
216
|
+
1, 78, :_reduce_none,
|
|
217
|
+
1, 78, :_reduce_none,
|
|
218
|
+
1, 78, :_reduce_none,
|
|
219
|
+
1, 78, :_reduce_none ]
|
|
220
|
+
|
|
221
|
+
racc_reduce_n = 109
|
|
222
|
+
|
|
223
|
+
racc_shift_n = 167
|
|
224
|
+
|
|
225
|
+
racc_action_table = [
|
|
226
|
+
-69, 130, -70, 23, 25, 153, 94, 29, 31, 142,
|
|
227
|
+
143, 16, 17, 20, 22, 98, -69, 154, -70, 32,
|
|
228
|
+
-69, 107, -70, 145, 146, 78, -69, 91, -70, 75,
|
|
229
|
+
-70, 23, 25, 120, 88, 29, 31, 105, 106, 16,
|
|
230
|
+
17, 20, 22, 81, 27, 23, 25, 32, 112, 29,
|
|
231
|
+
31, 96, 80, 16, 17, 20, 22, 117, 27, 23,
|
|
232
|
+
25, 32, 79, 29, 31, 78, 123, 16, 17, 20,
|
|
233
|
+
22, 100, 27, 23, 25, 32, 125, 29, 31, 113,
|
|
234
|
+
115, 16, 17, 20, 22, 126, 23, 25, 101, 32,
|
|
235
|
+
29, 31, 91, 128, 16, 17, 20, 22, 129, 27,
|
|
236
|
+
23, 25, 32, 101, 29, 31, 101, 75, 16, 17,
|
|
237
|
+
20, 22, 77, 52, 23, 25, 32, 65, 29, 31,
|
|
238
|
+
133, 78, 16, 17, 20, 22, 62, 23, 25, 136,
|
|
239
|
+
32, 29, 31, 60, 44, 16, 17, 20, 22, 139,
|
|
240
|
+
23, 25, 101, 32, 29, 31, 101, 100, 16, 17,
|
|
241
|
+
20, 22, 100, 27, 23, 25, 32, 101, 29, 31,
|
|
242
|
+
147, 148, 16, 17, 20, 22, 151, 23, 25, 152,
|
|
243
|
+
32, 29, 31, 74, 42, 16, 17, 20, 22, 156,
|
|
244
|
+
158, 92, 40, 32, 23, 25, 15, 68, 29, 31,
|
|
245
|
+
163, 40, 16, 17, 20, 22, 165, 27, 23, 25,
|
|
246
|
+
32, 166, 29, 31, nil, nil, 16, 17, 20, 22,
|
|
247
|
+
nil, 27, 23, 25, 32, nil, 29, 31, nil, nil,
|
|
248
|
+
16, 17, 20, 22, nil, 23, 25, nil, 32, 29,
|
|
249
|
+
31, nil, nil, 16, 17, 20, 22, nil, 23, 25,
|
|
250
|
+
nil, 32, 29, 31, nil, nil, 16, 17, 20, 22,
|
|
251
|
+
nil, 23, 25, nil, 32, 29, 31, nil, nil, 16,
|
|
252
|
+
17, 20, 22, nil, 27, nil, nil, 32, 23, 25,
|
|
253
|
+
120, nil, 29, 31, nil, nil, 16, 17, 20, 22,
|
|
254
|
+
nil, 27, 23, 25, 32, nil, 29, 31, nil, nil,
|
|
255
|
+
16, 17, 20, 22, nil, 23, 25, 109, 32, 29,
|
|
256
|
+
31, 74, nil, 16, 17, 20, 22, nil, 84, 25,
|
|
257
|
+
nil, 32, 29, 31, nil, 87, 16, 17, 20, 22,
|
|
258
|
+
84, 25, nil, 109, 29, 31, nil, 87, 16, 17,
|
|
259
|
+
20, 22, 84, 25, nil, nil, 29, 31, nil, 87,
|
|
260
|
+
16, 17, 20, 22, 84, 25, nil, nil, 29, 31,
|
|
261
|
+
nil, 87, 16, 17, 20, 22, 84, 25, nil, nil,
|
|
262
|
+
29, 31, nil, 87, 16, 17, 20, 22, 84, 25,
|
|
263
|
+
nil, nil, 29, 31, nil, 87, 16, 17, 20, 22,
|
|
264
|
+
4, 6, 7, 8, 9, 10, 11, 12, 13, 1,
|
|
265
|
+
2, 3, 84, 25, nil, nil, 29, 31, nil, 87,
|
|
266
|
+
16, 17, 20, 22 ]
|
|
267
|
+
|
|
268
|
+
racc_action_check = [
|
|
269
|
+
28, 112, 75, 71, 71, 143, 56, 71, 71, 134,
|
|
270
|
+
134, 71, 71, 71, 71, 62, 28, 143, 75, 71,
|
|
271
|
+
28, 73, 75, 136, 136, 51, 28, 50, 75, 28,
|
|
272
|
+
75, 127, 127, 127, 45, 127, 127, 72, 72, 127,
|
|
273
|
+
127, 127, 127, 42, 127, 3, 3, 127, 80, 3,
|
|
274
|
+
3, 60, 41, 3, 3, 3, 3, 89, 3, 151,
|
|
275
|
+
151, 3, 40, 151, 151, 36, 96, 151, 151, 151,
|
|
276
|
+
151, 97, 151, 55, 55, 151, 98, 55, 55, 86,
|
|
277
|
+
86, 55, 55, 55, 55, 100, 7, 7, 86, 55,
|
|
278
|
+
7, 7, 102, 104, 7, 7, 7, 7, 105, 7,
|
|
279
|
+
8, 8, 7, 108, 8, 8, 111, 70, 8, 8,
|
|
280
|
+
8, 8, 33, 8, 9, 9, 8, 13, 9, 9,
|
|
281
|
+
117, 121, 9, 9, 9, 9, 12, 10, 10, 126,
|
|
282
|
+
9, 10, 10, 11, 6, 10, 10, 10, 10, 130,
|
|
283
|
+
2, 2, 131, 10, 2, 2, 67, 135, 2, 2,
|
|
284
|
+
2, 2, 66, 2, 122, 122, 2, 138, 122, 122,
|
|
285
|
+
139, 140, 122, 122, 122, 122, 141, 52, 52, 142,
|
|
286
|
+
122, 52, 52, 52, 5, 52, 52, 52, 52, 147,
|
|
287
|
+
150, 52, 4, 52, 26, 26, 1, 26, 26, 26,
|
|
288
|
+
156, 158, 26, 26, 26, 26, 162, 26, 68, 68,
|
|
289
|
+
26, 163, 68, 68, nil, nil, 68, 68, 68, 68,
|
|
290
|
+
nil, 68, 59, 59, 68, nil, 59, 59, nil, nil,
|
|
291
|
+
59, 59, 59, 59, nil, 154, 154, nil, 59, 154,
|
|
292
|
+
154, nil, nil, 154, 154, 154, 154, nil, 94, 94,
|
|
293
|
+
nil, 154, 94, 94, nil, nil, 94, 94, 94, 94,
|
|
294
|
+
nil, 38, 38, nil, 94, 38, 38, nil, nil, 38,
|
|
295
|
+
38, 38, 38, nil, 38, nil, nil, 38, 90, 90,
|
|
296
|
+
90, nil, 90, 90, nil, nil, 90, 90, 90, 90,
|
|
297
|
+
nil, 90, 76, 76, 90, nil, 76, 76, nil, nil,
|
|
298
|
+
76, 76, 76, 76, nil, 27, 27, 76, 76, 27,
|
|
299
|
+
27, 27, nil, 27, 27, 27, 27, nil, 114, 114,
|
|
300
|
+
nil, 27, 114, 114, nil, 114, 114, 114, 114, 114,
|
|
301
|
+
44, 44, nil, 114, 44, 44, nil, 44, 44, 44,
|
|
302
|
+
44, 44, 74, 74, nil, nil, 74, 74, nil, 74,
|
|
303
|
+
74, 74, 74, 74, 113, 113, nil, nil, 113, 113,
|
|
304
|
+
nil, 113, 113, 113, 113, 113, 129, 129, nil, nil,
|
|
305
|
+
129, 129, nil, 129, 129, 129, 129, 129, 88, 88,
|
|
306
|
+
nil, nil, 88, 88, nil, 88, 88, 88, 88, 88,
|
|
307
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
308
|
+
0, 0, 77, 77, nil, nil, 77, 77, nil, 77,
|
|
309
|
+
77, 77, 77, 77 ]
|
|
310
|
+
|
|
311
|
+
racc_action_pointer = [
|
|
312
|
+
378, 155, 126, 31, 167, 174, 116, 72, 86, 100,
|
|
313
|
+
113, 119, 95, 86, nil, nil, nil, nil, nil, nil,
|
|
314
|
+
nil, nil, nil, nil, nil, nil, 170, 281, 0, nil,
|
|
315
|
+
nil, nil, nil, 92, nil, nil, 39, nil, 237, nil,
|
|
316
|
+
46, 38, 43, nil, 306, 15, nil, nil, nil, nil,
|
|
317
|
+
11, -1, 153, nil, nil, 59, -10, nil, nil, 198,
|
|
318
|
+
22, nil, -17, nil, nil, nil, 126, 117, 184, nil,
|
|
319
|
+
78, -11, 21, -7, 318, 2, 268, 378, nil, nil,
|
|
320
|
+
33, nil, nil, nil, nil, nil, 59, nil, 354, 35,
|
|
321
|
+
254, nil, nil, nil, 224, nil, 52, 45, 45, nil,
|
|
322
|
+
54, nil, 76, nil, 65, 78, nil, nil, 74, nil,
|
|
323
|
+
nil, 77, -13, 330, 294, nil, nil, 105, nil, nil,
|
|
324
|
+
nil, 95, 140, nil, nil, nil, 96, 17, nil, 342,
|
|
325
|
+
125, 113, nil, nil, -14, 121, -7, nil, 128, 143,
|
|
326
|
+
146, 141, 154, -10, nil, nil, nil, 165, nil, nil,
|
|
327
|
+
154, 45, nil, nil, 211, nil, 173, nil, 176, nil,
|
|
328
|
+
nil, nil, 168, 187, nil, nil, nil ]
|
|
329
|
+
|
|
330
|
+
racc_action_default = [
|
|
331
|
+
-109, -109, -109, -109, -14, -109, -20, -109, -109, -109,
|
|
332
|
+
-109, -109, -109, -109, -10, -95, -105, -106, -77, -44,
|
|
333
|
+
-107, -11, -108, -79, -43, -102, -109, -109, -60, -103,
|
|
334
|
+
-55, -104, -78, -68, -54, -71, -45, -12, -109, -1,
|
|
335
|
+
-109, -109, -109, -2, -109, -22, -51, -48, -50, -3,
|
|
336
|
+
-40, -41, -109, -46, -4, -86, -5, -88, -6, -90,
|
|
337
|
+
-109, -7, -95, -8, -9, -98, -100, -61, -59, -56,
|
|
338
|
+
-69, -109, -109, -109, -109, -75, -109, -109, -57, -15,
|
|
339
|
+
-109, 167, -73, -80, -82, -21, -24, -81, -109, -27,
|
|
340
|
+
-109, -83, -47, -89, -109, -91, -109, -100, -109, -99,
|
|
341
|
+
-101, -75, -58, -52, -109, -109, -64, -63, -65, -76,
|
|
342
|
+
-72, -67, -109, -109, -109, -26, -23, -109, -29, -49,
|
|
343
|
+
-84, -42, -87, -92, -94, -95, -109, -109, -62, -109,
|
|
344
|
+
-109, -25, -74, -28, -31, -100, -109, -53, -66, -109,
|
|
345
|
+
-109, -34, -109, -109, -93, -96, -97, -109, -18, -13,
|
|
346
|
+
-38, -109, -30, -33, -109, -32, -16, -19, -14, -35,
|
|
347
|
+
-36, -37, -109, -109, -39, -85, -17 ]
|
|
348
|
+
|
|
349
|
+
racc_goto_table = [
|
|
350
|
+
39, 67, 70, 73, 38, 66, 69, 24, 37, 57,
|
|
351
|
+
59, 36, 55, 67, 99, 90, 85, 157, 69, 108,
|
|
352
|
+
83, 134, 111, 76, 49, 53, 141, 70, 73, 150,
|
|
353
|
+
118, 89, 45, 155, 159, 149, 140, 21, 14, 19,
|
|
354
|
+
119, 102, 64, 63, 61, 124, 70, 104, 58, 132,
|
|
355
|
+
83, 56, 97, 83, 54, 93, 43, 5, 131, 95,
|
|
356
|
+
116, nil, 76, nil, 83, 76, nil, 127, nil, 38,
|
|
357
|
+
nil, nil, nil, 103, 138, nil, 110, nil, nil, nil,
|
|
358
|
+
nil, nil, nil, 144, nil, nil, nil, nil, nil, 83,
|
|
359
|
+
83, nil, nil, nil, 57, nil, nil, 122, nil, 121,
|
|
360
|
+
nil, nil, nil, nil, nil, 83, nil, nil, nil, nil,
|
|
361
|
+
nil, nil, nil, nil, nil, 135, nil, nil, nil, nil,
|
|
362
|
+
nil, nil, 93, nil, nil, nil, 70, 161, 38, 70,
|
|
363
|
+
162, 160, 137, nil, nil, nil, nil, nil, nil, nil,
|
|
364
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
365
|
+
nil, nil, nil, nil, 164 ]
|
|
366
|
+
|
|
367
|
+
racc_goto_check = [
|
|
368
|
+
2, 37, 37, 29, 36, 46, 28, 13, 13, 41,
|
|
369
|
+
41, 31, 45, 37, 47, 32, 24, 23, 28, 25,
|
|
370
|
+
44, 20, 25, 42, 4, 4, 21, 37, 29, 22,
|
|
371
|
+
19, 18, 17, 26, 27, 16, 15, 12, 11, 33,
|
|
372
|
+
34, 35, 10, 9, 8, 47, 37, 29, 7, 43,
|
|
373
|
+
44, 6, 46, 44, 5, 41, 3, 1, 25, 41,
|
|
374
|
+
24, nil, 42, nil, 44, 42, nil, 32, nil, 36,
|
|
375
|
+
nil, nil, nil, 13, 25, nil, 41, nil, nil, nil,
|
|
376
|
+
nil, nil, nil, 47, nil, nil, nil, nil, nil, 44,
|
|
377
|
+
44, nil, nil, nil, 41, nil, nil, 45, nil, 31,
|
|
378
|
+
nil, nil, nil, nil, nil, 44, nil, nil, nil, nil,
|
|
379
|
+
nil, nil, nil, nil, nil, 46, nil, nil, nil, nil,
|
|
380
|
+
nil, nil, 41, nil, nil, nil, 37, 29, 36, 37,
|
|
381
|
+
29, 28, 13, nil, nil, nil, nil, nil, nil, nil,
|
|
382
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
383
|
+
nil, nil, nil, nil, 2 ]
|
|
384
|
+
|
|
385
|
+
racc_goto_pointer = [
|
|
386
|
+
nil, 57, -4, 50, 17, 46, 42, 38, 33, 31,
|
|
387
|
+
29, 37, 35, 5, nil, -94, -105, 26, -14, -59,
|
|
388
|
+
-97, -108, -112, -133, -28, -55, -110, -117, -20, -24,
|
|
389
|
+
nil, 9, -35, 37, -50, -27, 1, -25, nil, nil,
|
|
390
|
+
nil, 0, -5, -65, -24, 3, -10, -52 ]
|
|
391
|
+
|
|
392
|
+
racc_goto_default = [
|
|
393
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
394
|
+
nil, nil, nil, 48, 41, nil, nil, nil, nil, nil,
|
|
395
|
+
nil, nil, nil, nil, nil, 86, nil, nil, 30, 34,
|
|
396
|
+
50, 51, nil, 46, 47, nil, 26, 28, 71, 72,
|
|
397
|
+
33, 35, 114, 82, 18, nil, nil, nil ]
|
|
398
|
+
|
|
399
|
+
racc_token_table = {
|
|
400
|
+
false => 0,
|
|
401
|
+
Object.new => 1,
|
|
402
|
+
:DATETIME => 2,
|
|
403
|
+
:RECEIVED => 3,
|
|
404
|
+
:MADDRESS => 4,
|
|
405
|
+
:RETPATH => 5,
|
|
406
|
+
:KEYWORDS => 6,
|
|
407
|
+
:ENCRYPTED => 7,
|
|
408
|
+
:MIMEVERSION => 8,
|
|
409
|
+
:CTYPE => 9,
|
|
410
|
+
:CENCODING => 10,
|
|
411
|
+
:CDISPOSITION => 11,
|
|
412
|
+
:ADDRESS => 12,
|
|
413
|
+
:MAILBOX => 13,
|
|
414
|
+
:DIGIT => 14,
|
|
415
|
+
:ATOM => 15,
|
|
416
|
+
"," => 16,
|
|
417
|
+
":" => 17,
|
|
418
|
+
:FROM => 18,
|
|
419
|
+
:BY => 19,
|
|
420
|
+
"@" => 20,
|
|
421
|
+
:DOMLIT => 21,
|
|
422
|
+
:VIA => 22,
|
|
423
|
+
:WITH => 23,
|
|
424
|
+
:ID => 24,
|
|
425
|
+
:FOR => 25,
|
|
426
|
+
";" => 26,
|
|
427
|
+
"<" => 27,
|
|
428
|
+
">" => 28,
|
|
429
|
+
"." => 29,
|
|
430
|
+
:QUOTED => 30,
|
|
431
|
+
:TOKEN => 31,
|
|
432
|
+
"/" => 32,
|
|
433
|
+
"=" => 33 }
|
|
434
|
+
|
|
435
|
+
racc_use_result_var = false
|
|
436
|
+
|
|
437
|
+
racc_nt_base = 34
|
|
438
|
+
|
|
439
|
+
Racc_arg = [
|
|
440
|
+
racc_action_table,
|
|
441
|
+
racc_action_check,
|
|
442
|
+
racc_action_default,
|
|
443
|
+
racc_action_pointer,
|
|
444
|
+
racc_goto_table,
|
|
445
|
+
racc_goto_check,
|
|
446
|
+
racc_goto_default,
|
|
447
|
+
racc_goto_pointer,
|
|
448
|
+
racc_nt_base,
|
|
449
|
+
racc_reduce_table,
|
|
450
|
+
racc_token_table,
|
|
451
|
+
racc_shift_n,
|
|
452
|
+
racc_reduce_n,
|
|
453
|
+
racc_use_result_var ]
|
|
454
|
+
|
|
455
|
+
Racc_token_to_s_table = [
|
|
456
|
+
'$end',
|
|
457
|
+
'error',
|
|
458
|
+
'DATETIME',
|
|
459
|
+
'RECEIVED',
|
|
460
|
+
'MADDRESS',
|
|
461
|
+
'RETPATH',
|
|
462
|
+
'KEYWORDS',
|
|
463
|
+
'ENCRYPTED',
|
|
464
|
+
'MIMEVERSION',
|
|
465
|
+
'CTYPE',
|
|
466
|
+
'CENCODING',
|
|
467
|
+
'CDISPOSITION',
|
|
468
|
+
'ADDRESS',
|
|
469
|
+
'MAILBOX',
|
|
470
|
+
'DIGIT',
|
|
471
|
+
'ATOM',
|
|
472
|
+
'","',
|
|
473
|
+
'":"',
|
|
474
|
+
'FROM',
|
|
475
|
+
'BY',
|
|
476
|
+
'"@"',
|
|
477
|
+
'DOMLIT',
|
|
478
|
+
'VIA',
|
|
479
|
+
'WITH',
|
|
480
|
+
'ID',
|
|
481
|
+
'FOR',
|
|
482
|
+
'";"',
|
|
483
|
+
'"<"',
|
|
484
|
+
'">"',
|
|
485
|
+
'"."',
|
|
486
|
+
'QUOTED',
|
|
487
|
+
'TOKEN',
|
|
488
|
+
'"/"',
|
|
489
|
+
'"="',
|
|
490
|
+
'$start',
|
|
491
|
+
'content',
|
|
492
|
+
'datetime',
|
|
493
|
+
'received',
|
|
494
|
+
'addrs_TOP',
|
|
495
|
+
'retpath',
|
|
496
|
+
'keys',
|
|
497
|
+
'enc',
|
|
498
|
+
'version',
|
|
499
|
+
'ctype',
|
|
500
|
+
'cencode',
|
|
501
|
+
'cdisp',
|
|
502
|
+
'addr_TOP',
|
|
503
|
+
'mbox',
|
|
504
|
+
'day',
|
|
505
|
+
'hour',
|
|
506
|
+
'zone',
|
|
507
|
+
'from',
|
|
508
|
+
'by',
|
|
509
|
+
'via',
|
|
510
|
+
'with',
|
|
511
|
+
'id',
|
|
512
|
+
'for',
|
|
513
|
+
'received_datetime',
|
|
514
|
+
'received_domain',
|
|
515
|
+
'domain',
|
|
516
|
+
'msgid',
|
|
517
|
+
'received_addrspec',
|
|
518
|
+
'routeaddr',
|
|
519
|
+
'spec',
|
|
520
|
+
'addrs',
|
|
521
|
+
'group_bare',
|
|
522
|
+
'commas',
|
|
523
|
+
'group',
|
|
524
|
+
'addr',
|
|
525
|
+
'mboxes',
|
|
526
|
+
'addr_phrase',
|
|
527
|
+
'local_head',
|
|
528
|
+
'routes',
|
|
529
|
+
'at_domains',
|
|
530
|
+
'local',
|
|
531
|
+
'word',
|
|
532
|
+
'dots',
|
|
533
|
+
'domword',
|
|
534
|
+
'atom',
|
|
535
|
+
'phrase',
|
|
536
|
+
'params',
|
|
537
|
+
'opt_semicolon']
|
|
538
|
+
|
|
539
|
+
Racc_debug_parser = false
|
|
540
|
+
|
|
541
|
+
##### racc system variables end #####
|
|
542
|
+
|
|
543
|
+
# reduce 0 omitted
|
|
544
|
+
|
|
545
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 16
|
|
546
|
+
def _reduce_1( val, _values)
|
|
547
|
+
val[1]
|
|
548
|
+
end
|
|
549
|
+
.,.,
|
|
550
|
+
|
|
551
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 17
|
|
552
|
+
def _reduce_2( val, _values)
|
|
553
|
+
val[1]
|
|
554
|
+
end
|
|
555
|
+
.,.,
|
|
556
|
+
|
|
557
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 18
|
|
558
|
+
def _reduce_3( val, _values)
|
|
559
|
+
val[1]
|
|
560
|
+
end
|
|
561
|
+
.,.,
|
|
562
|
+
|
|
563
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 19
|
|
564
|
+
def _reduce_4( val, _values)
|
|
565
|
+
val[1]
|
|
566
|
+
end
|
|
567
|
+
.,.,
|
|
568
|
+
|
|
569
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 20
|
|
570
|
+
def _reduce_5( val, _values)
|
|
571
|
+
val[1]
|
|
572
|
+
end
|
|
573
|
+
.,.,
|
|
574
|
+
|
|
575
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 21
|
|
576
|
+
def _reduce_6( val, _values)
|
|
577
|
+
val[1]
|
|
578
|
+
end
|
|
579
|
+
.,.,
|
|
580
|
+
|
|
581
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 22
|
|
582
|
+
def _reduce_7( val, _values)
|
|
583
|
+
val[1]
|
|
584
|
+
end
|
|
585
|
+
.,.,
|
|
586
|
+
|
|
587
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 23
|
|
588
|
+
def _reduce_8( val, _values)
|
|
589
|
+
val[1]
|
|
590
|
+
end
|
|
591
|
+
.,.,
|
|
592
|
+
|
|
593
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 24
|
|
594
|
+
def _reduce_9( val, _values)
|
|
595
|
+
val[1]
|
|
596
|
+
end
|
|
597
|
+
.,.,
|
|
598
|
+
|
|
599
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 25
|
|
600
|
+
def _reduce_10( val, _values)
|
|
601
|
+
val[1]
|
|
602
|
+
end
|
|
603
|
+
.,.,
|
|
604
|
+
|
|
605
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 26
|
|
606
|
+
def _reduce_11( val, _values)
|
|
607
|
+
val[1]
|
|
608
|
+
end
|
|
609
|
+
.,.,
|
|
610
|
+
|
|
611
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 27
|
|
612
|
+
def _reduce_12( val, _values)
|
|
613
|
+
val[1]
|
|
614
|
+
end
|
|
615
|
+
.,.,
|
|
616
|
+
|
|
617
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 36
|
|
618
|
+
def _reduce_13( val, _values)
|
|
619
|
+
t = Time.gm(val[3].to_i, val[2], val[1].to_i, 0, 0, 0)
|
|
620
|
+
(t + val[4] - val[5]).localtime
|
|
621
|
+
end
|
|
622
|
+
.,.,
|
|
623
|
+
|
|
624
|
+
# reduce 14 omitted
|
|
625
|
+
|
|
626
|
+
# reduce 15 omitted
|
|
627
|
+
|
|
628
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 45
|
|
629
|
+
def _reduce_16( val, _values)
|
|
630
|
+
(val[0].to_i * 60 * 60) +
|
|
631
|
+
(val[2].to_i * 60)
|
|
632
|
+
end
|
|
633
|
+
.,.,
|
|
634
|
+
|
|
635
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 51
|
|
636
|
+
def _reduce_17( val, _values)
|
|
637
|
+
(val[0].to_i * 60 * 60) +
|
|
638
|
+
(val[2].to_i * 60) +
|
|
639
|
+
(val[4].to_i)
|
|
640
|
+
end
|
|
641
|
+
.,.,
|
|
642
|
+
|
|
643
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 56
|
|
644
|
+
def _reduce_18( val, _values)
|
|
645
|
+
timezone_string_to_unixtime(val[0])
|
|
646
|
+
end
|
|
647
|
+
.,.,
|
|
648
|
+
|
|
649
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 61
|
|
650
|
+
def _reduce_19( val, _values)
|
|
651
|
+
val
|
|
652
|
+
end
|
|
653
|
+
.,.,
|
|
654
|
+
|
|
655
|
+
# reduce 20 omitted
|
|
656
|
+
|
|
657
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 67
|
|
658
|
+
def _reduce_21( val, _values)
|
|
659
|
+
val[1]
|
|
660
|
+
end
|
|
661
|
+
.,.,
|
|
662
|
+
|
|
663
|
+
# reduce 22 omitted
|
|
664
|
+
|
|
665
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 73
|
|
666
|
+
def _reduce_23( val, _values)
|
|
667
|
+
val[1]
|
|
668
|
+
end
|
|
669
|
+
.,.,
|
|
670
|
+
|
|
671
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 79
|
|
672
|
+
def _reduce_24( val, _values)
|
|
673
|
+
join_domain(val[0])
|
|
674
|
+
end
|
|
675
|
+
.,.,
|
|
676
|
+
|
|
677
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 83
|
|
678
|
+
def _reduce_25( val, _values)
|
|
679
|
+
join_domain(val[2])
|
|
680
|
+
end
|
|
681
|
+
.,.,
|
|
682
|
+
|
|
683
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 87
|
|
684
|
+
def _reduce_26( val, _values)
|
|
685
|
+
join_domain(val[0])
|
|
686
|
+
end
|
|
687
|
+
.,.,
|
|
688
|
+
|
|
689
|
+
# reduce 27 omitted
|
|
690
|
+
|
|
691
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 93
|
|
692
|
+
def _reduce_28( val, _values)
|
|
693
|
+
val[1]
|
|
694
|
+
end
|
|
695
|
+
.,.,
|
|
696
|
+
|
|
697
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 98
|
|
698
|
+
def _reduce_29( val, _values)
|
|
699
|
+
[]
|
|
700
|
+
end
|
|
701
|
+
.,.,
|
|
702
|
+
|
|
703
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 103
|
|
704
|
+
def _reduce_30( val, _values)
|
|
705
|
+
val[0].push val[2]
|
|
706
|
+
val[0]
|
|
707
|
+
end
|
|
708
|
+
.,.,
|
|
709
|
+
|
|
710
|
+
# reduce 31 omitted
|
|
711
|
+
|
|
712
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 109
|
|
713
|
+
def _reduce_32( val, _values)
|
|
714
|
+
val[1]
|
|
715
|
+
end
|
|
716
|
+
.,.,
|
|
717
|
+
|
|
718
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 113
|
|
719
|
+
def _reduce_33( val, _values)
|
|
720
|
+
val[1]
|
|
721
|
+
end
|
|
722
|
+
.,.,
|
|
723
|
+
|
|
724
|
+
# reduce 34 omitted
|
|
725
|
+
|
|
726
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 119
|
|
727
|
+
def _reduce_35( val, _values)
|
|
728
|
+
val[1]
|
|
729
|
+
end
|
|
730
|
+
.,.,
|
|
731
|
+
|
|
732
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 125
|
|
733
|
+
def _reduce_36( val, _values)
|
|
734
|
+
val[0].spec
|
|
735
|
+
end
|
|
736
|
+
.,.,
|
|
737
|
+
|
|
738
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 129
|
|
739
|
+
def _reduce_37( val, _values)
|
|
740
|
+
val[0].spec
|
|
741
|
+
end
|
|
742
|
+
.,.,
|
|
743
|
+
|
|
744
|
+
# reduce 38 omitted
|
|
745
|
+
|
|
746
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 136
|
|
747
|
+
def _reduce_39( val, _values)
|
|
748
|
+
val[1]
|
|
749
|
+
end
|
|
750
|
+
.,.,
|
|
751
|
+
|
|
752
|
+
# reduce 40 omitted
|
|
753
|
+
|
|
754
|
+
# reduce 41 omitted
|
|
755
|
+
|
|
756
|
+
# reduce 42 omitted
|
|
757
|
+
|
|
758
|
+
# reduce 43 omitted
|
|
759
|
+
|
|
760
|
+
# reduce 44 omitted
|
|
761
|
+
|
|
762
|
+
# reduce 45 omitted
|
|
763
|
+
|
|
764
|
+
# reduce 46 omitted
|
|
765
|
+
|
|
766
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 146
|
|
767
|
+
def _reduce_47( val, _values)
|
|
768
|
+
[ Address.new(nil, nil) ]
|
|
769
|
+
end
|
|
770
|
+
.,.,
|
|
771
|
+
|
|
772
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 152
|
|
773
|
+
def _reduce_48( val, _values)
|
|
774
|
+
val
|
|
775
|
+
end
|
|
776
|
+
.,.,
|
|
777
|
+
|
|
778
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 157
|
|
779
|
+
def _reduce_49( val, _values)
|
|
780
|
+
val[0].push val[2]
|
|
781
|
+
val[0]
|
|
782
|
+
end
|
|
783
|
+
.,.,
|
|
784
|
+
|
|
785
|
+
# reduce 50 omitted
|
|
786
|
+
|
|
787
|
+
# reduce 51 omitted
|
|
788
|
+
|
|
789
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 165
|
|
790
|
+
def _reduce_52( val, _values)
|
|
791
|
+
val
|
|
792
|
+
end
|
|
793
|
+
.,.,
|
|
794
|
+
|
|
795
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 170
|
|
796
|
+
def _reduce_53( val, _values)
|
|
797
|
+
val[0].push val[2]
|
|
798
|
+
val[0]
|
|
799
|
+
end
|
|
800
|
+
.,.,
|
|
801
|
+
|
|
802
|
+
# reduce 54 omitted
|
|
803
|
+
|
|
804
|
+
# reduce 55 omitted
|
|
805
|
+
|
|
806
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 178
|
|
807
|
+
def _reduce_56( val, _values)
|
|
808
|
+
val[1].phrase = Decoder.decode(val[0])
|
|
809
|
+
val[1]
|
|
810
|
+
end
|
|
811
|
+
.,.,
|
|
812
|
+
|
|
813
|
+
# reduce 57 omitted
|
|
814
|
+
|
|
815
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 185
|
|
816
|
+
def _reduce_58( val, _values)
|
|
817
|
+
AddressGroup.new(val[0], val[2])
|
|
818
|
+
end
|
|
819
|
+
.,.,
|
|
820
|
+
|
|
821
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 185
|
|
822
|
+
def _reduce_59( val, _values)
|
|
823
|
+
AddressGroup.new(val[0], [])
|
|
824
|
+
end
|
|
825
|
+
.,.,
|
|
826
|
+
|
|
827
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 188
|
|
828
|
+
def _reduce_60( val, _values)
|
|
829
|
+
val[0].join('.')
|
|
830
|
+
end
|
|
831
|
+
.,.,
|
|
832
|
+
|
|
833
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 189
|
|
834
|
+
def _reduce_61( val, _values)
|
|
835
|
+
val[0] << ' ' << val[1].join('.')
|
|
836
|
+
end
|
|
837
|
+
.,.,
|
|
838
|
+
|
|
839
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 196
|
|
840
|
+
def _reduce_62( val, _values)
|
|
841
|
+
val[2].routes.replace val[1]
|
|
842
|
+
val[2]
|
|
843
|
+
end
|
|
844
|
+
.,.,
|
|
845
|
+
|
|
846
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 200
|
|
847
|
+
def _reduce_63( val, _values)
|
|
848
|
+
val[1]
|
|
849
|
+
end
|
|
850
|
+
.,.,
|
|
851
|
+
|
|
852
|
+
# reduce 64 omitted
|
|
853
|
+
|
|
854
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 203
|
|
855
|
+
def _reduce_65( val, _values)
|
|
856
|
+
[ val[1].join('.') ]
|
|
857
|
+
end
|
|
858
|
+
.,.,
|
|
859
|
+
|
|
860
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 204
|
|
861
|
+
def _reduce_66( val, _values)
|
|
862
|
+
val[0].push val[3].join('.'); val[0]
|
|
863
|
+
end
|
|
864
|
+
.,.,
|
|
865
|
+
|
|
866
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 206
|
|
867
|
+
def _reduce_67( val, _values)
|
|
868
|
+
Address.new( val[0], val[2] )
|
|
869
|
+
end
|
|
870
|
+
.,.,
|
|
871
|
+
|
|
872
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 207
|
|
873
|
+
def _reduce_68( val, _values)
|
|
874
|
+
Address.new( val[0], nil )
|
|
875
|
+
end
|
|
876
|
+
.,.,
|
|
877
|
+
|
|
878
|
+
# reduce 69 omitted
|
|
879
|
+
|
|
880
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 210
|
|
881
|
+
def _reduce_70( val, _values)
|
|
882
|
+
val[0].push ''; val[0]
|
|
883
|
+
end
|
|
884
|
+
.,.,
|
|
885
|
+
|
|
886
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 213
|
|
887
|
+
def _reduce_71( val, _values)
|
|
888
|
+
val
|
|
889
|
+
end
|
|
890
|
+
.,.,
|
|
891
|
+
|
|
892
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 222
|
|
893
|
+
def _reduce_72( val, _values)
|
|
894
|
+
val[1].times do
|
|
895
|
+
val[0].push ''
|
|
896
|
+
end
|
|
897
|
+
val[0].push val[2]
|
|
898
|
+
val[0]
|
|
899
|
+
end
|
|
900
|
+
.,.,
|
|
901
|
+
|
|
902
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 224
|
|
903
|
+
def _reduce_73( val, _values)
|
|
904
|
+
val
|
|
905
|
+
end
|
|
906
|
+
.,.,
|
|
907
|
+
|
|
908
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 233
|
|
909
|
+
def _reduce_74( val, _values)
|
|
910
|
+
val[1].times do
|
|
911
|
+
val[0].push ''
|
|
912
|
+
end
|
|
913
|
+
val[0].push val[2]
|
|
914
|
+
val[0]
|
|
915
|
+
end
|
|
916
|
+
.,.,
|
|
917
|
+
|
|
918
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 234
|
|
919
|
+
def _reduce_75( val, _values)
|
|
920
|
+
0
|
|
921
|
+
end
|
|
922
|
+
.,.,
|
|
923
|
+
|
|
924
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 235
|
|
925
|
+
def _reduce_76( val, _values)
|
|
926
|
+
val[0] + 1
|
|
927
|
+
end
|
|
928
|
+
.,.,
|
|
929
|
+
|
|
930
|
+
# reduce 77 omitted
|
|
931
|
+
|
|
932
|
+
# reduce 78 omitted
|
|
933
|
+
|
|
934
|
+
# reduce 79 omitted
|
|
935
|
+
|
|
936
|
+
# reduce 80 omitted
|
|
937
|
+
|
|
938
|
+
# reduce 81 omitted
|
|
939
|
+
|
|
940
|
+
# reduce 82 omitted
|
|
941
|
+
|
|
942
|
+
# reduce 83 omitted
|
|
943
|
+
|
|
944
|
+
# reduce 84 omitted
|
|
945
|
+
|
|
946
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 253
|
|
947
|
+
def _reduce_85( val, _values)
|
|
948
|
+
val[1] = val[1].spec
|
|
949
|
+
val.join('')
|
|
950
|
+
end
|
|
951
|
+
.,.,
|
|
952
|
+
|
|
953
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 254
|
|
954
|
+
def _reduce_86( val, _values)
|
|
955
|
+
val
|
|
956
|
+
end
|
|
957
|
+
.,.,
|
|
958
|
+
|
|
959
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 255
|
|
960
|
+
def _reduce_87( val, _values)
|
|
961
|
+
val[0].push val[2]; val[0]
|
|
962
|
+
end
|
|
963
|
+
.,.,
|
|
964
|
+
|
|
965
|
+
# reduce 88 omitted
|
|
966
|
+
|
|
967
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 258
|
|
968
|
+
def _reduce_89( val, _values)
|
|
969
|
+
val[0] << ' ' << val[1]
|
|
970
|
+
end
|
|
971
|
+
.,.,
|
|
972
|
+
|
|
973
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 265
|
|
974
|
+
def _reduce_90( val, _values)
|
|
975
|
+
val.push nil
|
|
976
|
+
val
|
|
977
|
+
end
|
|
978
|
+
.,.,
|
|
979
|
+
|
|
980
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 269
|
|
981
|
+
def _reduce_91( val, _values)
|
|
982
|
+
val
|
|
983
|
+
end
|
|
984
|
+
.,.,
|
|
985
|
+
|
|
986
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 274
|
|
987
|
+
def _reduce_92( val, _values)
|
|
988
|
+
[ val[0].to_i, val[2].to_i ]
|
|
989
|
+
end
|
|
990
|
+
.,.,
|
|
991
|
+
|
|
992
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 279
|
|
993
|
+
def _reduce_93( val, _values)
|
|
994
|
+
[ val[0].downcase, val[2].downcase, decode_params(val[3]) ]
|
|
995
|
+
end
|
|
996
|
+
.,.,
|
|
997
|
+
|
|
998
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 283
|
|
999
|
+
def _reduce_94( val, _values)
|
|
1000
|
+
[ val[0].downcase, nil, decode_params(val[1]) ]
|
|
1001
|
+
end
|
|
1002
|
+
.,.,
|
|
1003
|
+
|
|
1004
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 288
|
|
1005
|
+
def _reduce_95( val, _values)
|
|
1006
|
+
{}
|
|
1007
|
+
end
|
|
1008
|
+
.,.,
|
|
1009
|
+
|
|
1010
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 293
|
|
1011
|
+
def _reduce_96( val, _values)
|
|
1012
|
+
val[0][ val[2].downcase ] = ('"' + val[4].to_s + '"')
|
|
1013
|
+
val[0]
|
|
1014
|
+
end
|
|
1015
|
+
.,.,
|
|
1016
|
+
|
|
1017
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 298
|
|
1018
|
+
def _reduce_97( val, _values)
|
|
1019
|
+
val[0][ val[2].downcase ] = val[4]
|
|
1020
|
+
val[0]
|
|
1021
|
+
end
|
|
1022
|
+
.,.,
|
|
1023
|
+
|
|
1024
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 303
|
|
1025
|
+
def _reduce_98( val, _values)
|
|
1026
|
+
val[0].downcase
|
|
1027
|
+
end
|
|
1028
|
+
.,.,
|
|
1029
|
+
|
|
1030
|
+
module_eval <<'.,.,', 'lib/tmail/parser.y', 308
|
|
1031
|
+
def _reduce_99( val, _values)
|
|
1032
|
+
[ val[0].downcase, decode_params(val[1]) ]
|
|
1033
|
+
end
|
|
1034
|
+
.,.,
|
|
1035
|
+
|
|
1036
|
+
# reduce 100 omitted
|
|
1037
|
+
|
|
1038
|
+
# reduce 101 omitted
|
|
1039
|
+
|
|
1040
|
+
# reduce 102 omitted
|
|
1041
|
+
|
|
1042
|
+
# reduce 103 omitted
|
|
1043
|
+
|
|
1044
|
+
# reduce 104 omitted
|
|
1045
|
+
|
|
1046
|
+
# reduce 105 omitted
|
|
1047
|
+
|
|
1048
|
+
# reduce 106 omitted
|
|
1049
|
+
|
|
1050
|
+
# reduce 107 omitted
|
|
1051
|
+
|
|
1052
|
+
# reduce 108 omitted
|
|
1053
|
+
|
|
1054
|
+
def _reduce_none( val, _values)
|
|
1055
|
+
val[0]
|
|
1056
|
+
end
|
|
1057
|
+
|
|
1058
|
+
end # class Parser
|
|
1059
|
+
|
|
1060
|
+
end # module TMail
|