mail 2.1.3 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of mail might be problematic. Click here for more details.

Files changed (106) hide show
  1. data/CHANGELOG.rdoc +37 -0
  2. data/README.rdoc +1 -1
  3. data/Rakefile +2 -3
  4. data/TODO.rdoc +2 -12
  5. data/lib/mail.rb +7 -4
  6. data/lib/mail/attachments_list.rb +28 -10
  7. data/lib/mail/body.rb +44 -15
  8. data/lib/mail/core_extensions/string.rb +4 -0
  9. data/lib/mail/elements/content_transfer_encoding_element.rb +4 -1
  10. data/lib/mail/encodings/7bit.rb +29 -0
  11. data/lib/mail/encodings/8bit.rb +29 -0
  12. data/lib/mail/encodings/base64.rb +18 -5
  13. data/lib/mail/encodings/binary.rb +29 -0
  14. data/lib/mail/encodings/encodings.rb +22 -6
  15. data/lib/mail/encodings/quoted_printable.rb +27 -4
  16. data/lib/mail/encodings/transfer_encoding.rb +58 -0
  17. data/lib/mail/field.rb +4 -2
  18. data/lib/mail/fields/common/parameter_hash.rb +12 -3
  19. data/lib/mail/fields/content_disposition_field.rb +12 -2
  20. data/lib/mail/fields/content_location_field.rb +2 -2
  21. data/lib/mail/fields/content_transfer_encoding_field.rb +5 -3
  22. data/lib/mail/fields/content_type_field.rb +14 -4
  23. data/lib/mail/fields/mime_version_field.rb +2 -2
  24. data/lib/mail/fields/received_field.rb +8 -4
  25. data/lib/mail/fields/structured_field.rb +4 -0
  26. data/lib/mail/fields/unstructured_field.rb +5 -0
  27. data/lib/mail/header.rb +13 -6
  28. data/lib/mail/mail.rb +1 -1
  29. data/lib/mail/message.rb +100 -28
  30. data/lib/mail/network/delivery_methods/smtp.rb +1 -1
  31. data/lib/mail/parsers/address_lists.rb +4 -1
  32. data/lib/mail/parsers/content_disposition.rb +24 -6
  33. data/lib/mail/parsers/content_location.rb +8 -2
  34. data/lib/mail/parsers/content_transfer_encoding.rb +73 -83
  35. data/lib/mail/parsers/content_transfer_encoding.treetop +5 -10
  36. data/lib/mail/parsers/content_type.rb +36 -9
  37. data/lib/mail/parsers/date_time.rb +4 -1
  38. data/lib/mail/parsers/envelope_from.rb +8 -2
  39. data/lib/mail/parsers/message_ids.rb +4 -1
  40. data/lib/mail/parsers/mime_version.rb +4 -1
  41. data/lib/mail/parsers/phrase_lists.rb +4 -1
  42. data/lib/mail/parsers/received.rb +4 -1
  43. data/lib/mail/parsers/rfc2045.rb +75 -17
  44. data/lib/mail/parsers/rfc2045.treetop +2 -1
  45. data/lib/mail/parsers/rfc2822.rb +316 -79
  46. data/lib/mail/parsers/rfc2822_obsolete.rb +200 -50
  47. data/lib/mail/part.rb +21 -6
  48. data/lib/mail/patterns.rb +3 -3
  49. data/lib/mail/utilities.rb +4 -4
  50. data/lib/mail/vendor/treetop-1.4.3/Or +0 -0
  51. data/lib/mail/vendor/treetop-1.4.3/Rakefile +11 -6
  52. data/lib/mail/vendor/treetop-1.4.3/Treetop.tmbundle/Preferences/Comments.tmPreferences +22 -0
  53. data/lib/mail/vendor/treetop-1.4.3/Treetop.tmbundle/Syntaxes/Treetop Grammar.tmLanguage +28 -1
  54. data/lib/mail/vendor/treetop-1.4.3/bin/tt +5 -5
  55. data/lib/mail/vendor/treetop-1.4.3/lib/treetop.rb +3 -19
  56. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/bootstrap_gen_1_metagrammar.rb +4 -7
  57. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/compiler.rb +7 -6
  58. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/compiler/metagrammar.rb +1 -1
  59. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/compiler/node_classes.rb +19 -20
  60. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/polyglot.rb +9 -0
  61. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/ruby_extensions.rb +1 -2
  62. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/runtime.rb +6 -5
  63. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/runtime/interval_skip_list.rb +3 -4
  64. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/runtime/syntax_node.rb +7 -7
  65. data/lib/mail/vendor/treetop-1.4.3/lib/treetop/version.rb +1 -1
  66. data/lib/mail/vendor/treetop-1.4.3/script/generate_metagrammar.rb +3 -4
  67. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/and_predicate_spec.rb +2 -2
  68. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/anything_symbol_spec.rb +2 -2
  69. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/character_class_spec.rb +1 -1
  70. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/choice_spec.rb +2 -2
  71. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/circular_compilation_spec.rb +3 -1
  72. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/failure_propagation_functional_spec.rb +2 -2
  73. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/grammar_compiler_spec.rb +1 -1
  74. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/grammar_spec.rb +1 -1
  75. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/multibyte_chars_spec.rb +1 -9
  76. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/nonterminal_symbol_spec.rb +2 -2
  77. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/not_predicate_spec.rb +2 -2
  78. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/one_or_more_spec.rb +2 -2
  79. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/optional_spec.rb +1 -1
  80. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/parenthesized_expression_spec.rb +1 -1
  81. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/parsing_rule_spec.rb +1 -1
  82. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/repeated_subrule_spec.rb +1 -1
  83. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/semantic_predicate_spec.rb +1 -1
  84. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/sequence_spec.rb +1 -1
  85. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/terminal_spec.rb +1 -1
  86. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/terminal_symbol_spec.rb +1 -1
  87. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/tt_compiler_spec.rb +1 -1
  88. data/lib/mail/vendor/treetop-1.4.3/spec/compiler/zero_or_more_spec.rb +1 -1
  89. data/lib/mail/vendor/treetop-1.4.3/spec/composition/grammar_composition_spec.rb +1 -1
  90. data/lib/mail/vendor/treetop-1.4.3/spec/ruby_extensions/string_spec.rb +1 -1
  91. data/lib/mail/vendor/treetop-1.4.3/spec/runtime/compiled_parser_spec.rb +1 -1
  92. data/lib/mail/vendor/treetop-1.4.3/spec/runtime/interval_skip_list/delete_spec.rb +2 -2
  93. data/lib/mail/vendor/treetop-1.4.3/spec/runtime/interval_skip_list/expire_range_spec.rb +2 -2
  94. data/lib/mail/vendor/treetop-1.4.3/spec/runtime/interval_skip_list/insert_spec.rb +1 -1
  95. data/lib/mail/vendor/treetop-1.4.3/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +2 -2
  96. data/lib/mail/vendor/treetop-1.4.3/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +2 -3
  97. data/lib/mail/vendor/treetop-1.4.3/spec/runtime/interval_skip_list/spec_helper.rb +2 -2
  98. data/lib/mail/vendor/treetop-1.4.3/spec/runtime/syntax_node_spec.rb +1 -1
  99. data/lib/mail/vendor/treetop-1.4.3/spec/spec_helper.rb +4 -5
  100. data/lib/mail/vendor/treetop-1.4.3/treetop.gemspec +2 -2
  101. data/lib/mail/version.rb +1 -1
  102. data/lib/mail/version_specific/ruby_1_8.rb +1 -3
  103. data/lib/mail/version_specific/ruby_1_9.rb +1 -2
  104. data/lib/tasks/treetop.rake +1 -1
  105. metadata +33 -14
  106. data/lib/mail/vendor/treetop-1.4.3/spec/spec_suite.rb +0 -4
