mail 2.2.5 → 2.2.5.1

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.

data/Rakefile CHANGED
@@ -3,7 +3,6 @@ require File.expand_path('../spec/environment', __FILE__)
3
3
  require 'rake/rdoctask'
4
4
  require 'rake/testtask'
5
5
  require 'spec/rake/spectask'
6
- require 'cucumber/rake/task'
7
6
 
8
7
  desc "Build a gem file"
9
8
  task :build do
@@ -11,9 +10,6 @@ task :build do
11
10
  end
12
11
 
13
12
  task :default => :spec
14
- Cucumber::Rake::Task.new do |t|
15
- t.cucumber_opts = "spec/features --format pretty"
16
- end
17
13
 
18
14
  Spec::Rake::SpecTask.new(:rcov) do |t|
19
15
  t.spec_files = FileList['test/**/tc_*.rb', 'spec/**/*_spec.rb']
data/lib/VERSION CHANGED
@@ -1,4 +1,4 @@
1
1
  patch:5
2
2
  major:2
3
- build:
3
+ build:1
4
4
  minor:2
@@ -7,8 +7,8 @@ module Mail
7
7
  def initialize( string )
8
8
  parser = Mail::ContentTypeParser.new
9
9
  if tree = parser.parse(cleaned(string))
10
- @main_type = tree.main_type.text_value
11
- @sub_type = tree.sub_type.text_value
10
+ @main_type = tree.main_type.text_value.downcase
11
+ @sub_type = tree.sub_type.text_value.downcase
12
12
  @parameters = tree.parameters
13
13
  else
14
14
  raise Mail::Field::ParseError, "ContentTypeElement can not parse |#{string}|\nReason was: #{parser.failure_reason}\n"
@@ -166,6 +166,21 @@ module Mail
166
166
  r0
167
167
  end
168
168
 
169
+ module DiscreteType0
170
+ end
171
+
172
+ module DiscreteType1
173
+ end
174
+
175
+ module DiscreteType2
176
+ end
177
+
178
+ module DiscreteType3
179
+ end
180
+
181
+ module DiscreteType4
182
+ end
183
+
169
184
  def _nt_discrete_type
170
185
  start_index = index
171
186
  if node_cache[:discrete_type].has_key?(index)
@@ -178,59 +193,324 @@ module Mail
178
193
  end
179
194
 
180
195
  i0 = index
181
- if has_terminal?("text", false, index)
182
- r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
183
- @index += 4
196
+ i1, s1 = index, []
197
+ if has_terminal?('\G[tT]', true, index)
198
+ r2 = true
199
+ @index += 1
184
200
  else
185
- terminal_parse_failure("text")
201
+ r2 = nil
202
+ end
203
+ s1 << r2
204
+ if r2
205
+ if has_terminal?('\G[eE]', true, index)
206
+ r3 = true
207
+ @index += 1
208
+ else
209
+ r3 = nil
210
+ end
211
+ s1 << r3
212
+ if r3
213
+ if has_terminal?('\G[xX]', true, index)
214
+ r4 = true
215
+ @index += 1
216
+ else
217
+ r4 = nil
218
+ end
219
+ s1 << r4
220
+ if r4
221
+ if has_terminal?('\G[tT]', true, index)
222
+ r5 = true
223
+ @index += 1
224
+ else
225
+ r5 = nil
226
+ end
227
+ s1 << r5
228
+ end
229
+ end
230
+ end
231
+ if s1.last
232
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
233
+ r1.extend(DiscreteType0)
234
+ else
235
+ @index = i1
186
236
  r1 = nil
187
237
  end
188
238
  if r1
189
239
  r0 = r1
190
240
  else
191
- if has_terminal?("image", false, index)
192
- r2 = instantiate_node(SyntaxNode,input, index...(index + 5))
193
- @index += 5
241
+ i6, s6 = index, []
242
+ if has_terminal?('\G[iI]', true, index)
243
+ r7 = true
244
+ @index += 1
194
245
  else
195
- terminal_parse_failure("image")
196
- r2 = nil
246
+ r7 = nil
197
247
  end
