mailparser 0.4.22a

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.
@@ -0,0 +1,883 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by racc 1.4.5
4
+ # from racc grammer file "lib/mailparser/rfc2822/parser.y".
5
+ #
6
+
7
+ require 'racc/parser'
8
+
9
+
10
+ module MailParser
11
+
12
+ module RFC2822
13
+
14
+ class Parser < Racc::Parser
15
+
16
+ module_eval <<'..end lib/mailparser/rfc2822/parser.y modeval..id191275a7dd', 'lib/mailparser/rfc2822/parser.y', 346
17
+
18
+ require "mailparser/rfc2822/scanner"
19
+
20
+ def initialize(opt={})
21
+ @opt = opt
22
+ super()
23
+ end
24
+
25
+ def parse(header_type, value)
26
+ @header_type = header_type
27
+ @value = value
28
+ @last_id = nil
29
+ @comma_list = []
30
+ @scanner = Scanner.new(header_type, value)
31
+ ret = yyparse(self, :parse_sub)
32
+ class << ret
33
+ attr_accessor :comments
34
+ end
35
+ ret.comments = decode2(@scanner.comments)
36
+ ret
37
+ end
38
+
39
+ def parse_sub(&block)
40
+ yield @header_type, nil
41
+ @scanner.scan(&block)
42
+ end
43
+
44
+ def on_error(t, val, vstack)
45
+ # p t, val, vstack
46
+ # p racc_token2str(t)
47
+ raise MailParser::ParseError, val+@scanner.rest
48
+ end
49
+
50
+ def decode(s)
51
+ return s unless @opt[:decode_mime_header]
52
+ RFC2047.decode(s, @opt)
53
+ end
54
+
55
+ def decode2(ary)
56
+ ary.map{|i| decode(i)}
57
+ end
58
+ ..end lib/mailparser/rfc2822/parser.y modeval..id191275a7dd
59
+
60
+ ##### racc 1.4.5 generates ###
61
+
62
+ racc_reduce_table = [
63
+ 0, 0, :racc_error,
64
+ 2, 28, :_reduce_1,
65
+ 2, 28, :_reduce_2,
66
+ 2, 28, :_reduce_3,
67
+ 2, 28, :_reduce_4,
68
+ 2, 28, :_reduce_5,
69
+ 2, 28, :_reduce_6,
70
+ 2, 28, :_reduce_7,
71
+ 2, 28, :_reduce_8,
72
+ 2, 28, :_reduce_9,
73
+ 2, 28, :_reduce_10,
74
+ 2, 28, :_reduce_11,
75
+ 2, 28, :_reduce_12,
76
+ 1, 29, :_reduce_13,
77
+ 1, 39, :_reduce_14,
78
+ 3, 39, :_reduce_15,
79
+ 0, 40, :_reduce_none,
80
+ 1, 40, :_reduce_none,
81
+ 1, 31, :_reduce_18,
82
+ 1, 41, :_reduce_19,
83
+ 3, 41, :_reduce_20,
84
+ 0, 42, :_reduce_none,
85
+ 1, 42, :_reduce_none,
86
+ 1, 43, :_reduce_none,
87
+ 1, 43, :_reduce_none,
88
+ 1, 30, :_reduce_none,
89
+ 1, 30, :_reduce_26,
90
+ 1, 45, :_reduce_27,
91
+ 2, 45, :_reduce_28,
92
+ 1, 49, :_reduce_29,
93
+ 2, 49, :_reduce_30,
94
+ 3, 47, :_reduce_31,
95
+ 4, 47, :_reduce_32,
96
+ 2, 50, :_reduce_none,
97
+ 2, 51, :_reduce_none,
98
+ 4, 51, :_reduce_none,
99
+ 0, 53, :_reduce_none,
100
+ 2, 53, :_reduce_none,
101
+ 4, 44, :_reduce_38,
102
+ 1, 48, :_reduce_39,
103
+ 1, 34, :_reduce_40,
104
+ 3, 34, :_reduce_41,
105
+ 0, 55, :_reduce_none,
106
+ 1, 55, :_reduce_43,
107
+ 1, 56, :_reduce_none,
108
+ 1, 56, :_reduce_none,
109
+ 1, 54, :_reduce_46,
110
+ 2, 54, :_reduce_47,
111
+ 3, 46, :_reduce_48,
112
+ 1, 57, :_reduce_none,
113
+ 2, 57, :_reduce_50,
114
+ 2, 57, :_reduce_51,
115
+ 1, 52, :_reduce_none,
116
+ 2, 52, :_reduce_53,
117
+ 1, 52, :_reduce_none,
118
+ 1, 63, :_reduce_none,
119
+ 1, 63, :_reduce_none,
120
+ 1, 59, :_reduce_none,
121
+ 1, 59, :_reduce_none,
122
+ 1, 62, :_reduce_none,
123
+ 1, 62, :_reduce_none,
124
+ 2, 60, :_reduce_61,
125
+ 3, 60, :_reduce_62,
126
+ 3, 60, :_reduce_63,
127
+ 2, 58, :_reduce_64,
128
+ 2, 58, :_reduce_65,
129
+ 2, 61, :_reduce_66,
130
+ 3, 61, :_reduce_67,
131
+ 1, 64, :_reduce_none,
132
+ 1, 64, :_reduce_none,
133
+ 1, 33, :_reduce_70,
134
+ 2, 33, :_reduce_71,
135
+ 5, 32, :_reduce_72,
136
+ 0, 35, :_reduce_73,
137
+ 2, 35, :_reduce_none,
138
+ 2, 35, :_reduce_75,
139
+ 1, 65, :_reduce_none,
140
+ 1, 66, :_reduce_none,
141
+ 2, 37, :_reduce_78,
142
+ 1, 37, :_reduce_none,
143
+ 3, 38, :_reduce_80,
144
+ 0, 67, :_reduce_81,
145
+ 2, 67, :_reduce_82,
146
+ 2, 68, :_reduce_83,
147
+ 1, 69, :_reduce_none,
148
+ 1, 69, :_reduce_none,
149
+ 1, 69, :_reduce_none,
150
+ 6, 36, :_reduce_87,
151
+ 0, 70, :_reduce_none,
152
+ 2, 70, :_reduce_89,
153
+ 3, 71, :_reduce_90,
154
+ 5, 71, :_reduce_91,
155
+ 1, 72, :_reduce_92 ]
156
+
157
+ racc_reduce_n = 93
158
+
159
+ racc_shift_n = 148
160
+
161
+ racc_action_table = [
162
+ 4, 5, 6, 7, 8, 10, 11, 12, 13, 1,
163
+ 2, 3, 51, 20, 21, 61, 26, 29, -57, 20,
164
+ 21, 31, 26, 29, 120, 99, 106, 107, 20, 21,
165
+ 31, 26, 29, -57, 31, 31, 89, 20, 21, 85,
166
+ 26, 29, 20, 21, 31, 26, 29, 73, 74, 31,
167
+ 71, 20, 21, 100, 26, 29, 20, 21, 31, 26,
168
+ 29, 20, 21, 31, 84, 20, 21, 31, 26, 29,
169
+ 20, 21, 31, 26, 29, 85, 108, 130, 75, 20,
170
+ 21, 131, 26, 29, 66, 61, 69, 86, 119, 120,
171
+ 20, 21, 69, 26, 29, 121, 20, 21, 74, 26,
172
+ 29, 20, 21, 95, 26, 29, 20, 21, 98, 26,
173
+ 29, 20, 21, 125, 26, 29, 20, 21, 51, 26,
174
+ 29, 20, 21, 127, 26, 29, 20, 21, 128, 26,
175
+ 29, 20, 21, 51, 26, 29, 20, 21, 85, 26,
176
+ 29, 20, 21, 77, 26, 29, 106, 107, 20, 21,
177
+ 106, 107, 20, 21, 106, 107, 20, 21, 106, 107,
178
+ 20, 21, 53, 31, 51, 19, 134, 93, 137, 120,
179
+ 90, 15, 139, 140, 142, 143, 145, 146, 147 ]
180
+
181
+ racc_action_check = [
182
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
183
+ 0, 0, 60, 68, 68, 13, 68, 68, 133, 60,
184
+ 60, 71, 60, 60, 133, 63, 71, 71, 71, 71,
185
+ 4, 71, 71, 115, 44, 5, 44, 4, 4, 115,
186
+ 4, 4, 5, 5, 6, 5, 5, 17, 64, 7,
187
+ 17, 6, 6, 65, 6, 6, 7, 7, 84, 7,
188
+ 7, 102, 102, 89, 35, 84, 84, 32, 84, 84,
189
+ 89, 89, 90, 89, 89, 36, 70, 109, 27, 90,
190
+ 90, 109, 90, 90, 15, 73, 15, 40, 80, 82,
191
+ 15, 15, 31, 15, 15, 83, 31, 31, 24, 31,
192
+ 31, 11, 11, 57, 11, 11, 114, 114, 61, 114,
193
+ 114, 51, 51, 92, 51, 51, 34, 34, 10, 34,
194
+ 34, 67, 67, 99, 67, 67, 95, 95, 101, 95,
195
+ 95, 59, 59, 54, 59, 59, 41, 41, 103, 41,
196
+ 41, 33, 33, 33, 33, 33, 69, 69, 69, 69,
197
+ 131, 131, 131, 131, 125, 125, 125, 125, 74, 74,
198
+ 74, 74, 9, 113, 8, 3, 123, 53, 127, 129,
199
+ 46, 1, 135, 137, 140, 141, 142, 145, 146 ]
200
+
201
+ racc_action_pointer = [
202
+ -2, 156, nil, 152, 15, 20, 29, 34, 149, 162,
203
+ 103, 79, nil, -7, nil, 68, nil, 28, nil, nil,
204
+ nil, nil, nil, nil, 80, nil, nil, 54, nil, nil,
205
+ nil, 74, 52, 119, 94, 50, 51, nil, nil, nil,
206
+ 63, 114, nil, nil, 19, nil, 156, nil, nil, nil,
207
+ nil, 89, nil, 167, 118, nil, nil, 89, nil, 109,
208
+ -3, 94, nil, 2, 30, 37, nil, 99, -9, 126,
209
+ 59, 6, nil, 63, 138, nil, nil, nil, nil, nil,
210
+ 64, nil, 65, 71, 43, nil, nil, nil, nil, 48,
211
+ 57, nil, 95, nil, nil, 104, nil, nil, nil, 101,
212
+ nil, 112, 39, 114, nil, nil, nil, nil, nil, 63,
213
+ nil, nil, nil, 148, 84, 15, nil, nil, nil, nil,
214
+ nil, nil, nil, 147, nil, 134, nil, 145, nil, 145,
215
+ nil, 130, nil, 0, nil, 156, nil, 150, nil, nil,
216
+ 157, 153, 153, nil, nil, 160, 155, nil ]
217
+
218
+ racc_action_default = [
219
+ -93, -93, -81, -93, -16, -93, -21, -21, -93, -93,
220
+ -93, -42, -73, -88, -79, -93, -10, -93, -11, -12,
221
+ -59, -60, -46, -25, -44, -26, -68, -45, -27, -69,
222
+ -49, -93, -93, -93, -93, -13, -57, -14, -1, -17,
223
+ -58, -39, -2, -24, -93, -23, -18, -19, -3, -22,
224
+ -4, -93, -5, -93, -6, -70, -40, -7, -44, -43,
225
+ -8, -93, -9, -93, -93, -93, -78, -93, -93, -93,
226
+ -36, -93, -82, -88, -93, -65, -28, -64, -50, -57,
227
+ -58, -51, -57, -58, -16, -66, -61, -47, -58, -16,
228
+ -21, -76, -93, 148, -71, -42, -74, -75, -89, -93,
229
+ -31, -93, -93, -52, -54, -34, -55, -56, -33, -93,
230
+ -85, -83, -29, -84, -93, -52, -86, -80, -48, -62,
231
+ -67, -63, -15, -93, -20, -93, -41, -93, -32, -53,
232
+ -37, -93, -30, -53, -38, -93, -77, -93, -35, -72,
233
+ -93, -93, -93, -92, -87, -90, -93, -91 ]
234
+
235
+ racc_goto_table = [
236
+ 14, 38, 62, 79, 82, 42, 45, 45, 59, 56,
237
+ 9, 79, 44, 44, 58, 109, 80, 83, 64, 78,
238
+ 81, 102, 65, 114, 88, 113, 102, 87, 124, 79,
239
+ 52, 76, 55, 96, 64, 48, 50, 79, 65, 103,
240
+ 122, 115, 88, 76, 103, 87, 105, 18, 116, 16,
241
+ 80, 118, 60, 78, 91, 57, 54, 92, 135, 17,
242
+ 72, 111, 117, 58, 141, 144, nil, nil, nil, 67,
243
+ 112, 64, 129, nil, 64, 101, 94, 102, 110, nil,
244
+ nil, nil, 97, 102, 133, 67, 123, nil, nil, nil,
245
+ 45, nil, 59, 126, nil, 103, 44, 83, 58, nil,
246
+ 81, 103, 136, nil, nil, 67, nil, nil, 138, nil,
247
+ nil, nil, 132, nil, nil, nil, nil, nil, nil, nil,
248
+ nil, nil, 67, nil, nil, 67 ]
249
+
250
+ racc_goto_check = [
251
+ 20, 2, 9, 35, 35, 3, 3, 3, 27, 28,
252
+ 1, 35, 21, 21, 30, 26, 37, 37, 30, 32,
253
+ 32, 34, 19, 34, 37, 22, 34, 32, 15, 35,
254
+ 5, 20, 5, 29, 30, 4, 4, 35, 19, 35,
255
+ 13, 35, 37, 20, 35, 32, 25, 11, 25, 10,
256
+ 37, 25, 8, 32, 30, 7, 6, 38, 39, 40,
257
+ 41, 42, 9, 30, 44, 45, nil, nil, nil, 33,
258
+ 20, 30, 35, nil, 30, 19, 5, 34, 19, nil,
259
+ nil, nil, 5, 34, 35, 33, 2, nil, nil, nil,
260
+ 3, nil, 27, 28, nil, 35, 21, 37, 30, nil,
261
+ 32, 35, 25, nil, nil, 33, nil, nil, 25, nil,
262
+ nil, nil, 20, nil, nil, nil, nil, nil, nil, nil,
263
+ nil, nil, 33, nil, nil, 33 ]
264
+
265
+ racc_goto_pointer = [
266
+ nil, 10, -3, 0, 29, 22, 46, 44, 40, -11,
267
+ 48, 45, nil, -44, nil, -62, nil, nil, nil, 7,
268
+ -1, 6, -46, nil, nil, -23, -55, -3, -2, -27,
269
+ 3, nil, -14, 54, -48, -30, nil, -17, 6, -67,
270
+ 57, 43, -10, nil, -73, -76 ]
271
+
272
+ racc_goto_default = [
273
+ nil, nil, nil, 39, nil, nil, nil, nil, nil, nil,
274
+ nil, nil, 35, 37, 46, 47, 49, 43, 23, 25,
275
+ 28, 32, nil, 68, 70, nil, nil, 41, nil, 22,
276
+ 24, 27, 30, 33, 34, 36, 104, 40, nil, nil,
277
+ nil, nil, nil, 63, nil, nil ]
278
+
279
+ racc_token_table = {
280
+ false => 0,
281
+ Object.new => 1,
282
+ :MAILBOX_LIST => 2,
283
+ :MAILBOX => 3,
284
+ :ADDRESS_LIST => 4,
285
+ :ADDRESS_LIST_BCC => 5,
286
+ :MSG_ID => 6,
287
+ :MSG_ID_LIST => 7,
288
+ :PHRASE_LIST => 8,
289
+ :PHRASE_MSG_ID_LIST => 9,
290
+ :DATE_TIME => 10,
291
+ :RETURN_PATH => 11,
292
+ :RECEIVED => 12,
293
+ :UNSTRUCTURED => 13,
294
+ "," => 14,
295
+ "<" => 15,
296
+ ">" => 16,
297
+ ":" => 17,
298
+ "@" => 18,
299
+ ";" => 19,
300
+ :DOMAIN_LITERAL => 20,
301
+ :NO_FOLD_LITERAL => 21,
302
+ :ATOM => 22,
303
+ :DIGIT => 23,
304
+ "." => 24,
305
+ :QUOTED_STRING => 25,
306
+ :NO_FOLD_QUOTE => 26 }
307
+
308
+ racc_use_result_var = false
309
+
310
+ racc_nt_base = 27
311
+
312
+ Racc_arg = [
313
+ racc_action_table,
314
+ racc_action_check,
315
+ racc_action_default,
316
+ racc_action_pointer,
317
+ racc_goto_table,
318
+ racc_goto_check,
319
+ racc_goto_default,
320
+ racc_goto_pointer,
321
+ racc_nt_base,
322
+ racc_reduce_table,
323
+ racc_token_table,
324
+ racc_shift_n,
325
+ racc_reduce_n,
326
+ racc_use_result_var ]
327
+
328
+ Racc_token_to_s_table = [
329
+ '$end',
330
+ 'error',
331
+ 'MAILBOX_LIST',
332
+ 'MAILBOX',
333
+ 'ADDRESS_LIST',
334
+ 'ADDRESS_LIST_BCC',
335
+ 'MSG_ID',
336
+ 'MSG_ID_LIST',
337
+ 'PHRASE_LIST',
338
+ 'PHRASE_MSG_ID_LIST',
339
+ 'DATE_TIME',
340
+ 'RETURN_PATH',
341
+ 'RECEIVED',
342
+ 'UNSTRUCTURED',
343
+ '","',
344
+ '"<"',
345
+ '">"',
346
+ '":"',
347
+ '"@"',
348
+ '";"',
349
+ 'DOMAIN_LITERAL',
350
+ 'NO_FOLD_LITERAL',
351
+ 'ATOM',
352
+ 'DIGIT',
353
+ '"."',
354
+ 'QUOTED_STRING',
355
+ 'NO_FOLD_QUOTE',
356
+ '$start',
357
+ 'all',
358
+ 'mailbox_list',
359
+ 'mailbox',
360
+ 'address_list',
361
+ 'msg_id',
362
+ 'msg_id_list',
363
+ 'phrase_list',
364
+ 'phrase_msg_id_list',
365
+ 'date_time',
366
+ 'return_path',
367
+ 'received',
368
+ 'mailbox_list_',
369
+ 'mailbox_opt',
370
+ 'address_list_',
371
+ 'address_opt',
372
+ 'address',
373
+ 'group',
374
+ 'name_addr',
375
+ 'addr_spec',
376
+ 'angle_addr',
377
+ 'display_name',
378
+ 'angle_addr_list',
379
+ 'obs_route',
380
+ 'obs_domain_list',
381
+ 'domain',
382
+ 'obs_domain_list_delim',
383
+ 'phrase',
384
+ 'phrase_opt',
385
+ 'phrase0',
386
+ 'local_part',
387
+ 'word_dot_list_dot',
388
+ 'word',
389
+ 'word_dot_list',
390
+ 'atom_dot_list',
391
+ 'atom',
392
+ 'domain_literal',
393
+ 'quoted_string',
394
+ 'id_left',
395
+ 'id_right',
396
+ 'name_val_list',
397
+ 'name_val_pair',
398
+ 'item_value',
399
+ 'day_of_week',
400
+ 'time_of_day',
401
+ 'zone']
402
+
403
+ Racc_debug_parser = false
404
+
405
+ ##### racc system variables end #####
406
+
407
+ # reduce 0 omitted
408
+
409
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 9
410
+ def _reduce_1( val, _values)
411
+ val[1]
412
+ end
413
+ .,.,
414
+
415
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 10
416
+ def _reduce_2( val, _values)
417
+ val[1]
418
+ end
419
+ .,.,
420
+
421
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 11
422
+ def _reduce_3( val, _values)
423
+ val[1]
424
+ end
425
+ .,.,
426
+
427
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 12
428
+ def _reduce_4( val, _values)
429
+ val[1]
430
+ end
431
+ .,.,
432
+
433
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 13
434
+ def _reduce_5( val, _values)
435
+ val[1]
436
+ end
437
+ .,.,
438
+
439
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 14
440
+ def _reduce_6( val, _values)
441
+ val[1]
442
+ end
443
+ .,.,
444
+
445
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 15
446
+ def _reduce_7( val, _values)
447
+ val[1]
448
+ end
449
+ .,.,
450
+
451
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 16
452
+ def _reduce_8( val, _values)
453
+ val[1]
454
+ end
455
+ .,.,
456
+
457
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 17
458
+ def _reduce_9( val, _values)
459
+ val[1]
460
+ end
461
+ .,.,
462
+
463
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 18
464
+ def _reduce_10( val, _values)
465
+ val[1]
466
+ end
467
+ .,.,
468
+
469
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 19
470
+ def _reduce_11( val, _values)
471
+ val[1]
472
+ end
473
+ .,.,
474
+
475
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 20
476
+ def _reduce_12( val, _values)
477
+ val[1]
478
+ end
479
+ .,.,
480
+
481
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 29
482
+ def _reduce_13( val, _values)
483
+ unless val[0].empty? then
484
+ val[0].last.comments = decode2(@scanner.get_comment_by_id(@comma_list[-1], nil))
485
+ end
486
+ val[0]
487
+ end
488
+ .,.,
489
+
490
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 34
491
+ def _reduce_14( val, _values)
492
+ val[0] ? [val[0]] : []
493
+ end
494
+ .,.,
495
+
496
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 41
497
+ def _reduce_15( val, _values)
498
+ @comma_list << val[1].object_id
499
+ val[0].last.comments = decode2(@scanner.get_comment_by_id(@comma_list[-2], @comma_list[-1])) if val[0].last.kind_of? Mailbox
500
+ val[0] << val[2] if val[2]
501
+ val[0]
502
+ end
503
+ .,.,
504
+
505
+ # reduce 16 omitted
506
+
507
+ # reduce 17 omitted
508
+
509
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 52
510
+ def _reduce_18( val, _values)
511
+ if not val[0].empty? and val[0].last.kind_of? Mailbox then
512
+ val[0].last.comments = decode2(@scanner.get_comment_by_id(@comma_list[-1], nil))
513
+ end
514
+ val[0]
515
+ end
516
+ .,.,
517
+
518
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 57
519
+ def _reduce_19( val, _values)
520
+ val[0] ? [val[0]] : []
521
+ end
522
+ .,.,
523
+
524
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 66
525
+ def _reduce_20( val, _values)
526
+ @comma_list << val[1].object_id
527
+ if val[0].last.kind_of? Mailbox then
528
+ val[0].last.comments = decode2(@scanner.get_comment_by_id(@comma_list[-2], @comma_list[-1]))
529
+ end
530
+ val[0] << val[2] if val[2]
531
+ val[0]
532
+ end
533
+ .,.,
534
+
535
+ # reduce 21 omitted
536
+
537
+ # reduce 22 omitted
538
+
539
+ # reduce 23 omitted
540
+
541
+ # reduce 24 omitted
542
+
543
+ # reduce 25 omitted
544
+
545
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 78
546
+ def _reduce_26( val, _values)
547
+ Mailbox.new(val[0])
548
+ end
549
+ .,.,
550
+
551
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 83
552
+ def _reduce_27( val, _values)
553
+ Mailbox.new(val[0])
554
+ end
555
+ .,.,
556
+
557
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 87
558
+ def _reduce_28( val, _values)
559
+ Mailbox.new(val[1], val[0])
560
+ end
561
+ .,.,
562
+
563
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 92
564
+ def _reduce_29( val, _values)
565
+ [val[0]]
566
+ end
567
+ .,.,
568
+
569
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 97
570
+ def _reduce_30( val, _values)
571
+ val[0] << val[1]
572
+ val[0]
573
+ end
574
+ .,.,
575
+
576
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 102
577
+ def _reduce_31( val, _values)
578
+ val[1]
579
+ end
580
+ .,.,
581
+
582
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 106
583
+ def _reduce_32( val, _values)
584
+ val[2]
585
+ end
586
+ .,.,
587
+
588
+ # reduce 33 omitted
589
+
590
+ # reduce 34 omitted
591
+
592
+ # reduce 35 omitted
593
+
594
+ # reduce 36 omitted
595
+
596
+ # reduce 37 omitted
597
+
598
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 120
599
+ def _reduce_38( val, _values)
600
+ Group.new(val[2], val[0])
601
+ end
602
+ .,.,
603
+
604
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 125
605
+ def _reduce_39( val, _values)
606
+ decode(val[0])
607
+ end
608
+ .,.,
609
+
610
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 130
611
+ def _reduce_40( val, _values)
612
+ [val[0]].compact
613
+ end
614
+ .,.,
615
+
616
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 135
617
+ def _reduce_41( val, _values)
618
+ val[0] << val[2] if val[2]
619
+ val[0]
620
+ end
621
+ .,.,
622
+
623
+ # reduce 42 omitted
624
+
625
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 141
626
+ def _reduce_43( val, _values)
627
+ decode(val[0])
628
+ end
629
+ .,.,
630
+
631
+ # reduce 44 omitted
632
+
633
+ # reduce 45 omitted
634
+
635
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 149
636
+ def _reduce_46( val, _values)
637
+ val[0].to_s
638
+ end
639
+ .,.,
640
+
641
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 153
642
+ def _reduce_47( val, _values)
643
+ val[0] << " #{val[1]}"
644
+ end
645
+ .,.,
646
+
647
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 158
648
+ def _reduce_48( val, _values)
649
+ AddrSpec.new(val[0], val[2])
650
+ end
651
+ .,.,
652
+
653
+ # reduce 49 omitted
654
+
655
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 164
656
+ def _reduce_50( val, _values)
657
+ val.join
658
+ end
659
+ .,.,
660
+
661
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 168
662
+ def _reduce_51( val, _values)
663
+ val.join
664
+ end
665
+ .,.,
666
+
667
+ # reduce 52 omitted
668
+
669
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 174
670
+ def _reduce_53( val, _values)
671
+ val.join
672
+ end
673
+ .,.,
674
+
675
+ # reduce 54 omitted
676
+
677
+ # reduce 55 omitted
678
+
679
+ # reduce 56 omitted
680
+
681
+ # reduce 57 omitted
682
+
683
+ # reduce 58 omitted
684
+
685
+ # reduce 59 omitted
686
+
687
+ # reduce 60 omitted
688
+
689
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 189
690
+ def _reduce_61( val, _values)
691
+ val.join
692
+ end
693
+ .,.,
694
+
695
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 193
696
+ def _reduce_62( val, _values)
697
+ val[0] << val[1]+val[2]
698
+ end
699
+ .,.,
700
+
701
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 197
702
+ def _reduce_63( val, _values)
703
+ val[0] << val[1]+val[2]
704
+ end
705
+ .,.,
706
+
707
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 202
708
+ def _reduce_64( val, _values)
709
+ val.join
710
+ end
711
+ .,.,
712
+
713
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 206
714
+ def _reduce_65( val, _values)
715
+ val.join
716
+ end
717
+ .,.,
718
+
719
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 211
720
+ def _reduce_66( val, _values)
721
+ val.join
722
+ end
723
+ .,.,
724
+
725
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 215
726
+ def _reduce_67( val, _values)
727
+ val.join
728
+ end
729
+ .,.,
730
+
731
+ # reduce 68 omitted
732
+
733
+ # reduce 69 omitted
734
+
735
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 223
736
+ def _reduce_70( val, _values)
737
+ MsgIdList.new(val[0])
738
+ end
739
+ .,.,
740
+
741
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 227
742
+ def _reduce_71( val, _values)
743
+ val[0] << val[1]
744
+ end
745
+ .,.,
746
+
747
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 232
748
+ def _reduce_72( val, _values)
749
+ MsgId.new(val[1,3].join)
750
+ end
751
+ .,.,
752
+
753
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 237
754
+ def _reduce_73( val, _values)
755
+ MsgIdList.new()
756
+ end
757
+ .,.,
758
+
759
+ # reduce 74 omitted
760
+
761
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 242
762
+ def _reduce_75( val, _values)
763
+ val[0] << val[1]
764
+ end
765
+ .,.,
766
+
767
+ # reduce 76 omitted
768
+
769
+ # reduce 77 omitted
770
+
771
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 255
772
+ def _reduce_78( val, _values)
773
+ nil
774
+ end
775
+ .,.,
776
+
777
+ # reduce 79 omitted
778
+
779
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 262
780
+ def _reduce_80( val, _values)
781
+ Received.new(val[0], val[2])
782
+ end
783
+ .,.,
784
+
785
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 267
786
+ def _reduce_81( val, _values)
787
+ {}
788
+ end
789
+ .,.,
790
+
791
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 272
792
+ def _reduce_82( val, _values)
793
+ val[0][val[1][0]] = val[1][1]
794
+ val[0]
795
+ end
796
+ .,.,
797
+
798
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 280
799
+ def _reduce_83( val, _values)
800
+ unless val[0] =~ /\A[a-zA-Z0-9](-?[a-zA-Z0-9])*\z/ then
801
+ raise MailParser::ParseError, val[0]+@scanner.rest
802
+ end
803
+ [val[0].downcase, val[1].to_s]
804
+ end
805
+ .,.,
806
+
807
+ # reduce 84 omitted
808
+
809
+ # reduce 85 omitted
810
+
811
+ # reduce 86 omitted
812
+
813
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 300
814
+ def _reduce_87( val, _values)
815
+ year, month, day, time, zone = val.values_at(3,2,1,4,5)
816
+ raise MailParser::ParseError, "invalid year: #{year}" unless year =~ /\A\d\d\d\d\Z/
817
+ m = [nil,"jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"].index month.downcase
818
+ raise MailParser::ParseError, "invaild month: #{month}" unless m
819
+ raise MailParser::ParseError, "invalid day of the month: #{day}" unless day =~ /\A\d?\d\Z/
820
+ begin
821
+ DateTime.new(year.to_i, m.to_i, day.to_i, time[0], time[1], time[2], zone)
822
+ rescue ArgumentError
823
+ raise MailParser::ParseError, "invalid date format"
824
+ end
825
+ end
826
+ .,.,
827
+
828
+ # reduce 88 omitted
829
+
830
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 308
831
+ def _reduce_89( val, _values)
832
+ unless ['mon','tue','wed','thu','fri','sat','sun'].include? val[0].downcase then
833
+ raise MailParser::ParseError, "invalid day of the week: #{val[0]}"
834
+ end
835
+ end
836
+ .,.,
837
+
838
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 319
839
+ def _reduce_90( val, _values)
840
+ if val[0] !~ /\A\d\d\Z/ or val[0].to_i > 23 then
841
+ raise MailParser::ParseError, "invalid hour: #{val[0]}"
842
+ end
843
+ if val[2] !~ /\A\d\d\Z/ or val[2].to_i > 59 then
844
+ raise MailParser::ParseError, "invalid minute: #{val[2]}"
845
+ end
846
+ [val[0].to_i, val[2].to_i, 0]
847
+ end
848
+ .,.,
849
+
850
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 332
851
+ def _reduce_91( val, _values)
852
+ if val[0] !~ /\A\d\d\Z/ or val[0].to_i > 23 then
853
+ raise MailParser::ParseError, "invalid hour: #{val[0]}"
854
+ end
855
+ if val[2] !~ /\A\d\d\Z/ or val[2].to_i > 59 then
856
+ raise MailParser::ParseError, "invalid minute: #{val[2]}"
857
+ end
858
+ if val[4] !~ /\A\d\d\Z/ or val[4].to_i > 60 then
859
+ raise MailParser::ParseError, "invalid second: #{val[4]}"
860
+ end
861
+ [val[0].to_i, val[2].to_i, val[4].to_i]
862
+ end
863
+ .,.,
864
+
865
+ module_eval <<'.,.,', 'lib/mailparser/rfc2822/parser.y', 341
866
+ def _reduce_92( val, _values)
867
+ if val[0] =~ /\A[+-]\d\d\d\d\Z/ then
868
+ val[0]
869
+ else
870
+ ZONE[val[0].upcase] || "-0000"
871
+ end
872
+ end
873
+ .,.,
874
+
875
+ def _reduce_none( val, _values)
876
+ val[0]
877
+ end
878
+
879
+ end # class Parser
880
+
881
+ end # module RFC2822
882
+
883
+ end # module MailParser