@@ -5,20 +5,15 @@ module Mail
5
5
  include RFC2045
6
6
 
7
7
  rule primary
8
- CFWS encoding CFWS
8
+ CFWS encoding CFWS ";"? CFWS
9
9
  end
10
10
 
11
11
  rule encoding
12
- known_tokens / ietf_token / x_token {
13
- def encoding
14
- known_tokens.text_value || ietf_token.text_value || x_token.text_value
12
+ ietf_token "s"? {
13
+ def text_value
14
+ ietf_token.text_value
15
15
  end
16
- }
17
- end
18
-
19
- rule known_tokens
20
- "7bit" / "8bit" / "binary" /
21
- "quoted-printable" / "base64"
16
+ } / x_token
22
17
  end
23
18
 
24
19
  end
@@ -53,7 +53,10 @@ module Mail
53
53
  start_index = index
54
54
  if node_cache[:content_type].has_key?(index)
55
55
  cached = node_cache[:content_type][index]
56
- @index = cached.interval.end if cached
56
+ if cached
57
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
58
+ @index = cached.interval.end
59
+ end
57
60
  return cached
58
61
  end
59
62
 
@@ -137,7 +140,10 @@ module Mail
137
140
  start_index = index
138
141
  if node_cache[:main_type].has_key?(index)
139
142
  cached = node_cache[:main_type][index]
140
- @index = cached.interval.end if cached
143
+ if cached
144
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
145
+ @index = cached.interval.end
146
+ end
141
147
  return cached
142
148
  end
143
149
 
@@ -164,7 +170,10 @@ module Mail
164
170
  start_index = index
165
171
  if node_cache[:discrete_type].has_key?(index)
166
172
  cached = node_cache[:discrete_type][index]
167
- @index = cached.interval.end if cached
173
+ if cached
174
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
175
+ @index = cached.interval.end
176
+ end
168
177
  return cached
169
178
  end
170
179
 
@@ -241,7 +250,10 @@ module Mail
241
250
  start_index = index
242
251
  if node_cache[:composite_type].has_key?(index)
243
252
  cached = node_cache[:composite_type][index]
244
- @index = cached.interval.end if cached
253
+ if cached
254
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
255
+ @index = cached.interval.end
256
+ end
245
257
  return cached
246
258
  end
247
259
 
@@ -285,7 +297,10 @@ module Mail
285
297
  start_index = index
286
298
  if node_cache[:extension_token].has_key?(index)
287
299
  cached = node_cache[:extension_token][index]
288
- @index = cached.interval.end if cached
300
+ if cached
301
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
302
+ @index = cached.interval.end
303
+ end
289
304
  return cached
290
305
  end
291
306
 
@@ -312,7 +327,10 @@ module Mail
312
327
  start_index = index
313
328
  if node_cache[:sub_type].has_key?(index)
314
329
  cached = node_cache[:sub_type][index]
315
- @index = cached.interval.end if cached
330
+ if cached
331
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
332
+ @index = cached.interval.end
333
+ end
316
334
  return cached
317
335
  end
318
336
 
@@ -356,7 +374,10 @@ module Mail
356
374
  start_index = index
357
375
  if node_cache[:parameter].has_key?(index)
358
376
  cached = node_cache[:parameter][index]
359
- @index = cached.interval.end if cached
377
+ if cached
378
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
379
+ @index = cached.interval.end
380
+ end
360
381
  return cached
361
382
  end
362
383
 
@@ -413,7 +434,10 @@ module Mail
413
434
  start_index = index
414
435
  if node_cache[:attribute].has_key?(index)
415
436
  cached = node_cache[:attribute][index]
416
- @index = cached.interval.end if cached
437
+ if cached
438
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
439
+ @index = cached.interval.end
440
+ end
417
441
  return cached
418
442
  end
419
443
 
@@ -448,7 +472,10 @@ module Mail
448
472
  start_index = index
449
473
  if node_cache[:value].has_key?(index)
450
474
  cached = node_cache[:value][index]
451
- @index = cached.interval.end if cached
475
+ if cached
476
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
477
+ @index = cached.interval.end
478
+ end
452
479
  return cached
453
480
  end
454
481
 
@@ -37,7 +37,10 @@ module Mail
37
37
  start_index = index
38
38
  if node_cache[:primary].has_key?(index)
39
39
  cached = node_cache[:primary][index]
40
- @index = cached.interval.end if cached
40
+ if cached
41
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
42
+ @index = cached.interval.end
43
+ end
41
44
  return cached
42
45
  end
43
46
 
@@ -25,7 +25,10 @@ module Mail
25
25
  start_index = index
26
26
  if node_cache[:primary].has_key?(index)
27
27
  cached = node_cache[:primary][index]
28
- @index = cached.interval.end if cached
28
+ if cached
29
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
30
+ @index = cached.interval.end
31
+ end
29
32
  return cached
30
33
  end
31
34
 
@@ -75,7 +78,10 @@ module Mail
75
78
  start_index = index
