mail 2.5.5 → 2.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (191) hide show
  1. checksums.yaml +5 -5
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +170 -108
  4. data/lib/mail/attachments_list.rb +13 -10
  5. data/lib/mail/body.rb +105 -91
  6. data/lib/mail/check_delivery_params.rb +30 -22
  7. data/lib/mail/configuration.rb +3 -0
  8. data/lib/mail/constants.rb +79 -0
  9. data/lib/mail/elements/address.rb +118 -174
  10. data/lib/mail/elements/address_list.rb +16 -56
  11. data/lib/mail/elements/content_disposition_element.rb +12 -22
  12. data/lib/mail/elements/content_location_element.rb +9 -17
  13. data/lib/mail/elements/content_transfer_encoding_element.rb +8 -19
  14. data/lib/mail/elements/content_type_element.rb +20 -30
  15. data/lib/mail/elements/date_time_element.rb +10 -21
  16. data/lib/mail/elements/envelope_from_element.rb +23 -31
  17. data/lib/mail/elements/message_ids_element.rb +22 -20
  18. data/lib/mail/elements/mime_version_element.rb +10 -21
  19. data/lib/mail/elements/phrase_list.rb +13 -15
  20. data/lib/mail/elements/received_element.rb +26 -21
  21. data/lib/mail/elements.rb +1 -0
  22. data/lib/mail/encodings/7bit.rb +10 -14
  23. data/lib/mail/encodings/8bit.rb +5 -18
  24. data/lib/mail/encodings/base64.rb +15 -10
  25. data/lib/mail/encodings/binary.rb +4 -22
  26. data/lib/mail/encodings/identity.rb +24 -0
  27. data/lib/mail/encodings/quoted_printable.rb +13 -7
  28. data/lib/mail/encodings/transfer_encoding.rb +47 -28
  29. data/lib/mail/encodings/unix_to_unix.rb +20 -0
  30. data/lib/mail/encodings.rb +102 -93
  31. data/lib/mail/envelope.rb +12 -19
  32. data/lib/mail/field.rb +143 -71
  33. data/lib/mail/field_list.rb +73 -19
  34. data/lib/mail/fields/bcc_field.rb +42 -48
  35. data/lib/mail/fields/cc_field.rb +29 -50
  36. data/lib/mail/fields/comments_field.rb +28 -37
  37. data/lib/mail/fields/common_address_field.rb +170 -0
  38. data/lib/mail/fields/common_date_field.rb +58 -0
  39. data/lib/mail/fields/common_field.rb +77 -0
  40. data/lib/mail/fields/common_message_id_field.rb +42 -0
  41. data/lib/mail/fields/content_description_field.rb +8 -14
  42. data/lib/mail/fields/content_disposition_field.rb +20 -44
  43. data/lib/mail/fields/content_id_field.rb +25 -51
  44. data/lib/mail/fields/content_location_field.rb +12 -25
  45. data/lib/mail/fields/content_transfer_encoding_field.rb +31 -36
  46. data/lib/mail/fields/content_type_field.rb +51 -80
  47. data/lib/mail/fields/date_field.rb +24 -52
  48. data/lib/mail/fields/from_field.rb +29 -50
  49. data/lib/mail/fields/in_reply_to_field.rb +39 -49
  50. data/lib/mail/fields/keywords_field.rb +19 -32
  51. data/lib/mail/fields/message_id_field.rb +26 -71
  52. data/lib/mail/fields/mime_version_field.rb +20 -30
  53. data/lib/mail/fields/named_structured_field.rb +11 -0
  54. data/lib/mail/fields/named_unstructured_field.rb +11 -0
  55. data/lib/mail/fields/optional_field.rb +10 -7
  56. data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +16 -13
  57. data/lib/mail/fields/received_field.rb +44 -57
  58. data/lib/mail/fields/references_field.rb +36 -49
  59. data/lib/mail/fields/reply_to_field.rb +29 -50
  60. data/lib/mail/fields/resent_bcc_field.rb +29 -50
  61. data/lib/mail/fields/resent_cc_field.rb +29 -50
  62. data/lib/mail/fields/resent_date_field.rb +6 -30
  63. data/lib/mail/fields/resent_from_field.rb +29 -50
  64. data/lib/mail/fields/resent_message_id_field.rb +6 -29
  65. data/lib/mail/fields/resent_sender_field.rb +28 -57
  66. data/lib/mail/fields/resent_to_field.rb +29 -50
  67. data/lib/mail/fields/return_path_field.rb +51 -55
  68. data/lib/mail/fields/sender_field.rb +35 -56
  69. data/lib/mail/fields/structured_field.rb +4 -30
  70. data/lib/mail/fields/subject_field.rb +10 -11
  71. data/lib/mail/fields/to_field.rb +29 -50
  72. data/lib/mail/fields/unstructured_field.rb +43 -51
  73. data/lib/mail/fields.rb +1 -0
  74. data/lib/mail/header.rb +78 -129
  75. data/lib/mail/indifferent_hash.rb +1 -0
  76. data/lib/mail/mail.rb +18 -11
  77. data/lib/mail/matchers/attachment_matchers.rb +44 -0
  78. data/lib/mail/matchers/has_sent_mail.rb +81 -4
  79. data/lib/mail/message.rb +142 -139
  80. data/lib/mail/multibyte/chars.rb +24 -180
  81. data/lib/mail/multibyte/unicode.rb +32 -27
  82. data/lib/mail/multibyte/utils.rb +27 -43
  83. data/lib/mail/multibyte.rb +56 -16
  84. data/lib/mail/network/delivery_methods/exim.rb +6 -4
  85. data/lib/mail/network/delivery_methods/file_delivery.rb +12 -10
  86. data/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
  87. data/lib/mail/network/delivery_methods/sendmail.rb +63 -21
  88. data/lib/mail/network/delivery_methods/smtp.rb +76 -50
  89. data/lib/mail/network/delivery_methods/smtp_connection.rb +4 -4
  90. data/lib/mail/network/delivery_methods/test_mailer.rb +5 -2
  91. data/lib/mail/network/retriever_methods/base.rb +9 -8
  92. data/lib/mail/network/retriever_methods/imap.rb +37 -18
  93. data/lib/mail/network/retriever_methods/pop3.rb +6 -3
  94. data/lib/mail/network/retriever_methods/test_retriever.rb +4 -2
  95. data/lib/mail/network.rb +2 -0
  96. data/lib/mail/parser_tools.rb +15 -0
  97. data/lib/mail/parsers/address_lists_parser.rb +33242 -0
  98. data/lib/mail/parsers/address_lists_parser.rl +179 -0
  99. data/lib/mail/parsers/content_disposition_parser.rb +901 -0
  100. data/lib/mail/parsers/content_disposition_parser.rl +89 -0
  101. data/lib/mail/parsers/content_location_parser.rb +822 -0
  102. data/lib/mail/parsers/content_location_parser.rl +78 -0
  103. data/lib/mail/parsers/content_transfer_encoding_parser.rb +522 -0
  104. data/lib/mail/parsers/content_transfer_encoding_parser.rl +71 -0
  105. data/lib/mail/parsers/content_type_parser.rb +1048 -0
  106. data/lib/mail/parsers/content_type_parser.rl +90 -0
  107. data/lib/mail/parsers/date_time_parser.rb +891 -0
  108. data/lib/mail/parsers/date_time_parser.rl +69 -0
  109. data/lib/mail/parsers/envelope_from_parser.rb +3675 -0
  110. data/lib/mail/parsers/envelope_from_parser.rl +89 -0
  111. data/lib/mail/parsers/message_ids_parser.rb +5161 -0
  112. data/lib/mail/parsers/message_ids_parser.rl +93 -0
  113. data/lib/mail/parsers/mime_version_parser.rb +513 -0
  114. data/lib/mail/parsers/mime_version_parser.rl +68 -0
  115. data/lib/mail/parsers/phrase_lists_parser.rb +884 -0
  116. data/lib/mail/parsers/phrase_lists_parser.rl +90 -0
  117. data/lib/mail/parsers/received_parser.rb +8782 -0
  118. data/lib/mail/parsers/received_parser.rl +91 -0
  119. data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  120. data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  121. data/lib/mail/parsers/rfc2045_mime.rl +16 -0
  122. data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  123. data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  124. data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  125. data/lib/mail/parsers/rfc5322.rl +74 -0
  126. data/lib/mail/parsers/rfc5322_address.rl +72 -0
  127. data/lib/mail/parsers/rfc5322_date_time.rl +37 -0
  128. data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  129. data/lib/mail/parsers.rb +13 -0
  130. data/lib/mail/part.rb +11 -12
  131. data/lib/mail/parts_list.rb +90 -14
  132. data/lib/mail/smtp_envelope.rb +57 -0
  133. data/lib/mail/utilities.rb +415 -76
  134. data/lib/mail/values/unicode_tables.dat +0 -0
  135. data/lib/mail/version.rb +8 -15
  136. data/lib/mail/yaml.rb +30 -0
  137. data/lib/mail.rb +9 -32
  138. metadata +127 -79
  139. data/CHANGELOG.rdoc +0 -742
  140. data/CONTRIBUTING.md +0 -45
  141. data/Dependencies.txt +0 -3
  142. data/Gemfile +0 -32
  143. data/Rakefile +0 -21
  144. data/TODO.rdoc +0 -9
  145. data/lib/VERSION +0 -4
  146. data/lib/load_parsers.rb +0 -35
  147. data/lib/mail/core_extensions/nil.rb +0 -19
  148. data/lib/mail/core_extensions/object.rb +0 -13
  149. data/lib/mail/core_extensions/smtp.rb +0 -24
  150. data/lib/mail/core_extensions/string/access.rb +0 -145
  151. data/lib/mail/core_extensions/string/multibyte.rb +0 -78
  152. data/lib/mail/core_extensions/string.rb +0 -33
  153. data/lib/mail/fields/common/address_container.rb +0 -16
  154. data/lib/mail/fields/common/common_address.rb +0 -140
  155. data/lib/mail/fields/common/common_date.rb +0 -42
  156. data/lib/mail/fields/common/common_field.rb +0 -57
  157. data/lib/mail/fields/common/common_message_id.rb +0 -48
  158. data/lib/mail/multibyte/exceptions.rb +0 -8
  159. data/lib/mail/parsers/address_lists.rb +0 -64
  160. data/lib/mail/parsers/address_lists.treetop +0 -19
  161. data/lib/mail/parsers/content_disposition.rb +0 -535
  162. data/lib/mail/parsers/content_disposition.treetop +0 -46
  163. data/lib/mail/parsers/content_location.rb +0 -139
  164. data/lib/mail/parsers/content_location.treetop +0 -20
  165. data/lib/mail/parsers/content_transfer_encoding.rb +0 -201
  166. data/lib/mail/parsers/content_transfer_encoding.treetop +0 -18
  167. data/lib/mail/parsers/content_type.rb +0 -971
  168. data/lib/mail/parsers/content_type.treetop +0 -68
  169. data/lib/mail/parsers/date_time.rb +0 -114
  170. data/lib/mail/parsers/date_time.treetop +0 -11
  171. data/lib/mail/parsers/envelope_from.rb +0 -194
  172. data/lib/mail/parsers/envelope_from.treetop +0 -32
  173. data/lib/mail/parsers/message_ids.rb +0 -45
  174. data/lib/mail/parsers/message_ids.treetop +0 -15
  175. data/lib/mail/parsers/mime_version.rb +0 -144
  176. data/lib/mail/parsers/mime_version.treetop +0 -19
  177. data/lib/mail/parsers/phrase_lists.rb +0 -45
  178. data/lib/mail/parsers/phrase_lists.treetop +0 -15
  179. data/lib/mail/parsers/received.rb +0 -71
  180. data/lib/mail/parsers/received.treetop +0 -11
  181. data/lib/mail/parsers/rfc2045.rb +0 -421
  182. data/lib/mail/parsers/rfc2045.treetop +0 -35
  183. data/lib/mail/parsers/rfc2822.rb +0 -5397
  184. data/lib/mail/parsers/rfc2822.treetop +0 -408
  185. data/lib/mail/parsers/rfc2822_obsolete.rb +0 -3768
  186. data/lib/mail/parsers/rfc2822_obsolete.treetop +0 -241
  187. data/lib/mail/patterns.rb +0 -35
  188. data/lib/mail/version_specific/ruby_1_8.rb +0 -119
  189. data/lib/mail/version_specific/ruby_1_9.rb +0 -147
  190. data/lib/tasks/corpus.rake +0 -125
  191. data/lib/tasks/treetop.rake +0 -10