198
- if r2
199
- r0 = r2
248
+ s6 << r7
249
+ if r7
250
+ if has_terminal?('\G[mM]', true, index)
251
+ r8 = true
252
+ @index += 1
253
+ else
254
+ r8 = nil
255
+ end
256
+ s6 << r8
257
+ if r8
258
+ if has_terminal?('\G[aA]', true, index)
259
+ r9 = true
260
+ @index += 1
261
+ else
262
+ r9 = nil
263
+ end
264
+ s6 << r9
265
+ if r9
266
+ if has_terminal?('\G[gG]', true, index)
267
+ r10 = true
268
+ @index += 1
269
+ else
270
+ r10 = nil
271
+ end
272
+ s6 << r10
273
+ if r10
274
+ if has_terminal?('\G[eE]', true, index)
275
+ r11 = true
276
+ @index += 1
277
+ else
278
+ r11 = nil
279
+ end
280
+ s6 << r11
281
+ end
282
+ end
283
+ end
284
+ end
285
+ if s6.last
286
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
287
+ r6.extend(DiscreteType1)
200
288
  else
201
- if has_terminal?("audio", false, index)
202
- r3 = instantiate_node(SyntaxNode,input, index...(index + 5))
203
- @index += 5
289
+ @index = i6
290
+ r6 = nil
291
+ end
292
+ if r6
293
+ r0 = r6
294
+ else
295
+ i12, s12 = index, []
296
+ if has_terminal?('\G[aA]', true, index)
297
+ r13 = true
298
+ @index += 1
204
299
  else
205
- terminal_parse_failure("audio")
206
- r3 = nil
300
+ r13 = nil
207
301
  end
208
- if r3
209
- r0 = r3
302
+ s12 << r13
303
+ if r13
304
+ if has_terminal?('\G[uU]', true, index)
305
+ r14 = true
306
+ @index += 1
307
+ else
308
+ r14 = nil
309
+ end
310
+ s12 << r14
311
+ if r14
312
+ if has_terminal?('\G[dD]', true, index)
313
+ r15 = true
314
+ @index += 1
315
+ else
316
+ r15 = nil
317
+ end
318
+ s12 << r15
319
+ if r15
320
+ if has_terminal?('\G[iI]', true, index)
321
+ r16 = true
322
+ @index += 1
323
+ else
324
+ r16 = nil
325
+ end
326
+ s12 << r16
327
+ if r16
328
+ if has_terminal?('\G[oO]', true, index)
329
+ r17 = true
330
+ @index += 1
331
+ else
332
+ r17 = nil
333
+ end
334
+ s12 << r17
335
+ end
336
+ end
337
+ end
338
+ end
339
+ if s12.last
340
+ r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
341
+ r12.extend(DiscreteType2)
342
+ else
343
+ @index = i12
344
+ r12 = nil
345
+ end
346
+ if r12
347
+ r0 = r12
210
348
  else
211
- if has_terminal?("video", false, index)
212
- r4 = instantiate_node(SyntaxNode,input, index...(index + 5))
213
- @index += 5
349
+ i18, s18 = index, []
350
+ if has_terminal?('\G[vV]', true, index)
351
+ r19 = true
352
+ @index += 1
214
353
  else
215
- terminal_parse_failure("video")
216
- r4 = nil
354
+ r19 = nil
217
355
  end
218
- if r4
219
- r0 = r4
356
+ s18 << r19
357
+ if r19
358
+ if has_terminal?('\G[iI]', true, index)
359
+ r20 = true
360
+ @index += 1
361
+ else
362
+ r20 = nil
363
+ end
364
+ s18 << r20
365
+ if r20
366
+ if has_terminal?('\G[dD]', true, index)
367
+ r21 = true
368
+ @index += 1
369
+ else
370
+ r21 = nil
371
+ end
372
+ s18 << r21
373
+ if r21
374
+ if has_terminal?('\G[eE]', true, index)
375
+ r22 = true
376
+ @index += 1
377
+ else
378
+ r22 = nil
379
+ end
380
+ s18 << r22
381
+ if r22
382
+ if has_terminal?('\G[oO]', true, index)
383
+ r23 = true
384
+ @index += 1
385
+ else
386
+ r23 = nil
387
+ end
388
+ s18 << r23
389
+ end
390
+ end
391
+ end
392
+ end
393
+ if s18.last
394
+ r18 = instantiate_node(SyntaxNode,input, i18...index, s18)
395
+ r18.extend(DiscreteType3)
220
396
  else