76
79
  if node_cache[:ctime_date].has_key?(index)
77
80
  cached = node_cache[:ctime_date][index]
78
- @index = cached.interval.end if cached
81
+ if cached
82
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
83
+ @index = cached.interval.end
84
+ end
79
85
  return cached
80
86
  end
81
87
 
@@ -21,7 +21,10 @@ module Mail
21
21
  start_index = index
22
22
  if node_cache[:primary].has_key?(index)
23
23
  cached = node_cache[:primary][index]
24
- @index = cached.interval.end if cached
24
+ if cached
25
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
26
+ @index = cached.interval.end
27
+ end
25
28
  return cached
26
29
  end
27
30
 
@@ -43,7 +43,10 @@ module Mail
43
43
  start_index = index
44
44
  if node_cache[:version].has_key?(index)
45
45
  cached = node_cache[:version][index]
46
- @index = cached.interval.end if cached
46
+ if cached
47
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
48
+ @index = cached.interval.end
49
+ end
47
50
  return cached
48
51
  end
49
52
 
@@ -21,7 +21,10 @@ module Mail
21
21
  start_index = index
22
22
  if node_cache[:primary_phrase].has_key?(index)
23
23
  cached = node_cache[:primary_phrase][index]
24
- @index = cached.interval.end if cached
24
+ if cached
25
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
26
+ @index = cached.interval.end
27
+ end
25
28
  return cached
26
29
  end
27
30
 
@@ -25,7 +25,10 @@ module Mail
25
25
  start_index = index
26
26
  if node_cache[:primary].has_key?(index)
27
27
  cached = node_cache[:primary][index]
28
- @index = cached.interval.end if cached
28
+ if cached
29
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
30
+ @index = cached.interval.end
31
+ end
29
32
  return cached
30
33
  end
31
34
 
@@ -13,7 +13,10 @@ module Mail
13
13
  start_index = index
14
14
  if node_cache[:tspecials].has_key?(index)
15
15
  cached = node_cache[:tspecials][index]
16
- @index = cached.interval.end if cached
16
+ if cached
17
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
18
+ @index = cached.interval.end
19
+ end
17
20
  return cached
18
21
  end
19
22
 
@@ -206,24 +209,70 @@ module Mail
206
209
  start_index = index
207
210
  if node_cache[:ietf_token].has_key?(index)
208
211
  cached = node_cache[:ietf_token][index]
209
- @index = cached.interval.end if cached
212
+ if cached
213
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
214
+ @index = cached.interval.end
215
+ end
210
216
  return cached
211
217
  end
212
218
 
213
- s0, i0 = [], index
214
- loop do
215
- r1 = _nt_token
216
- if r1
217
- s0 << r1
218
- else
219
- break
220
- end
219
+ i0 = index
220
+ if has_terminal?("7bit", false, index)
221
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
222
+ @index += 4
223
+ else
224
+ terminal_parse_failure("7bit")
225
+ r1 = nil
221
226
  end
222
- if s0.empty?
223
- @index = i0
224
- r0 = nil
227
+ if r1
228
+ r0 = r1
225
229
  else
226
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
230
+ if has_terminal?("8bit", false, index)
231
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 4))
232
+ @index += 4
233
+ else
234
+ terminal_parse_failure("8bit")
235
+ r2 = nil
236
+ end
237
+ if r2
238
+ r0 = r2
239
+ else
240
+ if has_terminal?("binary", false, index)
241
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 6))
242
+ @index += 6
243
+ else
244
+ terminal_parse_failure("binary")
245
+ r3 = nil
246
+ end
247
+ if r3
248
+ r0 = r3
249
+ else
250
+ if has_terminal?("quoted-printable", false, index)
251
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 16))
252
+ @index += 16
253
+ else
254
+ terminal_parse_failure("quoted-printable")
255
+ r4 = nil
256
+ end
257
+ if r4
258
+ r0 = r4
259
+ else
260
+ if has_terminal?("base64", false, index)
261
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 6))
262
+ @index += 6
263
+ else
264
+ terminal_parse_failure("base64")
265
+ r5 = nil
266
+ end
267
+ if r5
268
+ r0 = r5
269
+ else
270
+ @index = i0
271
+ r0 = nil
272
+ end
273
+ end
274
+ end
275
+ end
227
276
  end
228
277
 
229
278
  node_cache[:ietf_token][start_index] = r0
@@ -238,7 +287,10 @@ module Mail
238
287
  start_index = index
239
288
  if node_cache[:x_token].has_key?(index)
240
289
  cached = node_cache[:x_token][index]
241
- @index = cached.interval.end if cached
290
+ if cached
291
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
292
+ @index = cached.interval.end
293
+ end
242
294
  return cached
243
295
  end
244
296
 
@@ -295,7 +347,10 @@ module Mail
295
347
  start_index = index
296
348
  if node_cache[:iana_token].has_key?(index)
297
349
  cached = node_cache[:iana_token][index]
298
- @index = cached.interval.end if cached
350
+ if cached
351
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
352
+ @index = cached.interval.end
353
+ end
299
354
  return cached
300
355
  end
301
356
 
@@ -324,7 +379,10 @@ module Mail
324
379
  start_index = index
325
380
  if node_cache[:token].has_key?(index)
326
381
  cached = node_cache[:token][index]
327
- @index = cached.interval.end if cached
382
+ if cached
383
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
384
+ @index = cached.interval.end
385
+ end
328
386
  return cached
329
387
  end
330
388
 
@@ -8,7 +8,8 @@ module Mail
8
8
  end
9
9
 
10
10
  rule ietf_token
11
- token+
11
+ "7bit" / "8bit" / "binary" /
12
+ "quoted-printable" / "base64"
12
13
  end
13
14
 
14
15
  rule x_token
@@ -15,7 +15,10 @@ module Mail
15
15
  start_index = index
16
16
  if node_cache[:ALPHA].has_key?(index)
17
17
  cached = node_cache[:ALPHA][index]
18
- @index = cached.interval.end if cached
18
+ if cached
19
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
20
+ @index = cached.interval.end
21
+ end
19
22
  return cached
20
23
  end
21
24
 
@@ -35,7 +38,10 @@ module Mail
35
38
  start_index = index
36
39
  if node_cache[:DIGIT].has_key?(index)
37
40
  cached = node_cache[:DIGIT][index]
