# File lib/mail/parsers/content_type.rb, line 861
861: def _nt_attribute
862: start_index = index
863: if node_cache[:attribute].has_key?(index)
864: cached = node_cache[:attribute][index]
865: if cached
866: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
867: @index = cached.interval.end
868: end
869: return cached
870: end
871:
872: s0, i0 = [], index
873: loop do
874: r1 = _nt_token
875: if r1
876: s0 << r1
877: else
878: break
879: end
880: end
881: if s0.empty?
882: @index = i0
883: r0 = nil
884: else
885: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
886: end
887:
888: node_cache[:attribute][start_index] = r0
889:
890: r0
891: end
# File lib/mail/parsers/content_type.rb, line 535
535: def _nt_composite_type
536: start_index = index
537: if node_cache[:composite_type].has_key?(index)
538: cached = node_cache[:composite_type][index]
539: if cached
540: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
541: @index = cached.interval.end
542: end
543: return cached
544: end
545:
546: i0 = index
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)
612: else
613: @index = i1
614: r1 = nil
615: end
616: if r1
617: r0 = r1
618: else
619: i9, s9 = index, []
620: if has_terminal?('\G[mM]', true, index)
621: r10 = true
622: @index += 1
623: else
624: r10 = nil
625: end
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)
702: else
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
712: else
713: @index = i0
714: r0 = nil
715: end
716: end
717: end
718:
719: node_cache[:composite_type][start_index] = r0
720:
721: r0
722: end
# File lib/mail/parsers/content_type.rb, line 52
52: def _nt_content_type
53: start_index = index
54: if node_cache[:content_type].has_key?(index)
55: cached = node_cache[:content_type][index]
56: if cached
57: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
58: @index = cached.interval.end
59: end
60: return cached
61: end
62:
63: i0, s0 = index, []
64: r1 = _nt_main_type
65: s0 << r1
66: if r1
67: if has_terminal?("/", false, index)
68: r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
69: @index += 1
70: else
71: terminal_parse_failure("/")
72: r2 = nil
73: end
74: s0 << r2
75: if r2
76: r3 = _nt_sub_type
77: s0 << r3
78: if r3
79: s4, i4 = [], index
80: loop do
81: i5, s5 = index, []
82: r6 = _nt_CFWS
83: s5 << r6
84: if r6
85: if has_terminal?(";", false, index)
86: r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
87: @index += 1
88: else
89: terminal_parse_failure(";")
90: r8 = nil
91: end
92: if r8
93: r7 = r8
94: else
95: r7 = instantiate_node(SyntaxNode,input, index...index)
96: end
97: s5 << r7
98: if r7
99: r9 = _nt_parameter
100: s5 << r9
101: if r9
102: r10 = _nt_CFWS
103: s5 << r10
104: end
105: end
106: end
107: if s5.last
108: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
109: r5.extend(ContentType0)
110: else
111: @index = i5
112: r5 = nil
113: end
114: if r5
115: s4 << r5
116: else
117: break
118: end
119: end
120: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
121: s0 << r4
122: end
123: end
124: end
125: if s0.last
126: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
127: r0.extend(ContentType1)
128: r0.extend(ContentType2)
129: else
130: @index = i0
131: r0 = nil
132: end
133:
134: node_cache[:content_type][start_index] = r0
135:
136: r0
137: end
# File lib/mail/parsers/content_type.rb, line 184
184: def _nt_discrete_type
185: start_index = index
186: if node_cache[:discrete_type].has_key?(index)
187: cached = node_cache[:discrete_type][index]
188: if cached
189: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
190: @index = cached.interval.end
191: end
192: return cached
193: end
194:
195: i0 = index
196: i1, s1 = index, []
197: if has_terminal?('\G[tT]', true, index)
198: r2 = true
199: @index += 1
200: else
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
236: r1 = nil
237: end
238: if r1
239: r0 = r1
240: else
241: i6, s6 = index, []
242: if has_terminal?('\G[iI]', true, index)
243: r7 = true
244: @index += 1
245: else
246: r7 = nil
247: end
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)
288: else
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
299: else
300: r13 = nil
301: end
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
348: else
349: i18, s18 = index, []
350: if has_terminal?('\G[vV]', true, index)
351: r19 = true
352: @index += 1
353: else
354: r19 = nil
355: end
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)
396: else
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
407: else
408: r25 = nil
409: end
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
510: else
511: r36 = _nt_extension_token
512: if r36
513: r0 = r36
514: else
515: @index = i0
516: r0 = nil
517: end
518: end
519: end
520: end
521: end
522: end
523:
524: node_cache[:discrete_type][start_index] = r0
525:
526: r0
527: end
# File lib/mail/parsers/content_type.rb, line 724
724: def _nt_extension_token
725: start_index = index
726: if node_cache[:extension_token].has_key?(index)
727: cached = node_cache[:extension_token][index]
728: if cached
729: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
730: @index = cached.interval.end
731: end
732: return cached
733: end
734:
735: i0 = index
736: r1 = _nt_ietf_token
737: if r1
738: r0 = r1
739: else
740: r2 = _nt_custom_x_token
741: if r2
742: r0 = r2
743: else
744: @index = i0
745: r0 = nil
746: end
747: end
748:
749: node_cache[:extension_token][start_index] = r0
750:
751: r0
752: end
# File lib/mail/parsers/content_type.rb, line 139
139: def _nt_main_type
140: start_index = index
141: if node_cache[:main_type].has_key?(index)
142: cached = node_cache[:main_type][index]
143: if cached
144: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
145: @index = cached.interval.end
146: end
147: return cached
148: end
149:
150: i0 = index
151: r1 = _nt_discrete_type
152: if r1
153: r0 = r1
154: else
155: r2 = _nt_composite_type
156: if r2
157: r0 = r2
158: else
159: @index = i0
160: r0 = nil
161: end
162: end
163:
164: node_cache[:main_type][start_index] = r0
165:
166: r0
167: end
# File lib/mail/parsers/content_type.rb, line 801
801: def _nt_parameter
802: start_index = index
803: if node_cache[:parameter].has_key?(index)
804: cached = node_cache[:parameter][index]
805: if cached
806: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
807: @index = cached.interval.end
808: end
809: return cached
810: end
811:
812: i0, s0 = index, []
813: r2 = _nt_CFWS
814: if r2
815: r1 = r2
816: else
817: r1 = instantiate_node(SyntaxNode,input, index...index)
818: end
819: s0 << r1
820: if r1
821: r3 = _nt_attribute
822: s0 << r3
823: if r3
824: if has_terminal?("=", false, index)
825: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
826: @index += 1
827: else
828: terminal_parse_failure("=")
829: r4 = nil
830: end
831: s0 << r4
832: if r4
833: r5 = _nt_value
834: s0 << r5
835: if r5
836: r7 = _nt_CFWS
837: if r7
838: r6 = r7
839: else
840: r6 = instantiate_node(SyntaxNode,input, index...index)
841: end
842: s0 << r6
843: end
844: end
845: end
846: end
847: if s0.last
848: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
849: r0.extend(Parameter0)
850: r0.extend(Parameter1)
851: else
852: @index = i0
853: r0 = nil
854: end
855:
856: node_cache[:parameter][start_index] = r0
857:
858: r0
859: end
# File lib/mail/parsers/content_type.rb, line 754
754: def _nt_sub_type
755: start_index = index
756: if node_cache[:sub_type].has_key?(index)
757: cached = node_cache[:sub_type][index]
758: if cached
759: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
760: @index = cached.interval.end
761: end
762: return cached
763: end
764:
765: i0 = index
766: r1 = _nt_extension_token
767: if r1
768: r0 = r1
769: else
770: r2 = _nt_iana_token
771: if r2
772: r0 = r2
773: else
774: @index = i0
775: r0 = nil
776: end
777: end
778:
779: node_cache[:sub_type][start_index] = r0
780:
781: r0
782: end
# File lib/mail/parsers/content_type.rb, line 899
899: def _nt_value
900: start_index = index
901: if node_cache[:value].has_key?(index)
902: cached = node_cache[:value][index]
903: if cached
904: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
905: @index = cached.interval.end
906: end
907: return cached
908: end
909:
910: i0 = index
911: r1 = _nt_quoted_string
912: r1.extend(Value0)
913: if r1
914: r0 = r1
915: else
916: s2, i2 = [], index
917: loop do
918: i3 = index
919: r4 = _nt_token
920: if r4
921: r3 = r4
922: else
923: if has_terminal?('\G[\x3d]', true, index)
924: r5 = true
925: @index += 1
926: else
927: r5 = nil
928: end
929: if r5
930: r3 = r5
931: else
932: @index = i3
933: r3 = nil
934: end
935: end
936: if r3
937: s2 << r3
938: else
939: break
940: end
941: end
942: if s2.empty?
943: @index = i2
944: r2 = nil
945: else
946: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
947: end
948: if r2
949: r0 = r2
950: else
951: @index = i0
952: r0 = nil
953: end
954: end
955:
956: node_cache[:value][start_index] = r0
957:
958: r0
959: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.