-
Notifications
You must be signed in to change notification settings - Fork 935
/
patterns.rb
34 lines (30 loc) · 1.09 KB
/
patterns.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# encoding: us-ascii
module Mail
module Patterns
white_space = %Q|\x9\x20|
text = %Q|\x1-\x8\xB\xC\xE-\x7f|
field_name = %Q|\x21-\x39\x3b-\x7e|
qp_safe = %Q|\x20-\x3c\x3e-\x7e|
aspecial = %Q|()<>[]:;@\\,."| # RFC5322
tspecial = %Q|()<>@,;:\\"/[]?=| # RFC2045
sp = %Q| |
control = %Q|\x00-\x1f\x7f-\xff|
if control.respond_to?(:force_encoding)
control = control.force_encoding(Encoding::BINARY)
end
CRLF = /\r\n/
WSP = /[#{white_space}]/
FWS = /#{CRLF}#{WSP}*/
TEXT = /[#{text}]/ # + obs-text
FIELD_NAME = /[#{field_name}]+/
FIELD_BODY = /.+/
FIELD_LINE = /^[#{field_name}]+:\s*.+$/
HEADER_LINE = /^([#{field_name}]+:\s*.+)$/
QP_UNSAFE = /[^#{qp_safe}]/
QP_SAFE = /[#{qp_safe}]/
CONTROL_CHAR = /[#{control}]/n
ATOM_UNSAFE = /[#{Regexp.quote aspecial}#{control}#{sp}]/n
PHRASE_UNSAFE = /[#{Regexp.quote aspecial}#{control}]/n
TOKEN_UNSAFE = /[#{Regexp.quote tspecial}#{control}#{sp}]/n
end
end