38
- @index = cached.interval.end if cached
41
+ if cached
42
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
43
+ @index = cached.interval.end
44
+ end
39
45
  return cached
40
46
  end
41
47
 
@@ -55,7 +61,10 @@ module Mail
55
61
  start_index = index
56
62
  if node_cache[:DQUOTE].has_key?(index)
57
63
  cached = node_cache[:DQUOTE][index]
58
- @index = cached.interval.end if cached
64
+ if cached
65
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
66
+ @index = cached.interval.end
67
+ end
59
68
  return cached
60
69
  end
61
70
 
@@ -76,7 +85,10 @@ module Mail
76
85
  start_index = index
77
86
  if node_cache[:LF].has_key?(index)
78
87
  cached = node_cache[:LF][index]
79
- @index = cached.interval.end if cached
88
+ if cached
89
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
90
+ @index = cached.interval.end
91
+ end
80
92
  return cached
81
93
  end
82
94
 
@@ -97,7 +109,10 @@ module Mail
97
109
  start_index = index
98
110
  if node_cache[:CR].has_key?(index)
99
111
  cached = node_cache[:CR][index]
100
- @index = cached.interval.end if cached
112
+ if cached
113
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
114
+ @index = cached.interval.end
115
+ end
101
116
  return cached
102
117
  end
103
118
 
@@ -118,7 +133,10 @@ module Mail
118
133
  start_index = index
119
134
  if node_cache[:CRLF].has_key?(index)
120
135
  cached = node_cache[:CRLF][index]
121
- @index = cached.interval.end if cached
136
+ if cached
137
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
138
+ @index = cached.interval.end
139
+ end
122
140
  return cached
123
141
  end
124
142
 
@@ -139,7 +157,10 @@ module Mail
139
157
  start_index = index
140
158
  if node_cache[:WSP].has_key?(index)
141
159
  cached = node_cache[:WSP][index]
142
- @index = cached.interval.end if cached
160
+ if cached
161
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
162
+ @index = cached.interval.end
163
+ end
143
164
  return cached
144
165
  end
145
166
 
@@ -159,7 +180,10 @@ module Mail
159
180
  start_index = index
160
181
  if node_cache[:NO_WS_CTL].has_key?(index)
161
182
  cached = node_cache[:NO_WS_CTL][index]
162
- @index = cached.interval.end if cached
183
+ if cached
184
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
185
+ @index = cached.interval.end
186
+ end
163
187
  return cached
164
188
  end
165
189
 
@@ -216,7 +240,10 @@ module Mail
216
240
  start_index = index
217
241
  if node_cache[:specials].has_key?(index)
218
242
  cached = node_cache[:specials][index]
219
- @index = cached.interval.end if cached
243
+ if cached
244
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
245
+ @index = cached.interval.end
246
+ end
220
247
  return cached
221
248
  end
222
249
 
@@ -384,7 +411,10 @@ module Mail
384
411
  start_index = index
385
412
  if node_cache[:FWS].has_key?(index)
386
413
  cached = node_cache[:FWS][index]
387
- @index = cached.interval.end if cached
414
+ if cached
415
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
416
+ @index = cached.interval.end
417
+ end
388
418
  return cached
389
419
  end
390
420
 
@@ -492,7 +522,10 @@ module Mail
492
522
  start_index = index
493
523
  if node_cache[:CFWS].has_key?(index)
494
524
  cached = node_cache[:CFWS][index]
495
- @index = cached.interval.end if cached
525
+ if cached
526
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
527
+ @index = cached.interval.end
528
+ end
496
529
  return cached
497
530
  end
498
531
 
@@ -556,7 +589,10 @@ module Mail
556
589
  start_index = index
557
590
  if node_cache[:ctext].has_key?(index)
558
591
  cached = node_cache[:ctext][index]
559
- @index = cached.interval.end if cached
592
+ if cached
593
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
594
+ @index = cached.interval.end
595
+ end
560
596
  return cached
561
597
  end
562
598
 
@@ -608,7 +644,10 @@ module Mail
608
644
  start_index = index
609
645
  if node_cache[:ccontent].has_key?(index)
610
646
  cached = node_cache[:ccontent][index]
611
- @index = cached.interval.end if cached
647
+ if cached
648
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
649
+ @index = cached.interval.end
650
+ end
612
651
  return cached
613
652
  end
614
653
 
@@ -649,7 +688,10 @@ module Mail
649
688
  start_index = index
650
689
  if node_cache[:comment].has_key?(index)
651
690
  cached = node_cache[:comment][index]
652
- @index = cached.interval.end if cached
691
+ if cached
692
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
693
+ @index = cached.interval.end
694
+ end
653
695
  return cached
654
696
  end
655
697
 
@@ -729,7 +771,10 @@ module Mail
729
771
  start_index = index
730
772
  if node_cache[:atext].has_key?(index)
731
773
  cached = node_cache[:atext][index]
732
- @index = cached.interval.end if cached
774
+ if cached
775
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
776
+ @index = cached.interval.end
777
+ end
733
778
  return cached
734
779
  end
735
780
 
@@ -965,7 +1010,10 @@ module Mail
965
1010
  start_index = index
966
1011
  if node_cache[:mtext].has_key?(index)
967
1012
  cached = node_cache[:mtext][index]
968
- @index = cached.interval.end if cached
1013
+ if cached
1014
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1015
+ @index = cached.interval.end
1016
+ end
969
1017
  return cached
970
1018
  end
971
1019
 
@@ -1015,7 +1063,10 @@ module Mail
1015
1063
  start_index = index
1016
1064
  if node_cache[:atom].has_key?(index)
1017
1065
  cached = node_cache[:atom][index]
1018
- @index = cached.interval.end if cached
1066
+ if cached
1067
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1068
+ @index = cached.interval.end
1069
+ end
1019
1070
  return cached
1020
1071
  end
1021
1072
 
@@ -1078,7 +1129,10 @@ module Mail
1078
1129
  start_index = index
1079
1130
  if node_cache[:dot_atom].has_key?(index)
1080
1131
  cached = node_cache[:dot_atom][index]
1081
- @index = cached.interval.end if cached
1132
+ if cached
1133
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1134
+ @index = cached.interval.end
1135
+ end
1082
1136
  return cached
1083
1137
  end
1084
1138
 
@@ -1127,7 +1181,10 @@ module Mail
1127
1181
  start_index = index
1128
1182
  if node_cache[:local_dot_atom].has_key?(index)