@@ -1,71 +0,0 @@
1
- # Autogenerated from a Treetop grammar. Edits may be lost.
2
-
3
-
4
- module Mail
5
- module Received
6
- include Treetop::Runtime
7
-
8
- def root
9
- @root ||= :primary
10
- end
11
-
12
- include RFC2822
13
-
14
- module Primary0
15
- def name_val_list
16
- elements[0]
17
- end
18
-
19
- def date_time
20
- elements[2]
21
- end
22
- end
23
-
24
- def _nt_primary
25
- start_index = index
26
- if node_cache[:primary].has_key?(index)
27
- cached = node_cache[:primary][index]
28
- if cached
29
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
30
- @index = cached.interval.end
31
- end
32
- return cached
33
- end
34
-
35
- i0, s0 = index, []
36
- r1 = _nt_name_val_list
37
- s0 << r1
38
- if r1
39
- if has_terminal?(";", false, index)
40
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
41
- @index += 1
42
- else
43
- terminal_parse_failure(";")
44
- r2 = nil
45
- end
46
- s0 << r2
47
- if r2
48
- r3 = _nt_date_time
49
- s0 << r3
50
- end
51
- end
52
- if s0.last
53
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
54
- r0.extend(Primary0)
55
- else
56
- @index = i0
57
- r0 = nil
58
- end
59
-
60
- node_cache[:primary][start_index] = r0
61
-
62
- r0
63
- end
64
-
65
- end
66
-
67
- class ReceivedParser < Treetop::Runtime::CompiledParser
68
- include Received
69
- end
70
-
71
- end
@@ -1,11 +0,0 @@
1
- module Mail
2
- grammar Received
3
-
4
- include RFC2822
5
-
6
- rule primary
7
- name_val_list ";" date_time
8
- end
9
-
10
- end
11
- end
@@ -1,421 +0,0 @@
1
- # Autogenerated from a Treetop grammar. Edits may be lost.
2
-
3
-
4
- module Mail
5
- module RFC2045
6
- include Treetop::Runtime
7
-
8
- def root
9
- @root ||= :tspecials
10
- end
11
-
12
- def _nt_tspecials
13
- start_index = index
14
- if node_cache[:tspecials].has_key?(index)
15
- cached = node_cache[:tspecials][index]
16
- if cached
17
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
18
- @index = cached.interval.end
19
- end
20
- return cached
21
- end
22
-
23
- i0 = index
24
- if has_terminal?("(", false, index)
25
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
26
- @index += 1
27
- else
28
- terminal_parse_failure("(")
29
- r1 = nil
30
- end
31
- if r1
32
- r0 = r1
33
- else
34
- if has_terminal?(")", false, index)
35
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
36
- @index += 1
37
- else
38
- terminal_parse_failure(")")
39
- r2 = nil
40
- end
41
- if r2
42
- r0 = r2
43
- else
44
- if has_terminal?("<", false, index)
45
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
46
- @index += 1
47
- else
48
- terminal_parse_failure("<")
49
- r3 = nil
50
- end
51
- if r3
52
- r0 = r3
53
- else
54
- if has_terminal?(">", false, index)
55
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
56
- @index += 1
57
- else
58
- terminal_parse_failure(">")
59
- r4 = nil
60
- end
61
- if r4
62
- r0 = r4
63
- else
64
- if has_terminal?("@", false, index)
65
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
66
- @index += 1
67
- else
68
- terminal_parse_failure("@")
69
- r5 = nil
70
- end
71
- if r5
72
- r0 = r5
73
- else
74
- if has_terminal?(",", false, index)
75
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
76
- @index += 1
77
- else
78
- terminal_parse_failure(",")
79
- r6 = nil
80
- end
81
- if r6
82
- r0 = r6
83
- else
84
- if has_terminal?(";", false, index)
85
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
86
- @index += 1
87
- else
88
- terminal_parse_failure(";")
89
- r7 = nil
90
- end
91
- if r7
92
- r0 = r7
93
- else
94
- if has_terminal?(":", false, index)
95
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
96
- @index += 1
97
- else
98
- terminal_parse_failure(":")
99
- r8 = nil
100
- end
101
- if r8
102
- r0 = r8
103
- else
104
- if has_terminal?('\\', false, index)
105
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
106
- @index += 1
107
- else
108
- terminal_parse_failure('\\')
109
- r9 = nil
110
- end
111
- if r9
112
- r0 = r9
113
- else
114
- if has_terminal?("<", false, index)
115
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
116
- @index += 1
117
- else
118
- terminal_parse_failure("<")
119
- r10 = nil
120
- end
121
- if r10
122
- r0 = r10
123
- else
124
- if has_terminal?(">", false, index)
125
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
126
- @index += 1
127
- else
128
- terminal_parse_failure(">")
129
- r11 = nil
130
- end
131
- if r11
132
- r0 = r11
133
- else
134
- if has_terminal?("/", false, index)
135
- r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
136
- @index += 1
137
- else
138
- terminal_parse_failure("/")
139
- r12 = nil
140
- end
141
- if r12
142
- r0 = r12
143
- else
144
- if has_terminal?("[", false, index)
145
- r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
146
- @index += 1
147
- else
148
- terminal_parse_failure("[")
149
- r13 = nil
150
- end
151
- if r13
152
- r0 = r13
153
- else
154
- if has_terminal?("]", false, index)
155
- r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
156
- @index += 1
157
- else
158
- terminal_parse_failure("]")
159
- r14 = nil
160
- end
161
- if r14
162
- r0 = r14
163
- else
164
- if has_terminal?("?", false, index)
165
- r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
166
- @index += 1
167
- else
168
- terminal_parse_failure("?")
169
- r15 = nil
170
- end
171
- if r15
172
- r0 = r15
173
- else
174
- if has_terminal?("=", false, index)
175
- r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
176
- @index += 1
177
- else
178
- terminal_parse_failure("=")
179
- r16 = nil
180
- end
181
- if r16
182
- r0 = r16
183
- else
184
- @index = i0
185
- r0 = nil
186
- end
187
- end
188
- end
189
- end
190
- end
191
- end
192
- end
193
- end
194
- end
195
- end
196
- end
197
- end
198
- end
199
- end
200
- end
201
- end
202
-
203
- node_cache[:tspecials][start_index] = r0
204
-
205
- r0
206
- end
207
-
208
- def _nt_ietf_token
209
- start_index = index
210
- if node_cache[:ietf_token].has_key?(index)
211
- cached = node_cache[:ietf_token][index]
212
- if cached
213
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
214
- @index = cached.interval.end
215
- end
216
- return cached
217
- end
218
-
219
- s0, i0 = [], index
220
- loop do
221
- r1 = _nt_token
222
- if r1
223
- s0 << r1
224
- else
225
- break
226
- end
227
- end
228
- if s0.empty?
229
- @index = i0
230
- r0 = nil
231
- else
232
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
233
- end
234
-
235
- node_cache[:ietf_token][start_index] = r0
236
-
237
- r0
238
- end
239
-
240
- module CustomXToken0
241
- end
242
-
243
- def _nt_custom_x_token
244
- start_index = index
245
- if node_cache[:custom_x_token].has_key?(index)
246
- cached = node_cache[:custom_x_token][index]
247
- if cached
248
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
249
- @index = cached.interval.end
250
- end
251
- return cached
252
- end
253
-
254
- i0, s0 = index, []
255
- if has_terminal?('\G[xX]', true, index)
256
- r1 = true
257
- @index += 1
258
- else
259
- r1 = nil
260
- end
261
- s0 << r1
262
- if r1
263
- if has_terminal?("-", false, index)
264
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
265
- @index += 1
266
- else
267
- terminal_parse_failure("-")
268
- r2 = nil
269
- end
270
- s0 << r2
271
- if r2
272
- s3, i3 = [], index
273
- loop do
274
- r4 = _nt_token
275
- if r4
276
- s3 << r4
277
- else
278
- break
279
- end
280
- end
281
- if s3.empty?
282
- @index = i3
283
- r3 = nil
284
- else
285
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
286
- end
287
- s0 << r3
288
- end
289
- end
290
- if s0.last
291
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
292
- r0.extend(CustomXToken0)
293
- else
294
- @index = i0
295
- r0 = nil
296
- end
297
-
298
- node_cache[:custom_x_token][start_index] = r0
299
-
300
- r0
301
- end
302
-
303
- def _nt_iana_token
304
- start_index = index
305
- if node_cache[:iana_token].has_key?(index)
306
- cached = node_cache[:iana_token][index]
307
- if cached
308
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
309
- @index = cached.interval.end
310
- end
311
- return cached
312
- end
313
-
314
- s0, i0 = [], index
315
- loop do
316
- r1 = _nt_token
317
- if r1
318
- s0 << r1
319
- else
320
- break
321
- end
322
- end
323
- if s0.empty?
324
- @index = i0
325
- r0 = nil
326
- else
327
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
328
- end
329
-
330
- node_cache[:iana_token][start_index] = r0
331
-
332
- r0
333
- end
334
-
335
- def _nt_token
336
- start_index = index
337
- if node_cache[:token].has_key?(index)
338
- cached = node_cache[:token][index]
339
- if cached
340
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
341
- @index = cached.interval.end
342
- end
343
- return cached
344
- end
345
-
346
- i0 = index
347
- if has_terminal?('\G[\\x21-\\x27]', true, index)
348
- r1 = true
349
- @index += 1
350
- else
351
- r1 = nil
352
- end
353
- if r1
354
- r0 = r1
355
- else
356
- if has_terminal?('\G[\\x2a-\\x2b]', true, index)
357
- r2 = true
358
- @index += 1
359
- else
360
- r2 = nil
361
- end
362
- if r2
363
- r0 = r2
364
- else
365
- if has_terminal?('\G[\\x2c-\\x2e]', true, index)
366
- r3 = true
367
- @index += 1
368
- else
369
- r3 = nil
370
- end
371
- if r3
372
- r0 = r3
373
- else
374
- if has_terminal?('\G[\\x30-\\x39]', true, index)
375
- r4 = true
376
- @index += 1
377
- else
378
- r4 = nil
379
- end
380
- if r4
381
- r0 = r4
382
- else
383
- if has_terminal?('\G[\\x41-\\x5a]', true, index)
384
- r5 = true
385
- @index += 1
386
- else
387
- r5 = nil
388
- end
389
- if r5
390
- r0 = r5
391
- else
392
- if has_terminal?('\G[\\x5e-\\x7e]', true, index)
393
- r6 = true
394
- @index += 1
395
- else
396
- r6 = nil
397
- end
398
- if r6
399
- r0 = r6
400
- else
401
- @index = i0
402
- r0 = nil
403
- end
404
- end
405
- end
406
- end
407
- end
408
- end
409
-
410
- node_cache[:token][start_index] = r0
411
-
412
- r0
413
- end
414
-
415
- end
416
-
417
- class RFC2045Parser < Treetop::Runtime::CompiledParser
418
- include RFC2045
419
- end
420
-
421
- end
@@ -1,35 +0,0 @@
1
- module Mail
2
- grammar RFC2045
3
-
4
- rule tspecials
5
- "(" / ")" / "<" / ">" / "@" /
6
- "," / ";" / ":" / '\\' / "<" / ">" /
7
- "/" / "[" / "]" / "?" / "="
8
- end
9
-
10
- rule ietf_token
11
- token+
12
- end
13
-
14
- rule custom_x_token
15
- [xX] "-" token+
16
- end
17
-
18
- rule iana_token
19
- token+
20
- # <A publicly-defined extension token. Tokens
21
- # of this form must be registered with IANA
22
- # as specified in RFC 2048.>
23
- end
24
-
25
- rule token
26
- [\x21-\x27] / # any (US-ASCII) CHAR
27
- [\x2a-\x2b] / # except SPACE,
28
- [\x2c-\x2e] / # CTLs,
29
- [\x30-\x39] / # or tspecials
30
- [\x41-\x5a] /
31
- [\x5e-\x7e]
32
- end
33
-
34
- end
35
- end