221
- if has_terminal?("application", false, index)
222
- r5 = instantiate_node(SyntaxNode,input, index...(index + 11))
223
- @index += 11
397
+ @index = i18
398
+ r18 = nil
399
+ end
400
+ if r18
401
+ r0 = r18
402
+ else
403
+ i24, s24 = index, []
404
+ if has_terminal?('\G[aA]', true, index)
405
+ r25 = true
406
+ @index += 1
224
407
  else
225
- terminal_parse_failure("application")
226
- r5 = nil
408
+ r25 = nil
227
409
  end
228
- if r5
229
- r0 = r5
410
+ s24 << r25
411
+ if r25
412
+ if has_terminal?('\G[pP]', true, index)
413
+ r26 = true
414
+ @index += 1
415
+ else
416
+ r26 = nil
417
+ end
418
+ s24 << r26
419
+ if r26
420
+ if has_terminal?('\G[pP]', true, index)
421
+ r27 = true
422
+ @index += 1
423
+ else
424
+ r27 = nil
425
+ end
426
+ s24 << r27
427
+ if r27
428
+ if has_terminal?('\G[lL]', true, index)
429
+ r28 = true
430
+ @index += 1
431
+ else
432
+ r28 = nil
433
+ end
434
+ s24 << r28
435
+ if r28
436
+ if has_terminal?('\G[iI]', true, index)
437
+ r29 = true
438
+ @index += 1
439
+ else
440
+ r29 = nil
441
+ end
442
+ s24 << r29
443
+ if r29
444
+ if has_terminal?('\G[cC]', true, index)
445
+ r30 = true
446
+ @index += 1
447
+ else
448
+ r30 = nil
449
+ end
450
+ s24 << r30
451
+ if r30
452
+ if has_terminal?('\G[aA]', true, index)
453
+ r31 = true
454
+ @index += 1
455
+ else
456
+ r31 = nil
457
+ end
458
+ s24 << r31
459
+ if r31
460
+ if has_terminal?('\G[tT]', true, index)
461
+ r32 = true
462
+ @index += 1
463
+ else
464
+ r32 = nil
465
+ end
466
+ s24 << r32
467
+ if r32
468
+ if has_terminal?('\G[iI]', true, index)
469
+ r33 = true
470
+ @index += 1
471
+ else
472
+ r33 = nil
473
+ end
474
+ s24 << r33
475
+ if r33
476
+ if has_terminal?('\G[oO]', true, index)
477
+ r34 = true
478
+ @index += 1
479
+ else
480
+ r34 = nil
481
+ end
482
+ s24 << r34
483
+ if r34
484
+ if has_terminal?('\G[nN]', true, index)
485
+ r35 = true
486
+ @index += 1
487
+ else
488
+ r35 = nil
489
+ end
490
+ s24 << r35
491
+ end
492
+ end
493
+ end
494
+ end
495
+ end
496
+ end
497
+ end
498
+ end
499
+ end
500
+ end
501
+ if s24.last
502
+ r24 = instantiate_node(SyntaxNode,input, i24...index, s24)
503
+ r24.extend(DiscreteType4)
504
+ else
505
+ @index = i24
506
+ r24 = nil
507
+ end
508
+ if r24
509
+ r0 = r24
230
510
  else
231
- r6 = _nt_extension_token
232
- if r6
233
- r0 = r6
511
+ r36 = _nt_extension_token
512
+ if r36
513
+ r0 = r36
234
514
  else
235
515
  @index = i0
236
516
  r0 = nil
@@ -246,6 +526,12 @@ module Mail
246
526
  r0
247
527
  end
248
528
 
529
+ module CompositeType0
530
+ end
531
+
532
+ module CompositeType1
533
+ end
534
+
249
535
  def _nt_composite_type
250
536
  start_index = index
251
537
  if node_cache[:composite_type].has_key?(index)
@@ -258,29 +544,171 @@ module Mail
258
544
  end
259
545
 
260
546
  i0 = index