1129
1183
  cached = node_cache[:local_dot_atom][index]
1130
- @index = cached.interval.end if cached
1184
+ if cached
1185
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1186
+ @index = cached.interval.end
1187
+ end
1131
1188
  return cached
1132
1189
  end
1133
1190
 
@@ -1169,7 +1226,10 @@ module Mail
1169
1226
  start_index = index
1170
1227
  if node_cache[:message_id_text].has_key?(index)
1171
1228
  cached = node_cache[:message_id_text][index]
1172
- @index = cached.interval.end if cached
1229
+ if cached
1230
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1231
+ @index = cached.interval.end
1232
+ end
1173
1233
  return cached
1174
1234
  end
1175
1235
 
@@ -1205,7 +1265,10 @@ module Mail
1205
1265
  start_index = index
1206
1266
  if node_cache[:dot_atom_text].has_key?(index)
1207
1267
  cached = node_cache[:dot_atom_text][index]
1208
- @index = cached.interval.end if cached
1268
+ if cached
1269
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1270
+ @index = cached.interval.end
1271
+ end
1209
1272
  return cached
1210
1273
  end
1211
1274
 
@@ -1264,7 +1327,10 @@ module Mail
1264
1327
  start_index = index
1265
1328
  if node_cache[:local_dot_atom_text].has_key?(index)
1266
1329
  cached = node_cache[:local_dot_atom_text][index]
1267
- @index = cached.interval.end if cached
1330
+ if cached
1331
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1332
+ @index = cached.interval.end
1333
+ end
1268
1334
  return cached
1269
1335
  end
1270
1336
 
@@ -1337,7 +1403,10 @@ module Mail
1337
1403
  start_index = index
1338
1404
  if node_cache[:domain_text].has_key?(index)
1339
1405
  cached = node_cache[:domain_text][index]
1340
- @index = cached.interval.end if cached
1406
+ if cached
1407
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1408
+ @index = cached.interval.end
1409
+ end
1341
1410
  return cached
1342
1411
  end
1343
1412
 
@@ -1442,7 +1511,10 @@ module Mail
1442
1511
  start_index = index
1443
1512
  if node_cache[:quoted_domain].has_key?(index)
1444
1513
  cached = node_cache[:quoted_domain][index]
1445
- @index = cached.interval.end if cached
1514
+ if cached
1515
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1516
+ @index = cached.interval.end
1517
+ end
1446
1518
  return cached
1447
1519
  end
1448
1520
 
@@ -1488,7 +1560,10 @@ module Mail
1488
1560
  start_index = index
1489
1561
  if node_cache[:qdcontent].has_key?(index)
1490
1562
  cached = node_cache[:qdcontent][index]
1491
- @index = cached.interval.end if cached
1563
+ if cached
1564
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1565
+ @index = cached.interval.end
1566
+ end
1492
1567
  return cached
1493
1568
  end
1494
1569
 
@@ -1550,7 +1625,10 @@ module Mail
1550
1625
  start_index = index
1551
1626
  if node_cache[:word].has_key?(index)
1552
1627
  cached = node_cache[:word][index]
1553
- @index = cached.interval.end if cached
1628
+ if cached
1629
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1630
+ @index = cached.interval.end
1631
+ end
1554
1632
  return cached
1555
1633
  end
1556
1634
 
@@ -1593,7 +1671,10 @@ module Mail
1593
1671
  start_index = index
1594
1672
  if node_cache[:phrase_list].has_key?(index)
1595
1673
  cached = node_cache[:phrase_list][index]
1596
- @index = cached.interval.end if cached
1674
+ if cached
1675
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1676
+ @index = cached.interval.end
1677
+ end
1597
1678
  return cached
1598
1679
  end
1599
1680
 
@@ -1662,7 +1743,10 @@ module Mail
1662
1743
  start_index = index
1663
1744
  if node_cache[:phrase].has_key?(index)
1664
1745
  cached = node_cache[:phrase][index]
1665
- @index = cached.interval.end if cached
1746
+ if cached
1747
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1748
+ @index = cached.interval.end
1749
+ end
1666
1750
  return cached
1667
1751
  end
1668
1752
 
@@ -1712,7 +1796,10 @@ module Mail
1712
1796
  start_index = index
1713
1797
  if node_cache[:domain_literal].has_key?(index)
1714
1798
  cached = node_cache[:domain_literal][index]
1715
- @index = cached.interval.end if cached
1799
+ if cached
1800
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1801
+ @index = cached.interval.end
1802
+ end
1716
1803
  return cached
1717
1804
  end
1718
1805
 
@@ -1810,7 +1897,10 @@ module Mail
1810
1897
  start_index = index
1811
1898
  if node_cache[:dcontent].has_key?(index)
1812
1899
  cached = node_cache[:dcontent][index]
1813
- @index = cached.interval.end if cached
1900
+ if cached
1901
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1902
+ @index = cached.interval.end
1903
+ end
1814
1904
  return cached
1815
1905
  end
1816
1906
 
@@ -1837,7 +1927,10 @@ module Mail
1837
1927
  start_index = index
1838
1928
  if node_cache[:dtext].has_key?(index)
1839
1929
  cached = node_cache[:dtext][index]
1840
- @index = cached.interval.end if cached
1930
+ if cached
1931
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1932
+ @index = cached.interval.end
1933
+ end
1841
1934
  return cached
1842
1935
  end
1843
1936
 
@@ -1886,7 +1979,10 @@ module Mail
1886
1979
  start_index = index
1887
1980
  if node_cache[:angle_addr].has_key?(index)
1888
1981
  cached = node_cache[:angle_addr][index]
1889
- @index = cached.interval.end if cached
1982
+ if cached
1983
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1984
+ @index = cached.interval.end
1985
+ end
1890
1986
  return cached
1891
1987
  end
1892
1988
 
@@ -1970,7 +2066,10 @@ module Mail
1970
2066
  start_index = index
1971
2067
  if node_cache[:addr_spec].has_key?(index)
1972
2068
  cached = node_cache[:addr_spec][index]
1973
- @index = cached.interval.end if cached
2069
+ if cached
2070
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2071
+ @index = cached.interval.end
2072
+ end
1974
2073
  return cached
1975
2074
  end
1976
2075
 
@@ -2020,7 +2119,10 @@ module Mail
2020
2119
  start_index = index
2021
2120
  if node_cache[:local_part].has_key?(index)
2022
2121
  cached = node_cache[:local_part][index]
2023
- @index = cached.interval.end if cached
2122
+ if cached
2123
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2124
+ @index = cached.interval.end
2125
+ end
2024
2126
  return cached
2025
2127
  end
2026
2128
 
@@ -2052,7 +2154,10 @@ module Mail
2052
2154
  start_index = index
2053
2155
  if node_cache[:domain].has_key?(index)
2054
2156
  cached = node_cache[:domain][index]
2055
- @index = cached.interval.end if cached
2157
+ if cached
2158
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2159
+ @index = cached.interval.end
2160
+ end
2056
2161
  return cached
2057
2162
  end
2058
2163
 
@@ -2095,7 +2200,10 @@ module Mail
2095
2200
  start_index = index
2096
2201
  if node_cache[:group].has_key?(index)
2097
2202
  cached = node_cache[:group][index]
2098
- @index = cached.interval.end if cached
2203
+ if cached
2204
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2205
+ @index = cached.interval.end
2206
+ end
2099
2207
  return cached
2100
2208
  end
2101
2209
 
@@ -2175,7 +2283,10 @@ module Mail
2175
2283
  start_index = index
2176
2284
  if node_cache[:mailbox_list_group].has_key?(index)
2177
2285
  cached = node_cache[:mailbox_list_group][index]
2178
- @index = cached.interval.end if cached
2286
+ if cached
2287
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2288
+ @index = cached.interval.end
2289
+ end
2179
2290
  return cached
2180
2291
  end
2181
2292
 
@@ -2212,7 +2323,10 @@ module Mail
2212
2323
  start_index = index
2213
2324
  if node_cache[:quoted_string].has_key?(index)
2214
2325
  cached = node_cache[:quoted_string][index]
2215
- @index = cached.interval.end if cached
2326
+ if cached
2327
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2328
+ @index = cached.interval.end
2329
+ end
2216
2330
  return cached
2217
2331
  end
2218
2332
 
@@ -2303,7 +2417,10 @@ module Mail
2303
2417
  start_index = index
2304
2418
  if node_cache[:qcontent].has_key?(index)
2305
2419
  cached = node_cache[:qcontent][index]
2306
- @index = cached.interval.end if cached
2420
+ if cached
2421
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2422
+ @index = cached.interval.end
2423
+ end
2307
2424
  return cached
2308
2425
  end
2309
2426
 
@@ -2336,7 +2453,10 @@ module Mail
2336
2453
  start_index = index
2337
2454
  if node_cache[:quoted_pair].has_key?(index)
2338
2455
  cached = node_cache[:quoted_pair][index]
2339
- @index = cached.interval.end if cached
2456
+ if cached
2457
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2458
+ @index = cached.interval.end
2459
+ end
2340
2460
  return cached
2341
2461
  end
2342
2462
 
@@ -2382,7 +2502,10 @@ module Mail
2382
2502
  start_index = index
2383
2503
  if node_cache[:qtext].has_key?(index)
2384
2504
  cached = node_cache[:qtext][index]
2385
- @index = cached.interval.end if cached
2505
+ if cached
2506
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2507
+ @index = cached.interval.end
2508
+ end
2386
2509
  return cached
2387
2510
  end
2388
2511
 
@@ -2434,7 +2557,10 @@ module Mail
2434
2557
  start_index = index
2435
2558
  if node_cache[:text].has_key?(index)
2436
2559
  cached = node_cache[:text][index]
2437
- @index = cached.interval.end if cached
2560
+ if cached
2561
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2562
+ @index = cached.interval.end
2563
+ end
2438
2564
  return cached
2439
2565
  end
2440
2566
 
@@ -2486,7 +2612,10 @@ module Mail
2486
2612
  start_index = index
2487
2613
  if node_cache[:display_name].has_key?(index)
2488
2614
  cached = node_cache[:display_name][index]
2489
- @index = cached.interval.end if cached
2615
+ if cached
2616
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2617
+ @index = cached.interval.end
2618
+ end
2490
2619
  return cached
2491
2620
  end
2492
2621
 
@@ -2511,7 +2640,10 @@ module Mail
2511
2640
  start_index = index
2512
2641
  if node_cache[:name_addr].has_key?(index)
2513
2642
  cached = node_cache[:name_addr][index]
2514
- @index = cached.interval.end if cached
2643
+ if cached
2644
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2645
+ @index = cached.interval.end
2646
+ end
2515
2647
  return cached
2516
2648
  end
2517
2649
 
@@ -2567,7 +2699,10 @@ module Mail
2567
2699
  start_index = index
2568
2700
  if node_cache[:mailbox_list].has_key?(index)
2569
2701
  cached = node_cache[:mailbox_list][index]
2570
- @index = cached.interval.end if cached
2702
+ if cached
2703
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2704
+ @index = cached.interval.end
2705
+ end
2571
2706
  return cached
2572
2707
  end
2573
2708
 
@@ -2635,7 +2770,10 @@ module Mail
2635
2770
  start_index = index
2636
2771
  if node_cache[:mailbox].has_key?(index)
2637
2772
  cached = node_cache[:mailbox][index]
2638
- @index = cached.interval.end if cached
2773
+ if cached
2774
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2775
+ @index = cached.interval.end
2776
+ end
2639
2777
  return cached
2640
2778
  end
2641
2779
 
@@ -2698,7 +2836,10 @@ module Mail
2698
2836
  start_index = index
2699
2837
  if node_cache[:address].has_key?(index)
2700
2838
  cached = node_cache[:address][index]
2701
- @index = cached.interval.end if cached
2839
+ if cached
2840
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2841
+ @index = cached.interval.end
2842
+ end
2702
2843
  return cached
2703
2844
  end
2704
2845
 
@@ -2743,7 +2884,10 @@ module Mail
2743
2884
  start_index = index
2744
2885
  if node_cache[:address_list].has_key?(index)
2745
2886
  cached = node_cache[:address_list][index]
2746
- @index = cached.interval.end if cached
2887
+ if cached
2888
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2889
+ @index = cached.interval.end
2890
+ end
2747
2891
  return cached
2748
2892
  end
2749
2893
 
@@ -2834,7 +2978,10 @@ module Mail
2834
2978
  start_index = index
2835
2979
  if node_cache[:date_time].has_key?(index)
2836
2980
  cached = node_cache[:date_time][index]