261
- if has_terminal?("message", false, index)
262
- r1 = instantiate_node(SyntaxNode,input, index...(index + 7))
263
- @index += 7
547
+ i1, s1 = index, []
548
+ if has_terminal?('\G[mM]', true, index)
549
+ r2 = true
550
+ @index += 1
551
+ else
552
+ r2 = nil
553
+ end
554
+ s1 << r2
555
+ if r2
556
+ if has_terminal?('\G[eE]', true, index)
557
+ r3 = true
558
+ @index += 1
559
+ else
560
+ r3 = nil
561
+ end
562
+ s1 << r3
563
+ if r3
564
+ if has_terminal?('\G[sS]', true, index)
565
+ r4 = true
566
+ @index += 1
567
+ else
568
+ r4 = nil
569
+ end
570
+ s1 << r4
571
+ if r4
572
+ if has_terminal?('\G[sS]', true, index)
573
+ r5 = true
574
+ @index += 1
575
+ else
576
+ r5 = nil
577
+ end
578
+ s1 << r5
579
+ if r5
580
+ if has_terminal?('\G[aA]', true, index)
581
+ r6 = true
582
+ @index += 1
583
+ else
584
+ r6 = nil
585
+ end
586
+ s1 << r6
587
+ if r6
588
+ if has_terminal?('\G[gG]', true, index)
589
+ r7 = true
590
+ @index += 1
591
+ else
592
+ r7 = nil
593
+ end
594
+ s1 << r7
595
+ if r7
596
+ if has_terminal?('\G[eE]', true, index)
597
+ r8 = true
598
+ @index += 1
599
+ else
600
+ r8 = nil
601
+ end
602
+ s1 << r8
603
+ end
604
+ end
605
+ end
606
+ end
607
+ end
608
+ end
609
+ if s1.last
610
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
611
+ r1.extend(CompositeType0)
264
612
  else
265
- terminal_parse_failure("message")
613
+ @index = i1
266
614
  r1 = nil
267
615
  end
268
616
  if r1
269
617
  r0 = r1
270
618
  else
271
- if has_terminal?("multipart", false, index)
272
- r2 = instantiate_node(SyntaxNode,input, index...(index + 9))
273
- @index += 9
619
+ i9, s9 = index, []
620
+ if has_terminal?('\G[mM]', true, index)
621
+ r10 = true
622
+ @index += 1
274
623
  else
275
- terminal_parse_failure("multipart")
276
- r2 = nil
624
+ r10 = nil
277
625
  end
278
- if r2
279
- r0 = r2
626
+ s9 << r10
627
+ if r10
628
+ if has_terminal?('\G[uU]', true, index)
629
+ r11 = true
630
+ @index += 1
631
+ else
632
+ r11 = nil
633
+ end
634
+ s9 << r11
635
+ if r11
636
+ if has_terminal?('\G[lL]', true, index)
637
+ r12 = true
638
+ @index += 1
639
+ else
640
+ r12 = nil
641
+ end
642
+ s9 << r12
643
+ if r12
644
+ if has_terminal?('\G[tT]', true, index)
645
+ r13 = true
646
+ @index += 1
647
+ else
648
+ r13 = nil
649
+ end
650
+ s9 << r13
651
+ if r13
652
+ if has_terminal?('\G[iI]', true, index)
653
+ r14 = true
654
+ @index += 1
655
+ else
656
+ r14 = nil
657
+ end
658
+ s9 << r14
659
+ if r14
660
+ if has_terminal?('\G[pP]', true, index)
661
+ r15 = true
662
+ @index += 1
663
+ else
664
+ r15 = nil
665
+ end
666
+ s9 << r15
667
+ if r15
668
+ if has_terminal?('\G[aA]', true, index)
669
+ r16 = true
670
+ @index += 1
671
+ else
672
+ r16 = nil
673
+ end
674
+ s9 << r16
675
+ if r16
676
+ if has_terminal?('\G[rR]', true, index)
677
+ r17 = true
678
+ @index += 1
679
+ else
680
+ r17 = nil
681
+ end
682
+ s9 << r17
683
+ if r17
684
+ if has_terminal?('\G[tT]', true, index)
685
+ r18 = true
686
+ @index += 1
687
+ else
688
+ r18 = nil
689
+ end
690
+ s9 << r18
691
+ end
692
+ end
693
+ end
694
+ end
695
+ end
696
+ end
697
+ end
698
+ end
699
+ if s9.last
700
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
701
+ r9.extend(CompositeType1)
280
702
  else
281
- r3 = _nt_extension_token
282
- if r3
283
- r0 = r3
703
+ @index = i9
704
+ r9 = nil
705
+ end
706
+ if r9
707
+ r0 = r9
708
+ else
709
+ r19 = _nt_extension_token
710
+ if r19
711
+ r0 = r19
284
712
  else
285
713
  @index = i0
286
714
  r0 = nil
@@ -18,12 +18,22 @@ module Mail
18
18
  discrete_type / composite_type