2837
- @index = cached.interval.end if cached
2981
+ if cached
2982
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2983
+ @index = cached.interval.end
2984
+ end
2838
2985
  return cached
2839
2986
  end
2840
2987
 
@@ -2909,7 +3056,10 @@ module Mail
2909
3056
  start_index = index
2910
3057
  if node_cache[:day_of_week].has_key?(index)
2911
3058
  cached = node_cache[:day_of_week][index]
2912
- @index = cached.interval.end if cached
3059
+ if cached
3060
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3061
+ @index = cached.interval.end
3062
+ end
2913
3063
  return cached
2914
3064
  end
2915
3065
 
@@ -2954,7 +3104,10 @@ module Mail
2954
3104
  start_index = index
2955
3105
  if node_cache[:day_name].has_key?(index)
2956
3106
  cached = node_cache[:day_name][index]
2957
- @index = cached.interval.end if cached
3107
+ if cached
3108
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3109
+ @index = cached.interval.end
3110
+ end
2958
3111
  return cached
2959
3112
  end
2960
3113
 
@@ -3062,7 +3215,10 @@ module Mail
3062
3215
  start_index = index
3063
3216
  if node_cache[:date].has_key?(index)
3064
3217
  cached = node_cache[:date][index]
3065
- @index = cached.interval.end if cached
3218
+ if cached
3219
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3220
+ @index = cached.interval.end
3221
+ end
3066
3222
  return cached
3067
3223
  end
3068
3224
 
@@ -3112,7 +3268,10 @@ module Mail
3112
3268
  start_index = index
3113
3269
  if node_cache[:year].has_key?(index)
3114
3270
  cached = node_cache[:year][index]
3115
- @index = cached.interval.end if cached
3271
+ if cached
3272
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3273
+ @index = cached.interval.end
3274
+ end
3116
3275
  return cached
3117
3276
  end
3118
3277
 
@@ -3174,7 +3333,10 @@ module Mail
3174
3333
  start_index = index
3175
3334
  if node_cache[:month].has_key?(index)
3176
3335
  cached = node_cache[:month][index]
3177
- @index = cached.interval.end if cached
3336
+ if cached
3337
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3338
+ @index = cached.interval.end
3339
+ end
3178
3340
  return cached
3179
3341
  end
3180
3342
 
@@ -3218,7 +3380,10 @@ module Mail
3218
3380
  start_index = index
3219
3381
  if node_cache[:month_name].has_key?(index)
3220
3382
  cached = node_cache[:month_name][index]
3221
- @index = cached.interval.end if cached
3383
+ if cached
3384
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3385
+ @index = cached.interval.end
3386
+ end
3222
3387
  return cached
3223
3388
  end
3224
3389
 
@@ -3374,7 +3539,10 @@ module Mail
3374
3539
  start_index = index
3375
3540
  if node_cache[:day].has_key?(index)
3376
3541
  cached = node_cache[:day][index]
3377
- @index = cached.interval.end if cached
3542
+ if cached
3543
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3544
+ @index = cached.interval.end
3545
+ end
3378
3546
  return cached
3379
3547
  end
3380
3548
 
@@ -3442,7 +3610,10 @@ module Mail
3442
3610
  start_index = index
3443
3611
  if node_cache[:time].has_key?(index)
3444
3612
  cached = node_cache[:time][index]
3445
- @index = cached.interval.end if cached
3613
+ if cached
3614
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3615
+ @index = cached.interval.end
3616
+ end
3446
3617
  return cached
3447
3618
  end
3448
3619
 
@@ -3491,7 +3662,10 @@ module Mail
3491
3662
  start_index = index
3492
3663
  if node_cache[:time_of_day].has_key?(index)
3493
3664
  cached = node_cache[:time_of_day][index]
3494
- @index = cached.interval.end if cached
3665
+ if cached
3666
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3667
+ @index = cached.interval.end
3668
+ end
3495
3669
  return cached
3496
3670
  end
3497
3671
 
@@ -3567,7 +3741,10 @@ module Mail
3567
3741
  start_index = index
3568
3742
  if node_cache[:hour].has_key?(index)
3569
3743
  cached = node_cache[:hour][index]
3570
- @index = cached.interval.end if cached
3744
+ if cached
3745
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3746
+ @index = cached.interval.end
3747
+ end
3571
3748
  return cached
3572
3749
  end
3573
3750
 
@@ -3617,7 +3794,10 @@ module Mail
3617
3794
  start_index = index
3618
3795
  if node_cache[:minute].has_key?(index)
3619
3796
  cached = node_cache[:minute][index]
3620
- @index = cached.interval.end if cached
3797
+ if cached
3798
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3799
+ @index = cached.interval.end
3800
+ end
3621
3801
  return cached
3622
3802
  end
3623
3803
 
@@ -3667,7 +3847,10 @@ module Mail
3667
3847
  start_index = index
3668
3848
  if node_cache[:second].has_key?(index)
3669
3849
  cached = node_cache[:second][index]
3670
- @index = cached.interval.end if cached
3850
+ if cached
3851
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3852
+ @index = cached.interval.end
3853
+ end
3671
3854
  return cached
3672
3855
  end
3673
3856
 
@@ -3725,7 +3908,10 @@ module Mail
3725
3908
  start_index = index
3726
3909
  if node_cache[:zone].has_key?(index)
3727
3910
  cached = node_cache[:zone][index]
3728
- @index = cached.interval.end if cached
3911
+ if cached
3912
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3913
+ @index = cached.interval.end
3914
+ end
3729
3915
  return cached
3730
3916
  end
3731
3917
 
@@ -3811,7 +3997,10 @@ module Mail
3811
3997
  start_index = index
3812
3998
  if node_cache[:return].has_key?(index)
3813
3999
  cached = node_cache[:return][index]
3814
- @index = cached.interval.end if cached
4000
+ if cached
4001
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4002
+ @index = cached.interval.end
4003
+ end
3815
4004
  return cached
3816
4005
  end
3817
4006
 
@@ -3842,7 +4031,10 @@ module Mail
3842
4031
  start_index = index
3843
4032
  if node_cache[:path].has_key?(index)
3844
4033
  cached = node_cache[:path][index]
3845
- @index = cached.interval.end if cached
4034
+ if cached
4035
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4036
+ @index = cached.interval.end
4037
+ end
3846
4038
  return cached
3847
4039
  end
3848
4040
 
@@ -3947,7 +4139,10 @@ module Mail
3947
4139
  start_index = index
3948
4140
  if node_cache[:received].has_key?(index)
3949
4141
  cached = node_cache[:received][index]
3950
- @index = cached.interval.end if cached
4142
+ if cached
4143
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4144
+ @index = cached.interval.end
4145
+ end
3951
4146
  return cached
3952
4147
  end
3953
4148
 
@@ -4009,7 +4204,10 @@ module Mail
4009
4204
  start_index = index
4010
4205
  if node_cache[:name_val_list].has_key?(index)
4011
4206
  cached = node_cache[:name_val_list][index]
4012
- @index = cached.interval.end if cached
4207
+ if cached
4208
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4209
+ @index = cached.interval.end
4210
+ end
4013
4211
  return cached
4014
4212
  end
4015
4213
 
@@ -4091,7 +4289,10 @@ module Mail
4091
4289
  start_index = index
4092
4290
  if node_cache[:name_val_pair].has_key?(index)
4093
4291
  cached = node_cache[:name_val_pair][index]
4094
- @index = cached.interval.end if cached
4292
+ if cached
4293
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4294
+ @index = cached.interval.end
4295
+ end
4095
4296
  return cached
4096
4297
  end
4097
4298
 
@@ -4133,7 +4334,10 @@ module Mail
4133
4334
  start_index = index
4134
4335
  if node_cache[:item_name].has_key?(index)
4135
4336
  cached = node_cache[:item_name][index]
4136
- @index = cached.interval.end if cached
4337
+ if cached
4338
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4339
+ @index = cached.interval.end
4340
+ end
4137
4341
  return cached
4138
4342
  end
4139
4343
 
@@ -4206,7 +4410,10 @@ module Mail
4206
4410
  start_index = index
4207
4411
  if node_cache[:item_value].has_key?(index)
4208
4412
  cached = node_cache[:item_value][index]
4209
- @index = cached.interval.end if cached
4413
+ if cached
4414
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4415
+ @index = cached.interval.end
4416
+ end
4210
4417
  return cached
4211
4418
  end
4212
4419
 
@@ -4282,7 +4489,10 @@ module Mail
4282
4489
  start_index = index
4283
4490
  if node_cache[:message_ids].has_key?(index)
4284
4491
  cached = node_cache[:message_ids][index]
4285
- @index = cached.interval.end if cached
4492
+ if cached
4493
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4494
+ @index = cached.interval.end
4495
+ end
4286
4496
  return cached
4287
4497
  end
4288
4498
 
@@ -4339,7 +4549,10 @@ module Mail
4339
4549
  start_index = index
4340
4550
  if node_cache[:msg_id].has_key?(index)
4341
4551
  cached = node_cache[:msg_id][index]
4342
- @index = cached.interval.end if cached
4552
+ if cached
4553
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4554
+ @index = cached.interval.end
4555
+ end
4343
4556
  return cached
4344
4557
  end
4345
4558
 
@@ -4411,7 +4624,10 @@ module Mail
4411
4624
  start_index = index
4412
4625
  if node_cache[:msg_id_value].has_key?(index)
4413
4626
  cached = node_cache[:msg_id_value][index]
4414
- @index = cached.interval.end if cached
4627
+ if cached
4628
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4629
+ @index = cached.interval.end
4630
+ end
4415
4631
  return cached
4416
4632
  end
4417
4633
 
@@ -4449,7 +4665,10 @@ module Mail
4449
4665
  start_index = index
4450
4666
  if node_cache[:id_left].has_key?(index)
4451
4667
  cached = node_cache[:id_left][index]
4452
- @index = cached.interval.end if cached
4668
+ if cached
4669
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4670
+ @index = cached.interval.end
4671
+ end
4453
4672
  return cached
4454
4673
  end
4455
4674
 
@@ -4481,7 +4700,10 @@ module Mail
4481
4700
  start_index = index
4482
4701
  if node_cache[:id_right].has_key?(index)
4483
4702
  cached = node_cache[:id_right][index]
4484
- @index = cached.interval.end if cached
4703
+ if cached
4704
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4705
+ @index = cached.interval.end
4706
+ end
4485
4707
  return cached
4486
4708
  end
4487
4709
 
@@ -4520,7 +4742,10 @@ module Mail
4520
4742
  start_index = index
4521
4743
  if node_cache[:msg_id_dot_atom_text].has_key?(index)
4522
4744
  cached = node_cache[:msg_id_dot_atom_text][index]
4523
- @index = cached.interval.end if cached
4745
+ if cached
4746
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4747
+ @index = cached.interval.end
4748
+ end
4524
4749
  return cached
4525
4750
  end
4526
4751
 
@@ -4589,7 +4814,10 @@ module Mail
4589
4814
  start_index = index
4590
4815
  if node_cache[:msg_id_domain_text].has_key?(index)
4591
4816
  cached = node_cache[:msg_id_domain_text][index]
4592
- @index = cached.interval.end if cached
4817
+ if cached
4818
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4819
+ @index = cached.interval.end
4820
+ end
4593
4821
  return cached
4594
4822
  end
4595
4823
 
@@ -4688,7 +4916,10 @@ module Mail
4688
4916
  start_index = index
4689
4917
  if node_cache[:msg_id_atext].has_key?(index)
4690
4918
  cached = node_cache[:msg_id_atext][index]
4691
- @index = cached.interval.end if cached
4919
+ if cached
4920
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4921
+ @index = cached.interval.end
4922
+ end
4692
4923
  return cached
4693
4924
  end
4694
4925
 
@@ -4945,7 +5176,10 @@ module Mail
4945
5176
  start_index = index
4946
5177
  if node_cache[:no_fold_quote].has_key?(index)
4947
5178
  cached = node_cache[:no_fold_quote][index]
4948
- @index = cached.interval.end if cached
5179
+ if cached
5180
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
5181
+ @index = cached.interval.end
5182
+ end
4949
5183
  return cached
4950
5184
  end
4951
5185
 
@@ -5006,7 +5240,10 @@ module Mail
5006
5240
  start_index = index
5007
5241
  if node_cache[:no_fold_literal].has_key?(index)
5008
5242
  cached = node_cache[:no_fold_literal][index]
5009
- @index = cached.interval.end if cached
5243
+ if cached
5244
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
5245
+ @index = cached.interval.end
5246
+ end
5010
5247
  return cached
5011
5248
  end
5012
5249