19
19
  end
20
20
 
21
+ # This matches in a case insensitive way:
22
+ #
23
+ # rule discrete_type
24
+ # "text" / "image" / "audio" / "video" / "application" / extension_token
25
+ # end
21
26
  rule discrete_type
22
- "text" / "image" / "audio" / "video" / "application" / extension_token
27
+ [tT] [eE] [xX] [tT] / [iI] [mM] [aA] [gG] [eE] / [aA] [uU] [dD] [iI] [oO] / [vV] [iI] [dD] [eE] [oO] / [aA] [pP] [pP] [lL] [iI] [cC] [aA] [tT] [iI] [oO] [nN] / extension_token
23
28
  end
24
29
 
30
+ # This matches in a case insensitive way:
31
+ #
32
+ # rule composite_type
33
+ # "message" / "multipart" / extension_token
34
+ # end
25
35
  rule composite_type
26
- "message" / "multipart" / extension_token
36
+ [mM] [eE] [sS] [sS] [aA] [gG] [eE] / [mM] [uU] [lL] [tT] [iI] [pP] [aA] [rR] [tT] / extension_token
27
37
  end
28
38
 
29
39
  rule extension_token
metadata CHANGED
@@ -1,12 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 105
4
5
  prerelease: false
5
6
  segments:
6
7
  - 2
7
8
  - 2
8
9
  - 5
9
- version: 2.2.5
10
+ - 1
11
+ version: 2.2.5.1
10
12
  platform: ruby
11
13
  authors:
12
14
  - Mikel Lindsaar
@@ -14,49 +16,55 @@ autorequire:
14
16
  bindir: bin
15
17
  cert_chain: []
16
18
 
17
- date: 2010-06-17 00:00:00 -07:00
19
+ date: 2010-09-11 00:00:00 +10:00
18
20
  default_executable:
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
- name: activesupport
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
+ none: false
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
28
+ hash: 15
27
29
  segments:
28
30
  - 2
29
31
  - 3
30
32
  - 6
31
33
  version: 2.3.6
34
+ requirement: *id001
35
+ name: activesupport
36
+ prerelease: false
32
37
  type: :runtime
33
- version_requirements: *id001
34
38
  - !ruby/object:Gem::Dependency
35
- name: mime-types
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
39
+ version_requirements: &id002 !ruby/object:Gem::Requirement
40
+ none: false
38
41
  requirements:
39
42
  - - ">="
40
43
  - !ruby/object:Gem::Version
44
+ hash: 3
41
45
  segments:
42
46
  - 0
43
47
  version: "0"
48
+ requirement: *id002
49
+ name: mime-types
50
+ prerelease: false
44
51
  type: :runtime
45
- version_requirements: *id002
46
52
  - !ruby/object:Gem::Dependency
47
- name: treetop
48
- prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ none: false
50
55
  requirements:
51
56
  - - ">="
52
57
  - !ruby/object:Gem::Version
58
+ hash: 13
53
59
  segments:
54
60
  - 1
55
61
  - 4
56
62
  - 5
57
63
  version: 1.4.5
64
+ requirement: *id003
65
+ name: treetop
66
+ prerelease: false
58
67
  type: :runtime
59
- version_requirements: *id003
60
68
  description: A really Ruby Mail handler.
61
69
  email: raasdnil@gmail.com
62
70
  executables: []
@@ -297,23 +305,27 @@ rdoc_options: []
297
305
  require_paths:
298
306
  - lib
299
307
  required_ruby_version: !ruby/object:Gem::Requirement
308
+ none: false
300
309
  requirements:
301
310
  - - ">="
302
311
  - !ruby/object:Gem::Version
312
+ hash: 3
303
313
  segments:
304
314
  - 0
305
315
  version: "0"
306
316
  required_rubygems_version: !ruby/object:Gem::Requirement
317
+ none: false
307
318
  requirements:
308
319
  - - ">="
309
320
  - !ruby/object:Gem::Version
321
+ hash: 3
310
322
  segments:
311
323
  - 0
312
324
  version: "0"
313
325
  requirements: []
314
326
 
315
327
  rubyforge_project:
316
- rubygems_version: 1.3.6
328
+ rubygems_version: 1.3.7
317
329
  signing_key:
318
330
  specification_version: 3
319
331
  summary: Mail provides a nice Ruby DSL for making, sending and reading emails.