Namespace

Included Modules

Class Index [+]

Quicksearch

Mail::RFC2822

Public Instance Methods

_nt_ALPHA() click to toggle source
    # File lib/mail/parsers/rfc2822.rb, line 14
14:     def _nt_ALPHA
15:       start_index = index
16:       if node_cache[:ALPHA].has_key?(index)
17:         cached = node_cache[:ALPHA][index]
18:         if cached
19:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
20:           @index = cached.interval.end
21:         end
22:         return cached
23:       end
24: 
25:       if has_terminal?('\G[a-zA-Z]', true, index)
26:         r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
27:         @index += 1
28:       else
29:         r0 = nil
30:       end
31: 
32:       node_cache[:ALPHA][start_index] = r0
33: 
34:       r0
35:     end
_nt_CFWS() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 304
304:     def _nt_CFWS
305:       start_index = index
306:       if node_cache[:CFWS].has_key?(index)
307:         cached = node_cache[:CFWS][index]
308:         if cached
309:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
310:           @index = cached.interval.end
311:         end
312:         return cached
313:       end
314: 
315:       i0, s0 = index, []
316:       s1, i1 = [], index
317:       loop do
318:         i2, s2 = index, []
319:         s3, i3 = [], index
320:         loop do
321:           r4 = _nt_FWS
322:           if r4
323:             s3 << r4
324:           else
325:             break
326:           end
327:         end
328:         r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
329:         s2 << r3
330:         if r3
331:           r5 = _nt_comment
332:           s2 << r5
333:         end
334:         if s2.last
335:           r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
336:           r2.extend(CFWS0)
337:         else
338:           @index = i2
339:           r2 = nil
340:         end
341:         if r2
342:           s1 << r2
343:         else
344:           break
345:         end
346:       end
347:       r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
348:       s0 << r1
349:       if r1
350:         r7 = _nt_FWS
351:         if r7
352:           r6 = r7
353:         else
354:           r6 = instantiate_node(SyntaxNode,input, index...index)
355:         end
356:         s0 << r6
357:       end
358:       if s0.last
359:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
360:         r0.extend(CFWS1)
361:       else
362:         @index = i0
363:         r0 = nil
364:       end
365: 
366:       node_cache[:CFWS][start_index] = r0
367: 
368:       r0
369:     end
_nt_CR() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 108
108:     def _nt_CR
109:       start_index = index
110:       if node_cache[:CR].has_key?(index)
111:         cached = node_cache[:CR][index]
112:         if cached
113:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
114:           @index = cached.interval.end
115:         end
116:         return cached
117:       end
118: 
119:       if has_terminal?("\r", false, index)
120:         r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
121:         @index += 1
122:       else
123:         terminal_parse_failure("\r")
124:         r0 = nil
125:       end
126: 
127:       node_cache[:CR][start_index] = r0
128: 
129:       r0
130:     end
_nt_CRLF() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 132
132:     def _nt_CRLF
133:       start_index = index
134:       if node_cache[:CRLF].has_key?(index)
135:         cached = node_cache[:CRLF][index]
136:         if cached
137:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
138:           @index = cached.interval.end
139:         end
140:         return cached
141:       end
142: 
143:       if has_terminal?("\r\n", false, index)
144:         r0 = instantiate_node(SyntaxNode,input, index...(index + 2))
145:         @index += 2
146:       else
147:         terminal_parse_failure("\r\n")
148:         r0 = nil
149:       end
150: 
151:       node_cache[:CRLF][start_index] = r0
152: 
153:       r0
154:     end
_nt_DIGIT() click to toggle source
    # File lib/mail/parsers/rfc2822.rb, line 37
37:     def _nt_DIGIT
38:       start_index = index
39:       if node_cache[:DIGIT].has_key?(index)
40:         cached = node_cache[:DIGIT][index]
41:         if cached
42:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
43:           @index = cached.interval.end
44:         end
45:         return cached
46:       end
47: 
48:       if has_terminal?('\G[0-9]', true, index)
49:         r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
50:         @index += 1
51:       else
52:         r0 = nil
53:       end
54: 
55:       node_cache[:DIGIT][start_index] = r0
56: 
57:       r0
58:     end
_nt_DQUOTE() click to toggle source
    # File lib/mail/parsers/rfc2822.rb, line 60
60:     def _nt_DQUOTE
61:       start_index = index
62:       if node_cache[:DQUOTE].has_key?(index)
63:         cached = node_cache[:DQUOTE][index]
64:         if cached
65:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
66:           @index = cached.interval.end
67:         end
68:         return cached
69:       end
70: 
71:       if has_terminal?('"', false, index)
72:         r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
73:         @index += 1
74:       else
75:         terminal_parse_failure('"')
76:         r0 = nil
77:       end
78: 
79:       node_cache[:DQUOTE][start_index] = r0
80: 
81:       r0
82:     end
_nt_FWS() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 193
193:     def _nt_FWS
194:       start_index = index
195:       if node_cache[:FWS].has_key?(index)
196:         cached = node_cache[:FWS][index]
197:         if cached
198:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
199:           @index = cached.interval.end
200:         end
201:         return cached
202:       end
203: 
204:       i0 = index
205:       i1, s1 = index, []
206:       s2, i2 = [], index
207:       loop do
208:         r3 = _nt_WSP
209:         if r3
210:           s2 << r3
211:         else
212:           break
213:         end
214:       end
215:       r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
216:       s1 << r2
217:       if r2
218:         r4 = _nt_CRLF
219:         s1 << r4
220:         if r4
221:           s5, i5 = [], index
222:           loop do
223:             r6 = _nt_WSP
224:             if r6
225:               s5 << r6
226:             else
227:               break
228:             end
229:           end
230:           if s5.empty?
231:             @index = i5
232:             r5 = nil
233:           else
234:             r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
235:           end
236:           s1 << r5
237:         end
238:       end
239:       if s1.last
240:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
241:         r1.extend(FWS0)
242:       else
243:         @index = i1
244:         r1 = nil
245:       end
246:       if r1
247:         r0 = r1
248:       else
249:         i7, s7 = index, []
250:         r8 = _nt_CRLF
251:         s7 << r8
252:         if r8
253:           s9, i9 = [], index
254:           loop do
255:             r10 = _nt_WSP
256:             if r10
257:               s9 << r10
258:             else
259:               break
260:             end
261:           end
262:           if s9.empty?
263:             @index = i9
264:             r9 = nil
265:           else
266:             r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
267:           end
268:           s7 << r9
269:         end
270:         if s7.last
271:           r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
272:           r7.extend(FWS1)
273:         else
274:           @index = i7
275:           r7 = nil
276:         end
277:         if r7
278:           r0 = r7
279:         else
280:           r11 = _nt_obs_FWS
281:           if r11
282:             r0 = r11
283:           else
284:             @index = i0
285:             r0 = nil
286:           end
287:         end
288:       end
289: 
290:       node_cache[:FWS][start_index] = r0
291: 
292:       r0
293:     end
_nt_LF() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 84
 84:     def _nt_LF
 85:       start_index = index
 86:       if node_cache[:LF].has_key?(index)
 87:         cached = node_cache[:LF][index]
 88:         if cached
 89:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
 90:           @index = cached.interval.end
 91:         end
 92:         return cached
 93:       end
 94: 
 95:       if has_terminal?("\n", false, index)
 96:         r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
 97:         @index += 1
 98:       else
 99:         terminal_parse_failure("\n")
100:         r0 = nil
101:       end
102: 
103:       node_cache[:LF][start_index] = r0
104: 
105:       r0
106:     end
_nt_NO_WS_CTL() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 371
371:     def _nt_NO_WS_CTL
372:       start_index = index
373:       if node_cache[:NO_WS_CTL].has_key?(index)
374:         cached = node_cache[:NO_WS_CTL][index]
375:         if cached
376:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
377:           @index = cached.interval.end
378:         end
379:         return cached
380:       end
381: 
382:       i0 = index
383:       if has_terminal?('\G[\x01-\x08]', true, index)
384:         r1 = true
385:         @index += 1
386:       else
387:         r1 = nil
388:       end
389:       if r1
390:         r0 = r1
391:       else
392:         if has_terminal?('\G[\x0B-\x0C]', true, index)
393:           r2 = true
394:           @index += 1
395:         else
396:           r2 = nil
397:         end
398:         if r2
399:           r0 = r2
400:         else
401:           if has_terminal?('\G[\x0E-\x1F]', true, index)
402:             r3 = true
403:             @index += 1
404:           else
405:             r3 = nil
406:           end
407:           if r3
408:             r0 = r3
409:           else
410:             if has_terminal?('\G[\x7f]', true, index)
411:               r4 = true
412:               @index += 1
413:             else
414:               r4 = nil
415:             end
416:             if r4
417:               r0 = r4
418:             else
419:               @index = i0
420:               r0 = nil
421:             end
422:           end
423:         end
424:       end
425: 
426:       node_cache[:NO_WS_CTL][start_index] = r0
427: 
428:       r0
429:     end
_nt_WSP() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 156
156:     def _nt_WSP
157:       start_index = index
158:       if node_cache[:WSP].has_key?(index)
159:         cached = node_cache[:WSP][index]
160:         if cached
161:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
162:           @index = cached.interval.end
163:         end
164:         return cached
165:       end
166: 
167:       if has_terminal?('\G[\x09\x20]', true, index)
168:         r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
169:         @index += 1
170:       else
171:         r0 = nil
172:       end
173: 
174:       node_cache[:WSP][start_index] = r0
175: 
176:       r0
177:     end
_nt_addr_spec() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2065
2065:     def _nt_addr_spec
2066:       start_index = index
2067:       if node_cache[:addr_spec].has_key?(index)
2068:         cached = node_cache[:addr_spec][index]
2069:         if cached
2070:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2071:           @index = cached.interval.end
2072:         end
2073:         return cached
2074:       end
2075: 
2076:       i0 = index
2077:       i1, s1 = index, []
2078:       r2 = _nt_local_part
2079:       s1 << r2
2080:       if r2
2081:         if has_terminal?("@", false, index)
2082:           r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2083:           @index += 1
2084:         else
2085:           terminal_parse_failure("@")
2086:           r3 = nil
2087:         end
2088:         s1 << r3
2089:         if r3
2090:           r4 = _nt_domain
2091:           s1 << r4
2092:         end
2093:       end
2094:       if s1.last
2095:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2096:         r1.extend(AddrSpec0)
2097:       else
2098:         @index = i1
2099:         r1 = nil
2100:       end
2101:       if r1
2102:         r0 = r1
2103:       else
2104:         r5 = _nt_local_part
2105:         if r5
2106:           r0 = r5
2107:         else
2108:           @index = i0
2109:           r0 = nil
2110:         end
2111:       end
2112: 
2113:       node_cache[:addr_spec][start_index] = r0
2114: 
2115:       r0
2116:     end
_nt_address() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2835
2835:     def _nt_address
2836:       start_index = index
2837:       if node_cache[:address].has_key?(index)
2838:         cached = node_cache[:address][index]
2839:         if cached
2840:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2841:           @index = cached.interval.end
2842:         end
2843:         return cached
2844:       end
2845: 
2846:       i0 = index
2847:       r1 = _nt_group
2848:       r1.extend(Address0)
2849:       if r1
2850:         r0 = r1
2851:       else
2852:         r2 = _nt_mailbox
2853:         r2.extend(Address1)
2854:         if r2
2855:           r0 = r2
2856:         else
2857:           @index = i0
2858:           r0 = nil
2859:         end
2860:       end
2861: 
2862:       node_cache[:address][start_index] = r0
2863: 
2864:       r0
2865:     end
_nt_address_list() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2883
2883:     def _nt_address_list
2884:       start_index = index
2885:       if node_cache[:address_list].has_key?(index)
2886:         cached = node_cache[:address_list][index]
2887:         if cached
2888:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2889:           @index = cached.interval.end
2890:         end
2891:         return cached
2892:       end
2893: 
2894:       i0, s0 = index, []
2895:       r2 = _nt_address
2896:       if r2
2897:         r1 = r2
2898:       else
2899:         r1 = instantiate_node(SyntaxNode,input, index...index)
2900:       end
2901:       s0 << r1
2902:       if r1
2903:         s3, i3 = [], index
2904:         loop do
2905:           i4, s4 = index, []
2906:           s5, i5 = [], index
2907:           loop do
2908:             r6 = _nt_FWS
2909:             if r6
2910:               s5 << r6
2911:             else
2912:               break
2913:             end
2914:           end
2915:           r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2916:           s4 << r5
2917:           if r5
2918:             if has_terminal?(",", false, index)
2919:               r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2920:               @index += 1
2921:             else
2922:               terminal_parse_failure(",")
2923:               r7 = nil
2924:             end
2925:             s4 << r7
2926:             if r7
2927:               s8, i8 = [], index
2928:               loop do
2929:                 r9 = _nt_FWS
2930:                 if r9
2931:                   s8 << r9
2932:                 else
2933:                   break
2934:                 end
2935:               end
2936:               r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
2937:               s4 << r8
2938:               if r8
2939:                 r11 = _nt_address
2940:                 if r11
2941:                   r10 = r11
2942:                 else
2943:                   r10 = instantiate_node(SyntaxNode,input, index...index)
2944:                 end
2945:                 s4 << r10
2946:               end
2947:             end
2948:           end
2949:           if s4.last
2950:             r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2951:             r4.extend(AddressList0)
2952:           else
2953:             @index = i4
2954:             r4 = nil
2955:           end
2956:           if r4
2957:             s3 << r4
2958:           else
2959:             break
2960:           end
2961:         end
2962:         r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2963:         s0 << r3
2964:       end
2965:       if s0.last
2966:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2967:         r0.extend(AddressList1)
2968:       else
2969:         @index = i0
2970:         r0 = nil
2971:       end
2972: 
2973:       node_cache[:address_list][start_index] = r0
2974: 
2975:       r0
2976:     end
_nt_angle_addr() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1978
1978:     def _nt_angle_addr
1979:       start_index = index
1980:       if node_cache[:angle_addr].has_key?(index)
1981:         cached = node_cache[:angle_addr][index]
1982:         if cached
1983:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1984:           @index = cached.interval.end
1985:         end
1986:         return cached
1987:       end
1988: 
1989:       i0 = index
1990:       i1, s1 = index, []
1991:       r3 = _nt_CFWS
1992:       if r3
1993:         r2 = r3
1994:       else
1995:         r2 = instantiate_node(SyntaxNode,input, index...index)
1996:       end
1997:       s1 << r2
1998:       if r2
1999:         if has_terminal?("<", false, index)
2000:           r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2001:           @index += 1
2002:         else
2003:           terminal_parse_failure("<")
2004:           r4 = nil
2005:         end
2006:         s1 << r4
2007:         if r4
2008:           r5 = _nt_addr_spec
2009:           s1 << r5
2010:           if r5
2011:             if has_terminal?(">", false, index)
2012:               r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2013:               @index += 1
2014:             else
2015:               terminal_parse_failure(">")
2016:               r6 = nil
2017:             end
2018:             s1 << r6
2019:             if r6
2020:               r8 = _nt_CFWS
2021:               if r8
2022:                 r7 = r8
2023:               else
2024:                 r7 = instantiate_node(SyntaxNode,input, index...index)
2025:               end
2026:               s1 << r7
2027:             end
2028:           end
2029:         end
2030:       end
2031:       if s1.last
2032:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2033:         r1.extend(AngleAddr0)
2034:       else
2035:         @index = i1
2036:         r1 = nil
2037:       end
2038:       if r1
2039:         r0 = r1
2040:       else
2041:         r9 = _nt_obs_angle_addr
2042:         if r9
2043:           r0 = r9
2044:         else
2045:           @index = i0
2046:           r0 = nil
2047:         end
2048:       end
2049: 
2050:       node_cache[:angle_addr][start_index] = r0
2051: 
2052:       r0
2053:     end
_nt_atext() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 770
 770:     def _nt_atext
 771:       start_index = index
 772:       if node_cache[:atext].has_key?(index)
 773:         cached = node_cache[:atext][index]
 774:         if cached
 775:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
 776:           @index = cached.interval.end
 777:         end
 778:         return cached
 779:       end
 780: 
 781:       i0 = index
 782:       r1 = _nt_ALPHA
 783:       if r1
 784:         r0 = r1
 785:       else
 786:         r2 = _nt_DIGIT
 787:         if r2
 788:           r0 = r2
 789:         else
 790:           if has_terminal?("!", false, index)
 791:             r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
 792:             @index += 1
 793:           else
 794:             terminal_parse_failure("!")
 795:             r3 = nil
 796:           end
 797:           if r3
 798:             r0 = r3
 799:           else
 800:             if has_terminal?("#", false, index)
 801:               r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
 802:               @index += 1
 803:             else
 804:               terminal_parse_failure("#")
 805:               r4 = nil
 806:             end
 807:             if r4
 808:               r0 = r4
 809:             else
 810:               if has_terminal?("$", false, index)
 811:                 r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
 812:                 @index += 1
 813:               else
 814:                 terminal_parse_failure("$")
 815:                 r5 = nil
 816:               end
 817:               if r5
 818:                 r0 = r5
 819:               else
 820:                 if has_terminal?("%", false, index)
 821:                   r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
 822:                   @index += 1
 823:                 else
 824:                   terminal_parse_failure("%")
 825:                   r6 = nil
 826:                 end
 827:                 if r6
 828:                   r0 = r6
 829:                 else
 830:                   if has_terminal?("&", false, index)
 831:                     r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
 832:                     @index += 1
 833:                   else
 834:                     terminal_parse_failure("&")
 835:                     r7 = nil
 836:                   end
 837:                   if r7
 838:                     r0 = r7
 839:                   else
 840:                     if has_terminal?("'", false, index)
 841:                       r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
 842:                       @index += 1
 843:                     else
 844:                       terminal_parse_failure("'")
 845:                       r8 = nil
 846:                     end
 847:                     if r8
 848:                       r0 = r8
 849:                     else
 850:                       if has_terminal?("*", false, index)
 851:                         r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
 852:                         @index += 1
 853:                       else
 854:                         terminal_parse_failure("*")
 855:                         r9 = nil
 856:                       end
 857:                       if r9
 858:                         r0 = r9
 859:                       else
 860:                         if has_terminal?("+", false, index)
 861:                           r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
 862:                           @index += 1
 863:                         else
 864:                           terminal_parse_failure("+")
 865:                           r10 = nil
 866:                         end
 867:                         if r10
 868:                           r0 = r10
 869:                         else
 870:                           if has_terminal?("-", false, index)
 871:                             r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
 872:                             @index += 1
 873:                           else
 874:                             terminal_parse_failure("-")
 875:                             r11 = nil
 876:                           end
 877:                           if r11
 878:                             r0 = r11
 879:                           else
 880:                             if has_terminal?("/", false, index)
 881:                               r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
 882:                               @index += 1
 883:                             else
 884:                               terminal_parse_failure("/")
 885:                               r12 = nil
 886:                             end
 887:                             if r12
 888:                               r0 = r12
 889:                             else
 890:                               if has_terminal?("=", false, index)
 891:                                 r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
 892:                                 @index += 1
 893:                               else
 894:                                 terminal_parse_failure("=")
 895:                                 r13 = nil
 896:                               end
 897:                               if r13
 898:                                 r0 = r13
 899:                               else
 900:                                 if has_terminal?("?", false, index)
 901:                                   r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
 902:                                   @index += 1
 903:                                 else
 904:                                   terminal_parse_failure("?")
 905:                                   r14 = nil
 906:                                 end
 907:                                 if r14
 908:                                   r0 = r14
 909:                                 else
 910:                                   if has_terminal?("^", false, index)
 911:                                     r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
 912:                                     @index += 1
 913:                                   else
 914:                                     terminal_parse_failure("^")
 915:                                     r15 = nil
 916:                                   end
 917:                                   if r15
 918:                                     r0 = r15
 919:                                   else
 920:                                     if has_terminal?("_", false, index)
 921:                                       r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
 922:                                       @index += 1
 923:                                     else
 924:                                       terminal_parse_failure("_")
 925:                                       r16 = nil
 926:                                     end
 927:                                     if r16
 928:                                       r0 = r16
 929:                                     else
 930:                                       if has_terminal?("`", false, index)
 931:                                         r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
 932:                                         @index += 1
 933:                                       else
 934:                                         terminal_parse_failure("`")
 935:                                         r17 = nil
 936:                                       end
 937:                                       if r17
 938:                                         r0 = r17
 939:                                       else
 940:                                         if has_terminal?("{", false, index)
 941:                                           r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
 942:                                           @index += 1
 943:                                         else
 944:                                           terminal_parse_failure("{")
 945:                                           r18 = nil
 946:                                         end
 947:                                         if r18
 948:                                           r0 = r18
 949:                                         else
 950:                                           if has_terminal?("|", false, index)
 951:                                             r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
 952:                                             @index += 1
 953:                                           else
 954:                                             terminal_parse_failure("|")
 955:                                             r19 = nil
 956:                                           end
 957:                                           if r19
 958:                                             r0 = r19
 959:                                           else
 960:                                             if has_terminal?("}", false, index)
 961:                                               r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
 962:                                               @index += 1
 963:                                             else
 964:                                               terminal_parse_failure("}")
 965:                                               r20 = nil
 966:                                             end
 967:                                             if r20
 968:                                               r0 = r20
 969:                                             else
 970:                                               if has_terminal?("~", false, index)
 971:                                                 r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
 972:                                                 @index += 1
 973:                                               else
 974:                                                 terminal_parse_failure("~")
 975:                                                 r21 = nil
 976:                                               end
 977:                                               if r21
 978:                                                 r0 = r21
 979:                                               else
 980:                                                 @index = i0
 981:                                                 r0 = nil
 982:                                               end
 983:                                             end
 984:                                           end
 985:                                         end
 986:                                       end
 987:                                     end
 988:                                   end
 989:                                 end
 990:                               end
 991:                             end
 992:                           end
 993:                         end
 994:                       end
 995:                     end
 996:                   end
 997:                 end
 998:               end
 999:             end
1000:           end
1001:         end
1002:       end
1003: 
1004:       node_cache[:atext][start_index] = r0
1005: 
1006:       r0
1007:     end
_nt_atom() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1062
1062:     def _nt_atom
1063:       start_index = index
1064:       if node_cache[:atom].has_key?(index)
1065:         cached = node_cache[:atom][index]
1066:         if cached
1067:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1068:           @index = cached.interval.end
1069:         end
1070:         return cached
1071:       end
1072: 
1073:       i0, s0 = index, []
1074:       r2 = _nt_CFWS
1075:       if r2
1076:         r1 = r2
1077:       else
1078:         r1 = instantiate_node(SyntaxNode,input, index...index)
1079:       end
1080:       s0 << r1
1081:       if r1
1082:         s3, i3 = [], index
1083:         loop do
1084:           r4 = _nt_atext
1085:           if r4
1086:             s3 << r4
1087:           else
1088:             break
1089:           end
1090:         end
1091:         if s3.empty?
1092:           @index = i3
1093:           r3 = nil
1094:         else
1095:           r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1096:         end
1097:         s0 << r3
1098:         if r3
1099:           r6 = _nt_CFWS
1100:           if r6
1101:             r5 = r6
1102:           else
1103:             r5 = instantiate_node(SyntaxNode,input, index...index)
1104:           end
1105:           s0 << r5
1106:         end
1107:       end
1108:       if s0.last
1109:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1110:         r0.extend(Atom0)
1111:       else
1112:         @index = i0
1113:         r0 = nil
1114:       end
1115: 
1116:       node_cache[:atom][start_index] = r0
1117: 
1118:       r0
1119:     end
_nt_ccontent() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 643
643:     def _nt_ccontent
644:       start_index = index
645:       if node_cache[:ccontent].has_key?(index)
646:         cached = node_cache[:ccontent][index]
647:         if cached
648:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
649:           @index = cached.interval.end
650:         end
651:         return cached
652:       end
653: 
654:       i0 = index
655:       r1 = _nt_ctext
656:       if r1
657:         r0 = r1
658:       else
659:         r2 = _nt_quoted_pair
660:         if r2
661:           r0 = r2
662:         else
663:           r3 = _nt_comment
664:           if r3
665:             r0 = r3
666:           else
667:             @index = i0
668:             r0 = nil
669:           end
670:         end
671:       end
672: 
673:       node_cache[:ccontent][start_index] = r0
674: 
675:       r0
676:     end
_nt_comment() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 687
687:     def _nt_comment
688:       start_index = index
689:       if node_cache[:comment].has_key?(index)
690:         cached = node_cache[:comment][index]
691:         if cached
692:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
693:           @index = cached.interval.end
694:         end
695:         return cached
696:       end
697: 
698:       i0, s0 = index, []
699:       if has_terminal?("(", false, index)
700:         r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
701:         @index += 1
702:       else
703:         terminal_parse_failure("(")
704:         r1 = nil
705:       end
706:       s0 << r1
707:       if r1
708:         s2, i2 = [], index
709:         loop do
710:           i3, s3 = index, []
711:           r5 = _nt_FWS
712:           if r5
713:             r4 = r5
714:           else
715:             r4 = instantiate_node(SyntaxNode,input, index...index)
716:           end
717:           s3 << r4
718:           if r4
719:             r6 = _nt_ccontent
720:             s3 << r6
721:           end
722:           if s3.last
723:             r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
724:             r3.extend(Comment0)
725:           else
726:             @index = i3
727:             r3 = nil
728:           end
729:           if r3
730:             s2 << r3
731:           else
732:             break
733:           end
734:         end
735:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
736:         s0 << r2
737:         if r2
738:           r8 = _nt_FWS
739:           if r8
740:             r7 = r8
741:           else
742:             r7 = instantiate_node(SyntaxNode,input, index...index)
743:           end
744:           s0 << r7
745:           if r7
746:             if has_terminal?(")", false, index)
747:               r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
748:               @index += 1
749:             else
750:               terminal_parse_failure(")")
751:               r9 = nil
752:             end
753:             s0 << r9
754:           end
755:         end
756:       end
757:       if s0.last
758:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
759:         r0.extend(Comment1)
760:       else
761:         @index = i0
762:         r0 = nil
763:       end
764: 
765:       node_cache[:comment][start_index] = r0
766: 
767:       r0
768:     end
_nt_ctext() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 588
588:     def _nt_ctext
589:       start_index = index
590:       if node_cache[:ctext].has_key?(index)
591:         cached = node_cache[:ctext][index]
592:         if cached
593:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
594:           @index = cached.interval.end
595:         end
596:         return cached
597:       end
598: 
599:       i0 = index
600:       r1 = _nt_NO_WS_CTL
601:       if r1
602:         r0 = r1
603:       else
604:         if has_terminal?('\G[\x21-\x27]', true, index)
605:           r2 = true
606:           @index += 1
607:         else
608:           r2 = nil
609:         end
610:         if r2
611:           r0 = r2
612:         else
613:           if has_terminal?('\G[\x2a-\x5b]', true, index)
614:             r3 = true
615:             @index += 1
616:           else
617:             r3 = nil
618:           end
619:           if r3
620:             r0 = r3
621:           else
622:             if has_terminal?('\G[\x5d-\x7e]', true, index)
623:               r4 = true
624:               @index += 1
625:             else
626:               r4 = nil
627:             end
628:             if r4
629:               r0 = r4
630:             else
631:               @index = i0
632:               r0 = nil
633:             end
634:           end
635:         end
636:       end
637: 
638:       node_cache[:ctext][start_index] = r0
639: 
640:       r0
641:     end
_nt_date() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3237
3237:     def _nt_date
3238:       start_index = index
3239:       if node_cache[:date].has_key?(index)
3240:         cached = node_cache[:date][index]
3241:         if cached
3242:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3243:           @index = cached.interval.end
3244:         end
3245:         return cached
3246:       end
3247: 
3248:       i0, s0 = index, []
3249:       r1 = _nt_day
3250:       s0 << r1
3251:       if r1
3252:         r2 = _nt_month
3253:         s0 << r2
3254:         if r2
3255:           r3 = _nt_year
3256:           s0 << r3
3257:         end
3258:       end
3259:       if s0.last
3260:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3261:         r0.extend(Date0)
3262:       else
3263:         @index = i0
3264:         r0 = nil
3265:       end
3266: 
3267:       node_cache[:date][start_index] = r0
3268: 
3269:       r0
3270:     end
_nt_date_time() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3000
3000:     def _nt_date_time
3001:       start_index = index
3002:       if node_cache[:date_time].has_key?(index)
3003:         cached = node_cache[:date_time][index]
3004:         if cached
3005:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3006:           @index = cached.interval.end
3007:         end
3008:         return cached
3009:       end
3010: 
3011:       i0, s0 = index, []
3012:       i2, s2 = index, []
3013:       r3 = _nt_day_of_week
3014:       s2 << r3
3015:       if r3
3016:         if has_terminal?(",", false, index)
3017:           r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3018:           @index += 1
3019:         else
3020:           terminal_parse_failure(",")
3021:           r4 = nil
3022:         end
3023:         s2 << r4
3024:       end
3025:       if s2.last
3026:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3027:         r2.extend(DateTime0)
3028:       else
3029:         @index = i2
3030:         r2 = nil
3031:       end
3032:       if r2
3033:         r1 = r2
3034:       else
3035:         r1 = instantiate_node(SyntaxNode,input, index...index)
3036:       end
3037:       s0 << r1
3038:       if r1
3039:         r5 = _nt_date
3040:         s0 << r5
3041:         if r5
3042:           r6 = _nt_FWS
3043:           s0 << r6
3044:           if r6
3045:             r7 = _nt_time
3046:             s0 << r7
3047:             if r7
3048:               r9 = _nt_CFWS
3049:               if r9
3050:                 r8 = r9
3051:               else
3052:                 r8 = instantiate_node(SyntaxNode,input, index...index)
3053:               end
3054:               s0 << r8
3055:             end
3056:           end
3057:         end
3058:       end
3059:       if s0.last
3060:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3061:         r0.extend(DateTime1)
3062:       else
3063:         @index = i0
3064:         r0 = nil
3065:       end
3066: 
3067:       node_cache[:date_time][start_index] = r0
3068: 
3069:       r0
3070:     end
_nt_day() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3561
3561:     def _nt_day
3562:       start_index = index
3563:       if node_cache[:day].has_key?(index)
3564:         cached = node_cache[:day][index]
3565:         if cached
3566:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3567:           @index = cached.interval.end
3568:         end
3569:         return cached
3570:       end
3571: 
3572:       i0 = index
3573:       i1, s1 = index, []
3574:       r3 = _nt_FWS
3575:       if r3
3576:         r2 = r3
3577:       else
3578:         r2 = instantiate_node(SyntaxNode,input, index...index)
3579:       end
3580:       s1 << r2
3581:       if r2
3582:         r4 = _nt_DIGIT
3583:         s1 << r4
3584:         if r4
3585:           r6 = _nt_DIGIT
3586:           if r6
3587:             r5 = r6
3588:           else
3589:             r5 = instantiate_node(SyntaxNode,input, index...index)
3590:           end
3591:           s1 << r5
3592:         end
3593:       end
3594:       if s1.last
3595:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3596:         r1.extend(Day0)
3597:       else
3598:         @index = i1
3599:         r1 = nil
3600:       end
3601:       if r1
3602:         r0 = r1
3603:       else
3604:         r7 = _nt_obs_day
3605:         if r7
3606:           r0 = r7
3607:         else
3608:           @index = i0
3609:           r0 = nil
3610:         end
3611:       end
3612: 
3613:       node_cache[:day][start_index] = r0
3614: 
3615:       r0
3616:     end
_nt_day_name() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3126
3126:     def _nt_day_name
3127:       start_index = index
3128:       if node_cache[:day_name].has_key?(index)
3129:         cached = node_cache[:day_name][index]
3130:         if cached
3131:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3132:           @index = cached.interval.end
3133:         end
3134:         return cached
3135:       end
3136: 
3137:       i0 = index
3138:       if has_terminal?("Mon", false, index)
3139:         r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
3140:         @index += 3
3141:       else
3142:         terminal_parse_failure("Mon")
3143:         r1 = nil
3144:       end
3145:       if r1
3146:         r0 = r1
3147:       else
3148:         if has_terminal?("Tue", false, index)
3149:           r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
3150:           @index += 3
3151:         else
3152:           terminal_parse_failure("Tue")
3153:           r2 = nil
3154:         end
3155:         if r2
3156:           r0 = r2
3157:         else
3158:           if has_terminal?("Wed", false, index)
3159:             r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
3160:             @index += 3
3161:           else
3162:             terminal_parse_failure("Wed")
3163:             r3 = nil
3164:           end
3165:           if r3
3166:             r0 = r3
3167:           else
3168:             if has_terminal?("Thu", false, index)
3169:               r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
3170:               @index += 3
3171:             else
3172:               terminal_parse_failure("Thu")
3173:               r4 = nil
3174:             end
3175:             if r4
3176:               r0 = r4
3177:             else
3178:               if has_terminal?("Fri", false, index)
3179:                 r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
3180:                 @index += 3
3181:               else
3182:                 terminal_parse_failure("Fri")
3183:                 r5 = nil
3184:               end
3185:               if r5
3186:                 r0 = r5
3187:               else
3188:                 if has_terminal?("Sat", false, index)
3189:                   r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
3190:                   @index += 3
3191:                 else
3192:                   terminal_parse_failure("Sat")
3193:                   r6 = nil
3194:                 end
3195:                 if r6
3196:                   r0 = r6
3197:                 else
3198:                   if has_terminal?("Sun", false, index)
3199:                     r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
3200:                     @index += 3
3201:                   else
3202:                     terminal_parse_failure("Sun")
3203:                     r7 = nil
3204:                   end
3205:                   if r7
3206:                     r0 = r7
3207:                   else
3208:                     @index = i0
3209:                     r0 = nil
3210:                   end
3211:                 end
3212:               end
3213:             end
3214:           end
3215:         end
3216:       end
3217: 
3218:       node_cache[:day_name][start_index] = r0
3219: 
3220:       r0
3221:     end
_nt_day_of_week() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3078
3078:     def _nt_day_of_week
3079:       start_index = index
3080:       if node_cache[:day_of_week].has_key?(index)
3081:         cached = node_cache[:day_of_week][index]
3082:         if cached
3083:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3084:           @index = cached.interval.end
3085:         end
3086:         return cached
3087:       end
3088: 
3089:       i0 = index
3090:       i1, s1 = index, []
3091:       r3 = _nt_FWS
3092:       if r3
3093:         r2 = r3
3094:       else
3095:         r2 = instantiate_node(SyntaxNode,input, index...index)
3096:       end
3097:       s1 << r2
3098:       if r2
3099:         r4 = _nt_day_name
3100:         s1 << r4
3101:       end
3102:       if s1.last
3103:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3104:         r1.extend(DayOfWeek0)
3105:       else
3106:         @index = i1
3107:         r1 = nil
3108:       end
3109:       if r1
3110:         r0 = r1
3111:       else
3112:         r5 = _nt_obs_day_of_week
3113:         if r5
3114:           r0 = r5
3115:         else
3116:           @index = i0
3117:           r0 = nil
3118:         end
3119:       end
3120: 
3121:       node_cache[:day_of_week][start_index] = r0
3122: 
3123:       r0
3124:     end
_nt_dcontent() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1896
1896:     def _nt_dcontent
1897:       start_index = index
1898:       if node_cache[:dcontent].has_key?(index)
1899:         cached = node_cache[:dcontent][index]
1900:         if cached
1901:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1902:           @index = cached.interval.end
1903:         end
1904:         return cached
1905:       end
1906: 
1907:       i0 = index
1908:       r1 = _nt_dtext
1909:       if r1
1910:         r0 = r1
1911:       else
1912:         r2 = _nt_quoted_pair
1913:         if r2
1914:           r0 = r2
1915:         else
1916:           @index = i0
1917:           r0 = nil
1918:         end
1919:       end
1920: 
1921:       node_cache[:dcontent][start_index] = r0
1922: 
1923:       r0
1924:     end
_nt_display_name() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2611
2611:     def _nt_display_name
2612:       start_index = index
2613:       if node_cache[:display_name].has_key?(index)
2614:         cached = node_cache[:display_name][index]
2615:         if cached
2616:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2617:           @index = cached.interval.end
2618:         end
2619:         return cached
2620:       end
2621: 
2622:       r0 = _nt_phrase
2623: 
2624:       node_cache[:display_name][start_index] = r0
2625: 
2626:       r0
2627:     end
_nt_domain() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2153
2153:     def _nt_domain
2154:       start_index = index
2155:       if node_cache[:domain].has_key?(index)
2156:         cached = node_cache[:domain][index]
2157:         if cached
2158:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2159:           @index = cached.interval.end
2160:         end
2161:         return cached
2162:       end
2163: 
2164:       i0 = index
2165:       r1 = _nt_dot_atom
2166:       if r1
2167:         r0 = r1
2168:       else
2169:         r2 = _nt_domain_literal
2170:         if r2
2171:           r0 = r2
2172:         else
2173:           r3 = _nt_obs_domain
2174:           if r3
2175:             r0 = r3
2176:           else
2177:             @index = i0
2178:             r0 = nil
2179:           end
2180:         end
2181:       end
2182: 
2183:       node_cache[:domain][start_index] = r0
2184: 
2185:       r0
2186:     end
_nt_domain_literal() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1795
1795:     def _nt_domain_literal
1796:       start_index = index
1797:       if node_cache[:domain_literal].has_key?(index)
1798:         cached = node_cache[:domain_literal][index]
1799:         if cached
1800:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1801:           @index = cached.interval.end
1802:         end
1803:         return cached
1804:       end
1805: 
1806:       i0, s0 = index, []
1807:       r2 = _nt_CFWS
1808:       if r2
1809:         r1 = r2
1810:       else
1811:         r1 = instantiate_node(SyntaxNode,input, index...index)
1812:       end
1813:       s0 << r1
1814:       if r1
1815:         if has_terminal?("[", false, index)
1816:           r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1817:           @index += 1
1818:         else
1819:           terminal_parse_failure("[")
1820:           r3 = nil
1821:         end
1822:         s0 << r3
1823:         if r3
1824:           s4, i4 = [], index
1825:           loop do
1826:             i5, s5 = index, []
1827:             r7 = _nt_FWS
1828:             if r7
1829:               r6 = r7
1830:             else
1831:               r6 = instantiate_node(SyntaxNode,input, index...index)
1832:             end
1833:             s5 << r6
1834:             if r6
1835:               r8 = _nt_dcontent
1836:               s5 << r8
1837:             end
1838:             if s5.last
1839:               r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1840:               r5.extend(DomainLiteral0)
1841:             else
1842:               @index = i5
1843:               r5 = nil
1844:             end
1845:             if r5
1846:               s4 << r5
1847:             else
1848:               break
1849:             end
1850:           end
1851:           r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1852:           s0 << r4
1853:           if r4
1854:             r10 = _nt_FWS
1855:             if r10
1856:               r9 = r10
1857:             else
1858:               r9 = instantiate_node(SyntaxNode,input, index...index)
1859:             end
1860:             s0 << r9
1861:             if r9
1862:               if has_terminal?("]", false, index)
1863:                 r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
1864:                 @index += 1
1865:               else
1866:                 terminal_parse_failure("]")
1867:                 r11 = nil
1868:               end
1869:               s0 << r11
1870:               if r11
1871:                 r13 = _nt_CFWS
1872:                 if r13
1873:                   r12 = r13
1874:                 else
1875:                   r12 = instantiate_node(SyntaxNode,input, index...index)
1876:                 end
1877:                 s0 << r12
1878:               end
1879:             end
1880:           end
1881:         end
1882:       end
1883:       if s0.last
1884:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1885:         r0.extend(DomainLiteral1)
1886:       else
1887:         @index = i0
1888:         r0 = nil
1889:       end
1890: 
1891:       node_cache[:domain_literal][start_index] = r0
1892: 
1893:       r0
1894:     end
_nt_domain_text() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1402
1402:     def _nt_domain_text
1403:       start_index = index
1404:       if node_cache[:domain_text].has_key?(index)
1405:         cached = node_cache[:domain_text][index]
1406:         if cached
1407:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1408:           @index = cached.interval.end
1409:         end
1410:         return cached
1411:       end
1412: 
1413:       i0 = index
1414:       i1, s1 = index, []
1415:       r2 = _nt_DQUOTE
1416:       s1 << r2
1417:       if r2
1418:         s3, i3 = [], index
1419:         loop do
1420:           i4, s4 = index, []
1421:           r6 = _nt_FWS
1422:           if r6
1423:             r5 = r6
1424:           else
1425:             r5 = instantiate_node(SyntaxNode,input, index...index)
1426:           end
1427:           s4 << r5
1428:           if r5
1429:             r7 = _nt_quoted_domain
1430:             s4 << r7
1431:           end
1432:           if s4.last
1433:             r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1434:             r4.extend(DomainText0)
1435:           else
1436:             @index = i4
1437:             r4 = nil
1438:           end
1439:           if r4
1440:             s3 << r4
1441:           else
1442:             break
1443:           end
1444:         end
1445:         if s3.empty?
1446:           @index = i3
1447:           r3 = nil
1448:         else
1449:           r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1450:         end
1451:         s1 << r3
1452:         if r3
1453:           r9 = _nt_FWS
1454:           if r9
1455:             r8 = r9
1456:           else
1457:             r8 = instantiate_node(SyntaxNode,input, index...index)
1458:           end
1459:           s1 << r8
1460:           if r8
1461:             r10 = _nt_DQUOTE
1462:             s1 << r10
1463:           end
1464:         end
1465:       end
1466:       if s1.last
1467:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1468:         r1.extend(DomainText1)
1469:       else
1470:         @index = i1
1471:         r1 = nil
1472:       end
1473:       if r1
1474:         r0 = r1
1475:       else
1476:         s11, i11 = [], index
1477:         loop do
1478:           r12 = _nt_atext
1479:           if r12
1480:             s11 << r12
1481:           else
1482:             break
1483:           end
1484:         end
1485:         if s11.empty?
1486:           @index = i11
1487:           r11 = nil
1488:         else
1489:           r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
1490:         end
1491:         if r11
1492:           r0 = r11
1493:         else
1494:           @index = i0
1495:           r0 = nil
1496:         end
1497:       end
1498: 
1499:       node_cache[:domain_text][start_index] = r0
1500: 
1501:       r0
1502:     end
_nt_dot_atom() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1128
1128:     def _nt_dot_atom
1129:       start_index = index
1130:       if node_cache[:dot_atom].has_key?(index)
1131:         cached = node_cache[:dot_atom][index]
1132:         if cached
1133:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1134:           @index = cached.interval.end
1135:         end
1136:         return cached
1137:       end
1138: 
1139:       i0, s0 = index, []
1140:       r2 = _nt_CFWS
1141:       if r2
1142:         r1 = r2
1143:       else
1144:         r1 = instantiate_node(SyntaxNode,input, index...index)
1145:       end
1146:       s0 << r1
1147:       if r1
1148:         r3 = _nt_dot_atom_text
1149:         s0 << r3
1150:         if r3
1151:           r5 = _nt_CFWS
1152:           if r5
1153:             r4 = r5
1154:           else
1155:             r4 = instantiate_node(SyntaxNode,input, index...index)
1156:           end
1157:           s0 << r4
1158:         end
1159:       end
1160:       if s0.last
1161:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1162:         r0.extend(DotAtom0)
1163:       else
1164:         @index = i0
1165:         r0 = nil
1166:       end
1167: 
1168:       node_cache[:dot_atom][start_index] = r0
1169: 
1170:       r0
1171:     end
_nt_dot_atom_text() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1264
1264:     def _nt_dot_atom_text
1265:       start_index = index
1266:       if node_cache[:dot_atom_text].has_key?(index)
1267:         cached = node_cache[:dot_atom_text][index]
1268:         if cached
1269:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1270:           @index = cached.interval.end
1271:         end
1272:         return cached
1273:       end
1274: 
1275:       s0, i0 = [], index
1276:       loop do
1277:         i1, s1 = index, []
1278:         r2 = _nt_domain_text
1279:         s1 << r2
1280:         if r2
1281:           if has_terminal?(".", false, index)
1282:             r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1283:             @index += 1
1284:           else
1285:             terminal_parse_failure(".")
1286:             r4 = nil
1287:           end
1288:           if r4
1289:             r3 = r4
1290:           else
1291:             r3 = instantiate_node(SyntaxNode,input, index...index)
1292:           end
1293:           s1 << r3
1294:         end
1295:         if s1.last
1296:           r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1297:           r1.extend(DotAtomText0)
1298:         else
1299:           @index = i1
1300:           r1 = nil
1301:         end
1302:         if r1
1303:           s0 << r1
1304:         else
1305:           break
1306:         end
1307:       end
1308:       if s0.empty?
1309:         @index = i0
1310:         r0 = nil
1311:       else
1312:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1313:       end
1314: 
1315:       node_cache[:dot_atom_text][start_index] = r0
1316: 
1317:       r0
1318:     end
_nt_dtext() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1926
1926:     def _nt_dtext
1927:       start_index = index
1928:       if node_cache[:dtext].has_key?(index)
1929:         cached = node_cache[:dtext][index]
1930:         if cached
1931:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1932:           @index = cached.interval.end
1933:         end
1934:         return cached
1935:       end
1936: 
1937:       i0 = index
1938:       r1 = _nt_NO_WS_CTL
1939:       if r1
1940:         r0 = r1
1941:       else
1942:         if has_terminal?('\G[\x21-\x5a]', true, index)
1943:           r2 = true
1944:           @index += 1
1945:         else
1946:           r2 = nil
1947:         end
1948:         if r2
1949:           r0 = r2
1950:         else
1951:           if has_terminal?('\G[\x5e-\x7e]', true, index)
1952:             r3 = true
1953:             @index += 1
1954:           else
1955:             r3 = nil
1956:           end
1957:           if r3
1958:             r0 = r3
1959:           else
1960:             @index = i0
1961:             r0 = nil
1962:           end
1963:         end
1964:       end
1965: 
1966:       node_cache[:dtext][start_index] = r0
1967: 
1968:       r0
1969:     end
_nt_group() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2199
2199:     def _nt_group
2200:       start_index = index
2201:       if node_cache[:group].has_key?(index)
2202:         cached = node_cache[:group][index]
2203:         if cached
2204:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2205:           @index = cached.interval.end
2206:         end
2207:         return cached
2208:       end
2209: 
2210:       i0, s0 = index, []
2211:       r1 = _nt_display_name
2212:       s0 << r1
2213:       if r1
2214:         if has_terminal?(":", false, index)
2215:           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2216:           @index += 1
2217:         else
2218:           terminal_parse_failure(":")
2219:           r2 = nil
2220:         end
2221:         s0 << r2
2222:         if r2
2223:           i4 = index
2224:           r5 = _nt_mailbox_list_group
2225:           if r5
2226:             r4 = r5
2227:           else
2228:             r6 = _nt_CFWS
2229:             if r6
2230:               r4 = r6
2231:             else
2232:               @index = i4
2233:               r4 = nil
2234:             end
2235:           end
2236:           if r4
2237:             r3 = r4
2238:           else
2239:             r3 = instantiate_node(SyntaxNode,input, index...index)
2240:           end
2241:           s0 << r3
2242:           if r3
2243:             if has_terminal?(";", false, index)
2244:               r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
2245:               @index += 1
2246:             else
2247:               terminal_parse_failure(";")
2248:               r7 = nil
2249:             end
2250:             s0 << r7
2251:             if r7
2252:               r9 = _nt_CFWS
2253:               if r9
2254:                 r8 = r9
2255:               else
2256:                 r8 = instantiate_node(SyntaxNode,input, index...index)
2257:               end
2258:               s0 << r8
2259:             end
2260:           end
2261:         end
2262:       end
2263:       if s0.last
2264:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2265:         r0.extend(Group0)
2266:       else
2267:         @index = i0
2268:         r0 = nil
2269:       end
2270: 
2271:       node_cache[:group][start_index] = r0
2272: 
2273:       r0
2274:     end
_nt_hour() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3763
3763:     def _nt_hour
3764:       start_index = index
3765:       if node_cache[:hour].has_key?(index)
3766:         cached = node_cache[:hour][index]
3767:         if cached
3768:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3769:           @index = cached.interval.end
3770:         end
3771:         return cached
3772:       end
3773: 
3774:       i0 = index
3775:       i1, s1 = index, []
3776:       r2 = _nt_DIGIT
3777:       s1 << r2
3778:       if r2
3779:         r3 = _nt_DIGIT
3780:         s1 << r3
3781:       end
3782:       if s1.last
3783:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3784:         r1.extend(Hour0)
3785:       else
3786:         @index = i1
3787:         r1 = nil
3788:       end
3789:       if r1
3790:         r0 = r1
3791:       else
3792:         r4 = _nt_obs_hour
3793:         if r4
3794:           r0 = r4
3795:         else
3796:           @index = i0
3797:           r0 = nil
3798:         end
3799:       end
3800: 
3801:       node_cache[:hour][start_index] = r0
3802: 
3803:       r0
3804:     end
_nt_id_left() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4687
4687:     def _nt_id_left
4688:       start_index = index
4689:       if node_cache[:id_left].has_key?(index)
4690:         cached = node_cache[:id_left][index]
4691:         if cached
4692:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4693:           @index = cached.interval.end
4694:         end
4695:         return cached
4696:       end
4697: 
4698:       i0 = index
4699:       r1 = _nt_message_id_text
4700:       if r1
4701:         r0 = r1
4702:       else
4703:         r2 = _nt_no_fold_quote
4704:         if r2
4705:           r0 = r2
4706:         else
4707:           r3 = _nt_obs_id_left
4708:           if r3
4709:             r0 = r3
4710:           else
4711:             @index = i0
4712:             r0 = nil
4713:           end
4714:         end
4715:       end
4716: 
4717:       node_cache[:id_left][start_index] = r0
4718: 
4719:       r0
4720:     end
_nt_id_right() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4722
4722:     def _nt_id_right
4723:       start_index = index
4724:       if node_cache[:id_right].has_key?(index)
4725:         cached = node_cache[:id_right][index]
4726:         if cached
4727:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4728:           @index = cached.interval.end
4729:         end
4730:         return cached
4731:       end
4732: 
4733:       i0 = index
4734:       r1 = _nt_msg_id_dot_atom_text
4735:       if r1
4736:         r0 = r1
4737:       else
4738:         r2 = _nt_no_fold_literal
4739:         if r2
4740:           r0 = r2
4741:         else
4742:           r3 = _nt_obs_id_right
4743:           if r3
4744:             r0 = r3
4745:           else
4746:             @index = i0
4747:             r0 = nil
4748:           end
4749:         end
4750:       end
4751: 
4752:       node_cache[:id_right][start_index] = r0
4753: 
4754:       r0
4755:     end
_nt_item_name() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4356
4356:     def _nt_item_name
4357:       start_index = index
4358:       if node_cache[:item_name].has_key?(index)
4359:         cached = node_cache[:item_name][index]
4360:         if cached
4361:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4362:           @index = cached.interval.end
4363:         end
4364:         return cached
4365:       end
4366: 
4367:       i0, s0 = index, []
4368:       r1 = _nt_ALPHA
4369:       s0 << r1
4370:       if r1
4371:         s2, i2 = [], index
4372:         loop do
4373:           i3, s3 = index, []
4374:           if has_terminal?("-", false, index)
4375:             r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
4376:             @index += 1
4377:           else
4378:             terminal_parse_failure("-")
4379:             r5 = nil
4380:           end
4381:           if r5
4382:             r4 = r5
4383:           else
4384:             r4 = instantiate_node(SyntaxNode,input, index...index)
4385:           end
4386:           s3 << r4
4387:           if r4
4388:             i6 = index
4389:             r7 = _nt_ALPHA
4390:             if r7
4391:               r6 = r7
4392:             else
4393:               r8 = _nt_DIGIT
4394:               if r8
4395:                 r6 = r8
4396:               else
4397:                 @index = i6
4398:                 r6 = nil
4399:               end
4400:             end
4401:             s3 << r6
4402:           end
4403:           if s3.last
4404:             r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4405:             r3.extend(ItemName0)
4406:           else
4407:             @index = i3
4408:             r3 = nil
4409:           end
4410:           if r3
4411:             s2 << r3
4412:           else
4413:             break
4414:           end
4415:         end
4416:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4417:         s0 << r2
4418:       end
4419:       if s0.last
4420:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4421:         r0.extend(ItemName1)
4422:       else
4423:         @index = i0
4424:         r0 = nil
4425:       end
4426: 
4427:       node_cache[:item_name][start_index] = r0
4428: 
4429:       r0
4430:     end
_nt_item_value() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4432
4432:     def _nt_item_value
4433:       start_index = index
4434:       if node_cache[:item_value].has_key?(index)
4435:         cached = node_cache[:item_value][index]
4436:         if cached
4437:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4438:           @index = cached.interval.end
4439:         end
4440:         return cached
4441:       end
4442: 
4443:       i0 = index
4444:       s1, i1 = [], index
4445:       loop do
4446:         r2 = _nt_angle_addr
4447:         if r2
4448:           s1 << r2
4449:         else
4450:           break
4451:         end
4452:       end
4453:       if s1.empty?
4454:         @index = i1
4455:         r1 = nil
4456:       else
4457:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4458:       end
4459:       if r1
4460:         r0 = r1
4461:       else
4462:         r3 = _nt_addr_spec
4463:         if r3
4464:           r0 = r3
4465:         else
4466:           r4 = _nt_atom
4467:           if r4
4468:             r0 = r4
4469:           else
4470:             r5 = _nt_domain
4471:             if r5
4472:               r0 = r5
4473:             else
4474:               r6 = _nt_msg_id
4475:               if r6
4476:                 r0 = r6
4477:               else
4478:                 @index = i0
4479:                 r0 = nil
4480:               end
4481:             end
4482:           end
4483:         end
4484:       end
4485: 
4486:       node_cache[:item_value][start_index] = r0
4487: 
4488:       r0
4489:     end
_nt_local_dot_atom() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1180
1180:     def _nt_local_dot_atom
1181:       start_index = index
1182:       if node_cache[:local_dot_atom].has_key?(index)
1183:         cached = node_cache[:local_dot_atom][index]
1184:         if cached
1185:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1186:           @index = cached.interval.end
1187:         end
1188:         return cached
1189:       end
1190: 
1191:       i0, s0 = index, []
1192:       r2 = _nt_CFWS
1193:       if r2
1194:         r1 = r2
1195:       else
1196:         r1 = instantiate_node(SyntaxNode,input, index...index)
1197:       end
1198:       s0 << r1
1199:       if r1
1200:         r3 = _nt_local_dot_atom_text
1201:         s0 << r3
1202:         if r3
1203:           r5 = _nt_CFWS
1204:           if r5
1205:             r4 = r5
1206:           else
1207:             r4 = instantiate_node(SyntaxNode,input, index...index)
1208:           end
1209:           s0 << r4
1210:         end
1211:       end
1212:       if s0.last
1213:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1214:         r0.extend(LocalDotAtom0)
1215:       else
1216:         @index = i0
1217:         r0 = nil
1218:       end
1219: 
1220:       node_cache[:local_dot_atom][start_index] = r0
1221: 
1222:       r0
1223:     end
_nt_local_dot_atom_text() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1326
1326:     def _nt_local_dot_atom_text
1327:       start_index = index
1328:       if node_cache[:local_dot_atom_text].has_key?(index)
1329:         cached = node_cache[:local_dot_atom_text][index]
1330:         if cached
1331:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1332:           @index = cached.interval.end
1333:         end
1334:         return cached
1335:       end
1336: 
1337:       s0, i0 = [], index
1338:       loop do
1339:         i1, s1 = index, []
1340:         s2, i2 = [], index
1341:         loop do
1342:           if has_terminal?(".", false, index)
1343:             r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1344:             @index += 1
1345:           else
1346:             terminal_parse_failure(".")
1347:             r3 = nil
1348:           end
1349:           if r3
1350:             s2 << r3
1351:           else
1352:             break
1353:           end
1354:         end
1355:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1356:         s1 << r2
1357:         if r2
1358:           r4 = _nt_domain_text
1359:           s1 << r4
1360:         end
1361:         if s1.last
1362:           r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1363:           r1.extend(LocalDotAtomText0)
1364:         else
1365:           @index = i1
1366:           r1 = nil
1367:         end
1368:         if r1
1369:           s0 << r1
1370:         else
1371:           break
1372:         end
1373:       end
1374:       if s0.empty?
1375:         @index = i0
1376:         r0 = nil
1377:       else
1378:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1379:       end
1380: 
1381:       node_cache[:local_dot_atom_text][start_index] = r0
1382: 
1383:       r0
1384:     end
_nt_local_part() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2118
2118:     def _nt_local_part
2119:       start_index = index
2120:       if node_cache[:local_part].has_key?(index)
2121:         cached = node_cache[:local_part][index]
2122:         if cached
2123:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2124:           @index = cached.interval.end
2125:         end
2126:         return cached
2127:       end
2128: 
2129:       i0 = index
2130:       r1 = _nt_local_dot_atom
2131:       if r1
2132:         r0 = r1
2133:       else
2134:         r2 = _nt_quoted_string
2135:         if r2
2136:           r0 = r2
2137:         else
2138:           r3 = _nt_obs_local_part
2139:           if r3
2140:             r0 = r3
2141:           else
2142:             @index = i0
2143:             r0 = nil
2144:           end
2145:         end
2146:       end
2147: 
2148:       node_cache[:local_part][start_index] = r0
2149: 
2150:       r0
2151:     end
_nt_mailbox() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2769
2769:     def _nt_mailbox
2770:       start_index = index
2771:       if node_cache[:mailbox].has_key?(index)
2772:         cached = node_cache[:mailbox][index]
2773:         if cached
2774:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2775:           @index = cached.interval.end
2776:         end
2777:         return cached
2778:       end
2779: 
2780:       i0 = index
2781:       r1 = _nt_name_addr
2782:       if r1
2783:         r0 = r1
2784:       else
2785:         r2 = _nt_addr_spec
2786:         if r2
2787:           r0 = r2
2788:         else
2789:           @index = i0
2790:           r0 = nil
2791:         end
2792:       end
2793: 
2794:       node_cache[:mailbox][start_index] = r0
2795: 
2796:       r0
2797:     end
_nt_mailbox_list() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2698
2698:     def _nt_mailbox_list
2699:       start_index = index
2700:       if node_cache[:mailbox_list].has_key?(index)
2701:         cached = node_cache[:mailbox_list][index]
2702:         if cached
2703:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2704:           @index = cached.interval.end
2705:         end
2706:         return cached
2707:       end
2708: 
2709:       i0 = index
2710:       i1, s1 = index, []
2711:       r2 = _nt_mailbox
2712:       s1 << r2
2713:       if r2
2714:         s3, i3 = [], index
2715:         loop do
2716:           i4, s4 = index, []
2717:           if has_terminal?(",", false, index)
2718:             r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
2719:             @index += 1
2720:           else
2721:             terminal_parse_failure(",")
2722:             r5 = nil
2723:           end
2724:           s4 << r5
2725:           if r5
2726:             r6 = _nt_mailbox
2727:             s4 << r6
2728:           end
2729:           if s4.last
2730:             r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2731:             r4.extend(MailboxList0)
2732:           else
2733:             @index = i4
2734:             r4 = nil
2735:           end
2736:           if r4
2737:             s3 << r4
2738:           else
2739:             break
2740:           end
2741:         end
2742:         r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2743:         s1 << r3
2744:       end
2745:       if s1.last
2746:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2747:         r1.extend(MailboxList1)
2748:       else
2749:         @index = i1
2750:         r1 = nil
2751:       end
2752:       if r1
2753:         r0 = r1
2754:       else
2755:         r7 = _nt_obs_mbox_list
2756:         if r7
2757:           r0 = r7
2758:         else
2759:           @index = i0
2760:           r0 = nil
2761:         end
2762:       end
2763: 
2764:       node_cache[:mailbox_list][start_index] = r0
2765: 
2766:       r0
2767:     end
_nt_mailbox_list_group() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2282
2282:     def _nt_mailbox_list_group
2283:       start_index = index
2284:       if node_cache[:mailbox_list_group].has_key?(index)
2285:         cached = node_cache[:mailbox_list_group][index]
2286:         if cached
2287:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2288:           @index = cached.interval.end
2289:         end
2290:         return cached
2291:       end
2292: 
2293:       r0 = _nt_mailbox_list
2294:       r0.extend(MailboxListGroup0)
2295: 
2296:       node_cache[:mailbox_list_group][start_index] = r0
2297: 
2298:       r0
2299:     end
_nt_message_id_text() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1225
1225:     def _nt_message_id_text
1226:       start_index = index
1227:       if node_cache[:message_id_text].has_key?(index)
1228:         cached = node_cache[:message_id_text][index]
1229:         if cached
1230:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1231:           @index = cached.interval.end
1232:         end
1233:         return cached
1234:       end
1235: 
1236:       s0, i0 = [], index
1237:       loop do
1238:         r1 = _nt_mtext
1239:         if r1
1240:           s0 << r1
1241:         else
1242:           break
1243:         end
1244:       end
1245:       if s0.empty?
1246:         @index = i0
1247:         r0 = nil
1248:       else
1249:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1250:       end
1251: 
1252:       node_cache[:message_id_text][start_index] = r0
1253: 
1254:       r0
1255:     end
_nt_message_ids() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4511
4511:     def _nt_message_ids
4512:       start_index = index
4513:       if node_cache[:message_ids].has_key?(index)
4514:         cached = node_cache[:message_ids][index]
4515:         if cached
4516:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4517:           @index = cached.interval.end
4518:         end
4519:         return cached
4520:       end
4521: 
4522:       i0, s0 = index, []
4523:       r1 = _nt_msg_id
4524:       s0 << r1
4525:       if r1
4526:         s2, i2 = [], index
4527:         loop do
4528:           i3, s3 = index, []
4529:           r4 = _nt_CFWS
4530:           s3 << r4
4531:           if r4
4532:             r5 = _nt_msg_id
4533:             s3 << r5
4534:           end
4535:           if s3.last
4536:             r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4537:             r3.extend(MessageIds0)
4538:           else
4539:             @index = i3
4540:             r3 = nil
4541:           end
4542:           if r3
4543:             s2 << r3
4544:           else
4545:             break
4546:           end
4547:         end
4548:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4549:         s0 << r2
4550:       end
4551:       if s0.last
4552:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4553:         r0.extend(MessageIds1)
4554:       else
4555:         @index = i0
4556:         r0 = nil
4557:       end
4558: 
4559:       node_cache[:message_ids][start_index] = r0
4560: 
4561:       r0
4562:     end
_nt_minute() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3816
3816:     def _nt_minute
3817:       start_index = index
3818:       if node_cache[:minute].has_key?(index)
3819:         cached = node_cache[:minute][index]
3820:         if cached
3821:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3822:           @index = cached.interval.end
3823:         end
3824:         return cached
3825:       end
3826: 
3827:       i0 = index
3828:       i1, s1 = index, []
3829:       r2 = _nt_DIGIT
3830:       s1 << r2
3831:       if r2
3832:         r3 = _nt_DIGIT
3833:         s1 << r3
3834:       end
3835:       if s1.last
3836:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3837:         r1.extend(Minute0)
3838:       else
3839:         @index = i1
3840:         r1 = nil
3841:       end
3842:       if r1
3843:         r0 = r1
3844:       else
3845:         r4 = _nt_obs_minute
3846:         if r4
3847:           r0 = r4
3848:         else
3849:           @index = i0
3850:           r0 = nil
3851:         end
3852:       end
3853: 
3854:       node_cache[:minute][start_index] = r0
3855: 
3856:       r0
3857:     end
_nt_month() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3355
3355:     def _nt_month
3356:       start_index = index
3357:       if node_cache[:month].has_key?(index)
3358:         cached = node_cache[:month][index]
3359:         if cached
3360:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3361:           @index = cached.interval.end
3362:         end
3363:         return cached
3364:       end
3365: 
3366:       i0 = index
3367:       i1, s1 = index, []
3368:       r2 = _nt_FWS
3369:       s1 << r2
3370:       if r2
3371:         r3 = _nt_month_name
3372:         s1 << r3
3373:         if r3
3374:           r4 = _nt_FWS
3375:           s1 << r4
3376:         end
3377:       end
3378:       if s1.last
3379:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3380:         r1.extend(Month0)
3381:       else
3382:         @index = i1
3383:         r1 = nil
3384:       end
3385:       if r1
3386:         r0 = r1
3387:       else
3388:         r5 = _nt_obs_month
3389:         if r5
3390:           r0 = r5
3391:         else
3392:           @index = i0
3393:           r0 = nil
3394:         end
3395:       end
3396: 
3397:       node_cache[:month][start_index] = r0
3398: 
3399:       r0
3400:     end
_nt_month_name() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3402
3402:     def _nt_month_name
3403:       start_index = index
3404:       if node_cache[:month_name].has_key?(index)
3405:         cached = node_cache[:month_name][index]
3406:         if cached
3407:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3408:           @index = cached.interval.end
3409:         end
3410:         return cached
3411:       end
3412: 
3413:       i0 = index
3414:       if has_terminal?("Jan", false, index)
3415:         r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
3416:         @index += 3
3417:       else
3418:         terminal_parse_failure("Jan")
3419:         r1 = nil
3420:       end
3421:       if r1
3422:         r0 = r1
3423:       else
3424:         if has_terminal?("Feb", false, index)
3425:           r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
3426:           @index += 3
3427:         else
3428:           terminal_parse_failure("Feb")
3429:           r2 = nil
3430:         end
3431:         if r2
3432:           r0 = r2
3433:         else
3434:           if has_terminal?("Mar", false, index)
3435:             r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
3436:             @index += 3
3437:           else
3438:             terminal_parse_failure("Mar")
3439:             r3 = nil
3440:           end
3441:           if r3
3442:             r0 = r3
3443:           else
3444:             if has_terminal?("Apr", false, index)
3445:               r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
3446:               @index += 3
3447:             else
3448:               terminal_parse_failure("Apr")
3449:               r4 = nil
3450:             end
3451:             if r4
3452:               r0 = r4
3453:             else
3454:               if has_terminal?("May", false, index)
3455:                 r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
3456:                 @index += 3
3457:               else
3458:                 terminal_parse_failure("May")
3459:                 r5 = nil
3460:               end
3461:               if r5
3462:                 r0 = r5
3463:               else
3464:                 if has_terminal?("Jun", false, index)
3465:                   r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
3466:                   @index += 3
3467:                 else
3468:                   terminal_parse_failure("Jun")
3469:                   r6 = nil
3470:                 end
3471:                 if r6
3472:                   r0 = r6
3473:                 else
3474:                   if has_terminal?("Jul", false, index)
3475:                     r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
3476:                     @index += 3
3477:                   else
3478:                     terminal_parse_failure("Jul")
3479:                     r7 = nil
3480:                   end
3481:                   if r7
3482:                     r0 = r7
3483:                   else
3484:                     if has_terminal?("Aug", false, index)
3485:                       r8 = instantiate_node(SyntaxNode,input, index...(index + 3))
3486:                       @index += 3
3487:                     else
3488:                       terminal_parse_failure("Aug")
3489:                       r8 = nil
3490:                     end
3491:                     if r8
3492:                       r0 = r8
3493:                     else
3494:                       if has_terminal?("Sep", false, index)
3495:                         r9 = instantiate_node(SyntaxNode,input, index...(index + 3))
3496:                         @index += 3
3497:                       else
3498:                         terminal_parse_failure("Sep")
3499:                         r9 = nil
3500:                       end
3501:                       if r9
3502:                         r0 = r9
3503:                       else
3504:                         if has_terminal?("Oct", false, index)
3505:                           r10 = instantiate_node(SyntaxNode,input, index...(index + 3))
3506:                           @index += 3
3507:                         else
3508:                           terminal_parse_failure("Oct")
3509:                           r10 = nil
3510:                         end
3511:                         if r10
3512:                           r0 = r10
3513:                         else
3514:                           if has_terminal?("Nov", false, index)
3515:                             r11 = instantiate_node(SyntaxNode,input, index...(index + 3))
3516:                             @index += 3
3517:                           else
3518:                             terminal_parse_failure("Nov")
3519:                             r11 = nil
3520:                           end
3521:                           if r11
3522:                             r0 = r11
3523:                           else
3524:                             if has_terminal?("Dec", false, index)
3525:                               r12 = instantiate_node(SyntaxNode,input, index...(index + 3))
3526:                               @index += 3
3527:                             else
3528:                               terminal_parse_failure("Dec")
3529:                               r12 = nil
3530:                             end
3531:                             if r12
3532:                               r0 = r12
3533:                             else
3534:                               @index = i0
3535:                               r0 = nil
3536:                             end
3537:                           end
3538:                         end
3539:                       end
3540:                     end
3541:                   end
3542:                 end
3543:               end
3544:             end
3545:           end
3546:         end
3547:       end
3548: 
3549:       node_cache[:month_name][start_index] = r0
3550: 
3551:       r0
3552:     end
_nt_msg_id() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4571
4571:     def _nt_msg_id
4572:       start_index = index
4573:       if node_cache[:msg_id].has_key?(index)
4574:         cached = node_cache[:msg_id][index]
4575:         if cached
4576:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4577:           @index = cached.interval.end
4578:         end
4579:         return cached
4580:       end
4581: 
4582:       i0, s0 = index, []
4583:       r2 = _nt_CFWS
4584:       if r2
4585:         r1 = r2
4586:       else
4587:         r1 = instantiate_node(SyntaxNode,input, index...index)
4588:       end
4589:       s0 << r1
4590:       if r1
4591:         if has_terminal?("<", false, index)
4592:           r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
4593:           @index += 1
4594:         else
4595:           terminal_parse_failure("<")
4596:           r3 = nil
4597:         end
4598:         s0 << r3
4599:         if r3
4600:           r4 = _nt_msg_id_value
4601:           s0 << r4
4602:           if r4
4603:             if has_terminal?(">", false, index)
4604:               r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
4605:               @index += 1
4606:             else
4607:               terminal_parse_failure(">")
4608:               r5 = nil
4609:             end
4610:             s0 << r5
4611:             if r5
4612:               r7 = _nt_CFWS
4613:               if r7
4614:                 r6 = r7
4615:               else
4616:                 r6 = instantiate_node(SyntaxNode,input, index...index)
4617:               end
4618:               s0 << r6
4619:             end
4620:           end
4621:         end
4622:       end
4623:       if s0.last
4624:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4625:         r0.extend(MsgId0)
4626:       else
4627:         @index = i0
4628:         r0 = nil
4629:       end
4630: 
4631:       node_cache[:msg_id][start_index] = r0
4632: 
4633:       r0
4634:     end
_nt_msg_id_atext() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4938
4938:     def _nt_msg_id_atext
4939:       start_index = index
4940:       if node_cache[:msg_id_atext].has_key?(index)
4941:         cached = node_cache[:msg_id_atext][index]
4942:         if cached
4943:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4944:           @index = cached.interval.end
4945:         end
4946:         return cached
4947:       end
4948: 
4949:       i0 = index
4950:       r1 = _nt_ALPHA
4951:       if r1
4952:         r0 = r1
4953:       else
4954:         r2 = _nt_DIGIT
4955:         if r2
4956:           r0 = r2
4957:         else
4958:           if has_terminal?("!", false, index)
4959:             r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
4960:             @index += 1
4961:           else
4962:             terminal_parse_failure("!")
4963:             r3 = nil
4964:           end
4965:           if r3
4966:             r0 = r3
4967:           else
4968:             if has_terminal?("#", false, index)
4969:               r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
4970:               @index += 1
4971:             else
4972:               terminal_parse_failure("#")
4973:               r4 = nil
4974:             end
4975:             if r4
4976:               r0 = r4
4977:             else
4978:               if has_terminal?("$", false, index)
4979:                 r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
4980:                 @index += 1
4981:               else
4982:                 terminal_parse_failure("$")
4983:                 r5 = nil
4984:               end
4985:               if r5
4986:                 r0 = r5
4987:               else
4988:                 if has_terminal?("%", false, index)
4989:                   r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
4990:                   @index += 1
4991:                 else
4992:                   terminal_parse_failure("%")
4993:                   r6 = nil
4994:                 end
4995:                 if r6
4996:                   r0 = r6
4997:                 else
4998:                   if has_terminal?("&", false, index)
4999:                     r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
5000:                     @index += 1
5001:                   else
5002:                     terminal_parse_failure("&")
5003:                     r7 = nil
5004:                   end
5005:                   if r7
5006:                     r0 = r7
5007:                   else
5008:                     if has_terminal?("'", false, index)
5009:                       r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
5010:                       @index += 1
5011:                     else
5012:                       terminal_parse_failure("'")
5013:                       r8 = nil
5014:                     end
5015:                     if r8
5016:                       r0 = r8
5017:                     else
5018:                       if has_terminal?("*", false, index)
5019:                         r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
5020:                         @index += 1
5021:                       else
5022:                         terminal_parse_failure("*")
5023:                         r9 = nil
5024:                       end
5025:                       if r9
5026:                         r0 = r9
5027:                       else
5028:                         if has_terminal?("+", false, index)
5029:                           r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
5030:                           @index += 1
5031:                         else
5032:                           terminal_parse_failure("+")
5033:                           r10 = nil
5034:                         end
5035:                         if r10
5036:                           r0 = r10
5037:                         else
5038:                           if has_terminal?("-", false, index)
5039:                             r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
5040:                             @index += 1
5041:                           else
5042:                             terminal_parse_failure("-")
5043:                             r11 = nil
5044:                           end
5045:                           if r11
5046:                             r0 = r11
5047:                           else
5048:                             if has_terminal?("/", false, index)
5049:                               r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
5050:                               @index += 1
5051:                             else
5052:                               terminal_parse_failure("/")
5053:                               r12 = nil
5054:                             end
5055:                             if r12
5056:                               r0 = r12
5057:                             else
5058:                               if has_terminal?("=", false, index)
5059:                                 r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
5060:                                 @index += 1
5061:                               else
5062:                                 terminal_parse_failure("=")
5063:                                 r13 = nil
5064:                               end
5065:                               if r13
5066:                                 r0 = r13
5067:                               else
5068:                                 if has_terminal?("?", false, index)
5069:                                   r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
5070:                                   @index += 1
5071:                                 else
5072:                                   terminal_parse_failure("?")
5073:                                   r14 = nil
5074:                                 end
5075:                                 if r14
5076:                                   r0 = r14
5077:                                 else
5078:                                   if has_terminal?("^", false, index)
5079:                                     r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
5080:                                     @index += 1
5081:                                   else
5082:                                     terminal_parse_failure("^")
5083:                                     r15 = nil
5084:                                   end
5085:                                   if r15
5086:                                     r0 = r15
5087:                                   else
5088:                                     if has_terminal?("_", false, index)
5089:                                       r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
5090:                                       @index += 1
5091:                                     else
5092:                                       terminal_parse_failure("_")
5093:                                       r16 = nil
5094:                                     end
5095:                                     if r16
5096:                                       r0 = r16
5097:                                     else
5098:                                       if has_terminal?("`", false, index)
5099:                                         r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
5100:                                         @index += 1
5101:                                       else
5102:                                         terminal_parse_failure("`")
5103:                                         r17 = nil
5104:                                       end
5105:                                       if r17
5106:                                         r0 = r17
5107:                                       else
5108:                                         if has_terminal?("{", false, index)
5109:                                           r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
5110:                                           @index += 1
5111:                                         else
5112:                                           terminal_parse_failure("{")
5113:                                           r18 = nil
5114:                                         end
5115:                                         if r18
5116:                                           r0 = r18
5117:                                         else
5118:                                           if has_terminal?("|", false, index)
5119:                                             r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
5120:                                             @index += 1
5121:                                           else
5122:                                             terminal_parse_failure("|")
5123:                                             r19 = nil
5124:                                           end
5125:                                           if r19
5126:                                             r0 = r19
5127:                                           else
5128:                                             if has_terminal?("}", false, index)
5129:                                               r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
5130:                                               @index += 1
5131:                                             else
5132:                                               terminal_parse_failure("}")
5133:                                               r20 = nil
5134:                                             end
5135:                                             if r20
5136:                                               r0 = r20
5137:                                             else
5138:                                               if has_terminal?("~", false, index)
5139:                                                 r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
5140:                                                 @index += 1
5141:                                               else
5142:                                                 terminal_parse_failure("~")
5143:                                                 r21 = nil
5144:                                               end
5145:                                               if r21
5146:                                                 r0 = r21
5147:                                               else
5148:                                                 if has_terminal?("@", false, index)
5149:                                                   r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
5150:                                                   @index += 1
5151:                                                 else
5152:                                                   terminal_parse_failure("@")
5153:                                                   r22 = nil
5154:                                                 end
5155:                                                 if r22
5156:                                                   r0 = r22
5157:                                                 else
5158:                                                   @index = i0
5159:                                                   r0 = nil
5160:                                                 end
5161:                                               end
5162:                                             end
5163:                                           end
5164:                                         end
5165:                                       end
5166:                                     end
5167:                                   end
5168:                                 end
5169:                               end
5170:                             end
5171:                           end
5172:                         end
5173:                       end
5174:                     end
5175:                   end
5176:                 end
5177:               end
5178:             end
5179:           end
5180:         end
5181:       end
5182: 
5183:       node_cache[:msg_id_atext][start_index] = r0
5184: 
5185:       r0
5186:     end
_nt_msg_id_domain_text() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4836
4836:     def _nt_msg_id_domain_text
4837:       start_index = index
4838:       if node_cache[:msg_id_domain_text].has_key?(index)
4839:         cached = node_cache[:msg_id_domain_text][index]
4840:         if cached
4841:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4842:           @index = cached.interval.end
4843:         end
4844:         return cached
4845:       end
4846: 
4847:       i0 = index
4848:       i1, s1 = index, []
4849:       r2 = _nt_DQUOTE
4850:       s1 << r2
4851:       if r2
4852:         s3, i3 = [], index
4853:         loop do
4854:           i4, s4 = index, []
4855:           r6 = _nt_FWS
4856:           if r6
4857:             r5 = r6
4858:           else
4859:             r5 = instantiate_node(SyntaxNode,input, index...index)
4860:           end
4861:           s4 << r5
4862:           if r5
4863:             r7 = _nt_quoted_domain
4864:             s4 << r7
4865:           end
4866:           if s4.last
4867:             r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
4868:             r4.extend(MsgIdDomainText0)
4869:           else
4870:             @index = i4
4871:             r4 = nil
4872:           end
4873:           if r4
4874:             s3 << r4
4875:           else
4876:             break
4877:           end
4878:         end
4879:         if s3.empty?
4880:           @index = i3
4881:           r3 = nil
4882:         else
4883:           r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4884:         end
4885:         s1 << r3
4886:         if r3
4887:           r9 = _nt_FWS
4888:           if r9
4889:             r8 = r9
4890:           else
4891:             r8 = instantiate_node(SyntaxNode,input, index...index)
4892:           end
4893:           s1 << r8
4894:           if r8
4895:             r10 = _nt_DQUOTE
4896:             s1 << r10
4897:           end
4898:         end
4899:       end
4900:       if s1.last
4901:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4902:         r1.extend(MsgIdDomainText1)
4903:       else
4904:         @index = i1
4905:         r1 = nil
4906:       end
4907:       if r1
4908:         r0 = r1
4909:       else
4910:         s11, i11 = [], index
4911:         loop do
4912:           r12 = _nt_msg_id_atext
4913:           if r12
4914:             s11 << r12
4915:           else
4916:             break
4917:           end
4918:         end
4919:         if s11.empty?
4920:           @index = i11
4921:           r11 = nil
4922:         else
4923:           r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
4924:         end
4925:         if r11
4926:           r0 = r11
4927:         else
4928:           @index = i0
4929:           r0 = nil
4930:         end
4931:       end
4932: 
4933:       node_cache[:msg_id_domain_text][start_index] = r0
4934: 
4935:       r0
4936:     end
_nt_msg_id_dot_atom_text() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4764
4764:     def _nt_msg_id_dot_atom_text
4765:       start_index = index
4766:       if node_cache[:msg_id_dot_atom_text].has_key?(index)
4767:         cached = node_cache[:msg_id_dot_atom_text][index]
4768:         if cached
4769:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4770:           @index = cached.interval.end
4771:         end
4772:         return cached
4773:       end
4774: 
4775:       s0, i0 = [], index
4776:       loop do
4777:         i1, s1 = index, []
4778:         r2 = _nt_msg_id_domain_text
4779:         s1 << r2
4780:         if r2
4781:           if has_terminal?(".", false, index)
4782:             r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
4783:             @index += 1
4784:           else
4785:             terminal_parse_failure(".")
4786:             r4 = nil
4787:           end
4788:           if r4
4789:             r3 = r4
4790:           else
4791:             r3 = instantiate_node(SyntaxNode,input, index...index)
4792:           end
4793:           s1 << r3
4794:         end
4795:         if s1.last
4796:           r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4797:           r1.extend(MsgIdDotAtomText0)
4798:         else
4799:           @index = i1
4800:           r1 = nil
4801:         end
4802:         if r1
4803:           s0 << r1
4804:         else
4805:           break
4806:         end
4807:       end
4808:       if s0.empty?
4809:         @index = i0
4810:         r0 = nil
4811:       else
4812:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4813:       end
4814: 
4815:       node_cache[:msg_id_dot_atom_text][start_index] = r0
4816: 
4817:       r0
4818:     end
_nt_msg_id_value() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4646
4646:     def _nt_msg_id_value
4647:       start_index = index
4648:       if node_cache[:msg_id_value].has_key?(index)
4649:         cached = node_cache[:msg_id_value][index]
4650:         if cached
4651:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4652:           @index = cached.interval.end
4653:         end
4654:         return cached
4655:       end
4656: 
4657:       i0, s0 = index, []
4658:       r1 = _nt_id_left
4659:       s0 << r1
4660:       if r1
4661:         if has_terminal?("@", false, index)
4662:           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
4663:           @index += 1
4664:         else
4665:           terminal_parse_failure("@")
4666:           r2 = nil
4667:         end
4668:         s0 << r2
4669:         if r2
4670:           r3 = _nt_id_right
4671:           s0 << r3
4672:         end
4673:       end
4674:       if s0.last
4675:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4676:         r0.extend(MsgIdValue0)
4677:       else
4678:         @index = i0
4679:         r0 = nil
4680:       end
4681: 
4682:       node_cache[:msg_id_value][start_index] = r0
4683: 
4684:       r0
4685:     end
_nt_mtext() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1009
1009:     def _nt_mtext
1010:       start_index = index
1011:       if node_cache[:mtext].has_key?(index)
1012:         cached = node_cache[:mtext][index]
1013:         if cached
1014:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1015:           @index = cached.interval.end
1016:         end
1017:         return cached
1018:       end
1019: 
1020:       s0, i0 = [], index
1021:       loop do
1022:         i1 = index
1023:         r2 = _nt_atext
1024:         if r2
1025:           r1 = r2
1026:         else
1027:           if has_terminal?(".", false, index)
1028:             r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1029:             @index += 1
1030:           else
1031:             terminal_parse_failure(".")
1032:             r3 = nil
1033:           end
1034:           if r3
1035:             r1 = r3
1036:           else
1037:             @index = i1
1038:             r1 = nil
1039:           end
1040:         end
1041:         if r1
1042:           s0 << r1
1043:         else
1044:           break
1045:         end
1046:       end
1047:       if s0.empty?
1048:         @index = i0
1049:         r0 = nil
1050:       else
1051:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1052:       end
1053: 
1054:       node_cache[:mtext][start_index] = r0
1055: 
1056:       r0
1057:     end
_nt_name_addr() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2639
2639:     def _nt_name_addr
2640:       start_index = index
2641:       if node_cache[:name_addr].has_key?(index)
2642:         cached = node_cache[:name_addr][index]
2643:         if cached
2644:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2645:           @index = cached.interval.end
2646:         end
2647:         return cached
2648:       end
2649: 
2650:       i0 = index
2651:       i1, s1 = index, []
2652:       r2 = _nt_display_name
2653:       s1 << r2
2654:       if r2
2655:         r3 = _nt_angle_addr
2656:         s1 << r3
2657:       end
2658:       if s1.last
2659:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2660:         r1.extend(NameAddr0)
2661:       else
2662:         @index = i1
2663:         r1 = nil
2664:       end
2665:       if r1
2666:         r0 = r1
2667:       else
2668:         r4 = _nt_angle_addr
2669:         if r4
2670:           r0 = r4
2671:         else
2672:           @index = i0
2673:           r0 = nil
2674:         end
2675:       end
2676: 
2677:       node_cache[:name_addr][start_index] = r0
2678: 
2679:       r0
2680:     end
_nt_name_val_list() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4226
4226:     def _nt_name_val_list
4227:       start_index = index
4228:       if node_cache[:name_val_list].has_key?(index)
4229:         cached = node_cache[:name_val_list][index]
4230:         if cached
4231:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4232:           @index = cached.interval.end
4233:         end
4234:         return cached
4235:       end
4236: 
4237:       i0, s0 = index, []
4238:       r2 = _nt_CFWS
4239:       if r2
4240:         r1 = r2
4241:       else
4242:         r1 = instantiate_node(SyntaxNode,input, index...index)
4243:       end
4244:       s0 << r1
4245:       if r1
4246:         i3, s3 = index, []
4247:         r4 = _nt_name_val_pair
4248:         s3 << r4
4249:         if r4
4250:           s5, i5 = [], index
4251:           loop do
4252:             i6, s6 = index, []
4253:             r7 = _nt_CFWS
4254:             s6 << r7
4255:             if r7
4256:               r8 = _nt_name_val_pair
4257:               s6 << r8
4258:             end
4259:             if s6.last
4260:               r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
4261:               r6.extend(NameValList0)
4262:             else
4263:               @index = i6
4264:               r6 = nil
4265:             end
4266:             if r6
4267:               s5 << r6
4268:             else
4269:               break
4270:             end
4271:           end
4272:           r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
4273:           s3 << r5
4274:         end
4275:         if s3.last
4276:           r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4277:           r3.extend(NameValList1)
4278:         else
4279:           @index = i3
4280:           r3 = nil
4281:         end
4282:         s0 << r3
4283:       end
4284:       if s0.last
4285:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4286:         r0.extend(NameValList2)
4287:       else
4288:         @index = i0
4289:         r0 = nil
4290:       end
4291: 
4292:       node_cache[:name_val_list][start_index] = r0
4293: 
4294:       r0
4295:     end
_nt_name_val_pair() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4311
4311:     def _nt_name_val_pair
4312:       start_index = index
4313:       if node_cache[:name_val_pair].has_key?(index)
4314:         cached = node_cache[:name_val_pair][index]
4315:         if cached
4316:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4317:           @index = cached.interval.end
4318:         end
4319:         return cached
4320:       end
4321: 
4322:       i0, s0 = index, []
4323:       r1 = _nt_item_name
4324:       s0 << r1
4325:       if r1
4326:         r2 = _nt_CFWS
4327:         s0 << r2
4328:         if r2
4329:           r3 = _nt_item_value
4330:           s0 << r3
4331:         end
4332:       end
4333:       if s0.last
4334:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4335:         r0.extend(NameValPair0)
4336:       else
4337:         @index = i0
4338:         r0 = nil
4339:       end
4340: 
4341:       node_cache[:name_val_pair][start_index] = r0
4342: 
4343:       r0
4344:     end
_nt_no_fold_literal() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 5262
5262:     def _nt_no_fold_literal
5263:       start_index = index
5264:       if node_cache[:no_fold_literal].has_key?(index)
5265:         cached = node_cache[:no_fold_literal][index]
5266:         if cached
5267:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
5268:           @index = cached.interval.end
5269:         end
5270:         return cached
5271:       end
5272: 
5273:       i0, s0 = index, []
5274:       if has_terminal?("[", false, index)
5275:         r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
5276:         @index += 1
5277:       else
5278:         terminal_parse_failure("[")
5279:         r1 = nil
5280:       end
5281:       s0 << r1
5282:       if r1
5283:         s2, i2 = [], index
5284:         loop do
5285:           i3 = index
5286:           r4 = _nt_dtext
5287:           if r4
5288:             r3 = r4
5289:           else
5290:             r5 = _nt_quoted_pair
5291:             if r5
5292:               r3 = r5
5293:             else
5294:               @index = i3
5295:               r3 = nil
5296:             end
5297:           end
5298:           if r3
5299:             s2 << r3
5300:           else
5301:             break
5302:           end
5303:         end
5304:         if s2.empty?
5305:           @index = i2
5306:           r2 = nil
5307:         else
5308:           r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
5309:         end
5310:         s0 << r2
5311:         if r2
5312:           if has_terminal?("]", false, index)
5313:             r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
5314:             @index += 1
5315:           else
5316:             terminal_parse_failure("]")
5317:             r6 = nil
5318:           end
5319:           s0 << r6
5320:         end
5321:       end
5322:       if s0.last
5323:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
5324:         r0.extend(NoFoldLiteral0)
5325:       else
5326:         @index = i0
5327:         r0 = nil
5328:       end
5329: 
5330:       node_cache[:no_fold_literal][start_index] = r0
5331: 
5332:       r0
5333:     end
_nt_no_fold_quote() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 5198
5198:     def _nt_no_fold_quote
5199:       start_index = index
5200:       if node_cache[:no_fold_quote].has_key?(index)
5201:         cached = node_cache[:no_fold_quote][index]
5202:         if cached
5203:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
5204:           @index = cached.interval.end
5205:         end
5206:         return cached
5207:       end
5208: 
5209:       i0, s0 = index, []
5210:       r1 = _nt_DQUOTE
5211:       s0 << r1
5212:       if r1
5213:         s2, i2 = [], index
5214:         loop do
5215:           i3 = index
5216:           r4 = _nt_qtext
5217:           if r4
5218:             r3 = r4
5219:           else
5220:             r5 = _nt_quoted_pair
5221:             if r5
5222:               r3 = r5
5223:             else
5224:               @index = i3
5225:               r3 = nil
5226:             end
5227:           end
5228:           if r3
5229:             s2 << r3
5230:           else
5231:             break
5232:           end
5233:         end
5234:         if s2.empty?
5235:           @index = i2
5236:           r2 = nil
5237:         else
5238:           r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
5239:         end
5240:         s0 << r2
5241:         if r2
5242:           r6 = _nt_DQUOTE
5243:           s0 << r6
5244:         end
5245:       end
5246:       if s0.last
5247:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
5248:         r0.extend(NoFoldQuote0)
5249:       else
5250:         @index = i0
5251:         r0 = nil
5252:       end
5253: 
5254:       node_cache[:no_fold_quote][start_index] = r0
5255: 
5256:       r0
5257:     end
_nt_path() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4053
4053:     def _nt_path
4054:       start_index = index
4055:       if node_cache[:path].has_key?(index)
4056:         cached = node_cache[:path][index]
4057:         if cached
4058:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4059:           @index = cached.interval.end
4060:         end
4061:         return cached
4062:       end
4063: 
4064:       i0 = index
4065:       i1, s1 = index, []
4066:       r3 = _nt_CFWS
4067:       if r3
4068:         r2 = r3
4069:       else
4070:         r2 = instantiate_node(SyntaxNode,input, index...index)
4071:       end
4072:       s1 << r2
4073:       if r2
4074:         if has_terminal?("<", false, index)
4075:           r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
4076:           @index += 1
4077:         else
4078:           terminal_parse_failure("<")
4079:           r4 = nil
4080:         end
4081:         s1 << r4
4082:         if r4
4083:           i5 = index
4084:           r7 = _nt_CFWS
4085:           if r7
4086:             r6 = r7
4087:           else
4088:             r6 = instantiate_node(SyntaxNode,input, index...index)
4089:           end
4090:           if r6
4091:             r5 = r6
4092:           else
4093:             r8 = _nt_addr_spec
4094:             if r8
4095:               r5 = r8
4096:             else
4097:               @index = i5
4098:               r5 = nil
4099:             end
4100:           end
4101:           s1 << r5
4102:           if r5
4103:             if has_terminal?(">", false, index)
4104:               r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
4105:               @index += 1
4106:             else
4107:               terminal_parse_failure(">")
4108:               r9 = nil
4109:             end
4110:             s1 << r9
4111:             if r9
4112:               r11 = _nt_CFWS
4113:               if r11
4114:                 r10 = r11
4115:               else
4116:                 r10 = instantiate_node(SyntaxNode,input, index...index)
4117:               end
4118:               s1 << r10
4119:             end
4120:           end
4121:         end
4122:       end
4123:       if s1.last
4124:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4125:         r1.extend(Path0)
4126:       else
4127:         @index = i1
4128:         r1 = nil
4129:       end
4130:       if r1
4131:         r0 = r1
4132:       else
4133:         r12 = _nt_obs_path
4134:         if r12
4135:           r0 = r12
4136:         else
4137:           @index = i0
4138:           r0 = nil
4139:         end
4140:       end
4141: 
4142:       node_cache[:path][start_index] = r0
4143: 
4144:       r0
4145:     end
_nt_phrase() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1624
1624:     def _nt_phrase
1625:       start_index = index
1626:       if node_cache[:phrase].has_key?(index)
1627:         cached = node_cache[:phrase][index]
1628:         if cached
1629:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1630:           @index = cached.interval.end
1631:         end
1632:         return cached
1633:       end
1634: 
1635:       i0 = index
1636:       r1 = _nt_obs_phrase
1637:       if r1
1638:         r0 = r1
1639:       else
1640:         s2, i2 = [], index
1641:         loop do
1642:           r3 = _nt_word
1643:           if r3
1644:             s2 << r3
1645:           else
1646:             break
1647:           end
1648:         end
1649:         if s2.empty?
1650:           @index = i2
1651:           r2 = nil
1652:         else
1653:           r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1654:         end
1655:         if r2
1656:           r0 = r2
1657:         else
1658:           @index = i0
1659:           r0 = nil
1660:         end
1661:       end
1662: 
1663:       node_cache[:phrase][start_index] = r0
1664: 
1665:       r0
1666:     end
_nt_phrase_list() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1714
1714:     def _nt_phrase_list
1715:       start_index = index
1716:       if node_cache[:phrase_list].has_key?(index)
1717:         cached = node_cache[:phrase_list][index]
1718:         if cached
1719:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1720:           @index = cached.interval.end
1721:         end
1722:         return cached
1723:       end
1724: 
1725:       i0, s0 = index, []
1726:       r1 = _nt_phrase
1727:       s0 << r1
1728:       if r1
1729:         s2, i2 = [], index
1730:         loop do
1731:           i3, s3 = index, []
1732:           if has_terminal?(",", false, index)
1733:             r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1734:             @index += 1
1735:           else
1736:             terminal_parse_failure(",")
1737:             r4 = nil
1738:           end
1739:           s3 << r4
1740:           if r4
1741:             s5, i5 = [], index
1742:             loop do
1743:               r6 = _nt_FWS
1744:               if r6
1745:                 s5 << r6
1746:               else
1747:                 break
1748:               end
1749:             end
1750:             r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1751:             s3 << r5
1752:             if r5
1753:               r7 = _nt_phrase
1754:               s3 << r7
1755:             end
1756:           end
1757:           if s3.last
1758:             r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1759:             r3.extend(PhraseList0)
1760:           else
1761:             @index = i3
1762:             r3 = nil
1763:           end
1764:           if r3
1765:             s2 << r3
1766:           else
1767:             break
1768:           end
1769:         end
1770:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1771:         s0 << r2
1772:       end
1773:       if s0.last
1774:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1775:         r0.extend(PhraseList1)
1776:       else
1777:         @index = i0
1778:         r0 = nil
1779:       end
1780: 
1781:       node_cache[:phrase_list][start_index] = r0
1782: 
1783:       r0
1784:     end
_nt_qcontent() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2416
2416:     def _nt_qcontent
2417:       start_index = index
2418:       if node_cache[:qcontent].has_key?(index)
2419:         cached = node_cache[:qcontent][index]
2420:         if cached
2421:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2422:           @index = cached.interval.end
2423:         end
2424:         return cached
2425:       end
2426: 
2427:       i0 = index
2428:       r1 = _nt_qtext
2429:       if r1
2430:         r0 = r1
2431:       else
2432:         r2 = _nt_quoted_pair
2433:         if r2
2434:           r0 = r2
2435:         else
2436:           @index = i0
2437:           r0 = nil
2438:         end
2439:       end
2440: 
2441:       node_cache[:qcontent][start_index] = r0
2442: 
2443:       r0
2444:     end
_nt_qdcontent() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1559
1559:     def _nt_qdcontent
1560:       start_index = index
1561:       if node_cache[:qdcontent].has_key?(index)
1562:         cached = node_cache[:qdcontent][index]
1563:         if cached
1564:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1565:           @index = cached.interval.end
1566:         end
1567:         return cached
1568:       end
1569: 
1570:       i0 = index
1571:       r1 = _nt_NO_WS_CTL
1572:       if r1
1573:         r0 = r1
1574:       else
1575:         if has_terminal?('\G[\x21]', true, index)
1576:           r2 = true
1577:           @index += 1
1578:         else
1579:           r2 = nil
1580:         end
1581:         if r2
1582:           r0 = r2
1583:         else
1584:           if has_terminal?('\G[\x23-\x45]', true, index)
1585:             r3 = true
1586:             @index += 1
1587:           else
1588:             r3 = nil
1589:           end
1590:           if r3
1591:             r0 = r3
1592:           else
1593:             if has_terminal?('\G[\x47-\x5b]', true, index)
1594:               r4 = true
1595:               @index += 1
1596:             else
1597:               r4 = nil
1598:             end
1599:             if r4
1600:               r0 = r4
1601:             else
1602:               if has_terminal?('\G[\x5d-\x7e]', true, index)
1603:                 r5 = true
1604:                 @index += 1
1605:               else
1606:                 r5 = nil
1607:               end
1608:               if r5
1609:                 r0 = r5
1610:               else
1611:                 @index = i0
1612:                 r0 = nil
1613:               end
1614:             end
1615:           end
1616:         end
1617:       end
1618: 
1619:       node_cache[:qdcontent][start_index] = r0
1620: 
1621:       r0
1622:     end
_nt_qtext() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2501
2501:     def _nt_qtext
2502:       start_index = index
2503:       if node_cache[:qtext].has_key?(index)
2504:         cached = node_cache[:qtext][index]
2505:         if cached
2506:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2507:           @index = cached.interval.end
2508:         end
2509:         return cached
2510:       end
2511: 
2512:       i0 = index
2513:       r1 = _nt_NO_WS_CTL
2514:       if r1
2515:         r0 = r1
2516:       else
2517:         if has_terminal?('\G[\x21]', true, index)
2518:           r2 = true
2519:           @index += 1
2520:         else
2521:           r2 = nil
2522:         end
2523:         if r2
2524:           r0 = r2
2525:         else
2526:           if has_terminal?('\G[\x23-\x5b]', true, index)
2527:             r3 = true
2528:             @index += 1
2529:           else
2530:             r3 = nil
2531:           end
2532:           if r3
2533:             r0 = r3
2534:           else
2535:             if has_terminal?('\G[\x5d-\x7e]', true, index)
2536:               r4 = true
2537:               @index += 1
2538:             else
2539:               r4 = nil
2540:             end
2541:             if r4
2542:               r0 = r4
2543:             else
2544:               @index = i0
2545:               r0 = nil
2546:             end
2547:           end
2548:         end
2549:       end
2550: 
2551:       node_cache[:qtext][start_index] = r0
2552: 
2553:       r0
2554:     end
_nt_quoted_domain() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1510
1510:     def _nt_quoted_domain
1511:       start_index = index
1512:       if node_cache[:quoted_domain].has_key?(index)
1513:         cached = node_cache[:quoted_domain][index]
1514:         if cached
1515:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1516:           @index = cached.interval.end
1517:         end
1518:         return cached
1519:       end
1520: 
1521:       i0 = index
1522:       r1 = _nt_qdcontent
1523:       if r1
1524:         r0 = r1
1525:       else
1526:         i2, s2 = index, []
1527:         if has_terminal?("\\", false, index)
1528:           r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1529:           @index += 1
1530:         else
1531:           terminal_parse_failure("\\")
1532:           r3 = nil
1533:         end
1534:         s2 << r3
1535:         if r3
1536:           r4 = _nt_text
1537:           s2 << r4
1538:         end
1539:         if s2.last
1540:           r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1541:           r2.extend(QuotedDomain0)
1542:         else
1543:           @index = i2
1544:           r2 = nil
1545:         end
1546:         if r2
1547:           r0 = r2
1548:         else
1549:           @index = i0
1550:           r0 = nil
1551:         end
1552:       end
1553: 
1554:       node_cache[:quoted_domain][start_index] = r0
1555: 
1556:       r0
1557:     end
_nt_quoted_pair() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2452
2452:     def _nt_quoted_pair
2453:       start_index = index
2454:       if node_cache[:quoted_pair].has_key?(index)
2455:         cached = node_cache[:quoted_pair][index]
2456:         if cached
2457:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2458:           @index = cached.interval.end
2459:         end
2460:         return cached
2461:       end
2462: 
2463:       i0 = index
2464:       i1, s1 = index, []
2465:       if has_terminal?("\\", false, index)
2466:         r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2467:         @index += 1
2468:       else
2469:         terminal_parse_failure("\\")
2470:         r2 = nil
2471:       end
2472:       s1 << r2
2473:       if r2
2474:         r3 = _nt_text
2475:         s1 << r3
2476:       end
2477:       if s1.last
2478:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2479:         r1.extend(QuotedPair0)
2480:       else
2481:         @index = i1
2482:         r1 = nil
2483:       end
2484:       if r1
2485:         r0 = r1
2486:       else
2487:         r4 = _nt_obs_qp
2488:         if r4
2489:           r0 = r4
2490:         else
2491:           @index = i0
2492:           r0 = nil
2493:         end
2494:       end
2495: 
2496:       node_cache[:quoted_pair][start_index] = r0
2497: 
2498:       r0
2499:     end
_nt_quoted_string() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2322
2322:     def _nt_quoted_string
2323:       start_index = index
2324:       if node_cache[:quoted_string].has_key?(index)
2325:         cached = node_cache[:quoted_string][index]
2326:         if cached
2327:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2328:           @index = cached.interval.end
2329:         end
2330:         return cached
2331:       end
2332: 
2333:       i0, s0 = index, []
2334:       r2 = _nt_CFWS
2335:       if r2
2336:         r1 = r2
2337:       else
2338:         r1 = instantiate_node(SyntaxNode,input, index...index)
2339:       end
2340:       s0 << r1
2341:       if r1
2342:         r3 = _nt_DQUOTE
2343:         s0 << r3
2344:         if r3
2345:           s4, i4 = [], index
2346:           loop do
2347:             i5, s5 = index, []
2348:             r7 = _nt_FWS
2349:             if r7
2350:               r6 = r7
2351:             else
2352:               r6 = instantiate_node(SyntaxNode,input, index...index)
2353:             end
2354:             s5 << r6
2355:             if r6
2356:               r8 = _nt_qcontent
2357:               s5 << r8
2358:             end
2359:             if s5.last
2360:               r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2361:               r5.extend(QuotedString0)
2362:             else
2363:               @index = i5
2364:               r5 = nil
2365:             end
2366:             if r5
2367:               s4 << r5
2368:             else
2369:               break
2370:             end
2371:           end
2372:           if s4.empty?
2373:             @index = i4
2374:             r4 = nil
2375:           else
2376:             r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2377:           end
2378:           s0 << r4
2379:           if r4
2380:             r10 = _nt_FWS
2381:             if r10
2382:               r9 = r10
2383:             else
2384:               r9 = instantiate_node(SyntaxNode,input, index...index)
2385:             end
2386:             s0 << r9
2387:             if r9
2388:               r11 = _nt_DQUOTE
2389:               s0 << r11
2390:               if r11
2391:                 r13 = _nt_CFWS
2392:                 if r13
2393:                   r12 = r13
2394:                 else
2395:                   r12 = instantiate_node(SyntaxNode,input, index...index)
2396:                 end
2397:                 s0 << r12
2398:               end
2399:             end
2400:           end
2401:         end
2402:       end
2403:       if s0.last
2404:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2405:         r0.extend(QuotedString1)
2406:       else
2407:         @index = i0
2408:         r0 = nil
2409:       end
2410: 
2411:       node_cache[:quoted_string][start_index] = r0
2412: 
2413:       r0
2414:     end
_nt_received() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4161
4161:     def _nt_received
4162:       start_index = index
4163:       if node_cache[:received].has_key?(index)
4164:         cached = node_cache[:received][index]
4165:         if cached
4166:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4167:           @index = cached.interval.end
4168:         end
4169:         return cached
4170:       end
4171: 
4172:       i0, s0 = index, []
4173:       r1 = _nt_name_val_list
4174:       s0 << r1
4175:       if r1
4176:         if has_terminal?(";", false, index)
4177:           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
4178:           @index += 1
4179:         else
4180:           terminal_parse_failure(";")
4181:           r2 = nil
4182:         end
4183:         s0 << r2
4184:         if r2
4185:           r3 = _nt_date_time
4186:           s0 << r3
4187:           if r3
4188:             r4 = _nt_CRLF
4189:             s0 << r4
4190:           end
4191:         end
4192:       end
4193:       if s0.last
4194:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4195:         r0.extend(Received0)
4196:       else
4197:         @index = i0
4198:         r0 = nil
4199:       end
4200: 
4201:       node_cache[:received][start_index] = r0
4202: 
4203:       r0
4204:     end
_nt_return() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4019
4019:     def _nt_return
4020:       start_index = index
4021:       if node_cache[:return].has_key?(index)
4022:         cached = node_cache[:return][index]
4023:         if cached
4024:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4025:           @index = cached.interval.end
4026:         end
4027:         return cached
4028:       end
4029: 
4030:       i0, s0 = index, []
4031:       r1 = _nt_path
4032:       s0 << r1
4033:       if r1
4034:         r2 = _nt_CRLF
4035:         s0 << r2
4036:       end
4037:       if s0.last
4038:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4039:         r0.extend(Return0)
4040:       else
4041:         @index = i0
4042:         r0 = nil
4043:       end
4044: 
4045:       node_cache[:return][start_index] = r0
4046: 
4047:       r0
4048:     end
_nt_second() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3869
3869:     def _nt_second
3870:       start_index = index
3871:       if node_cache[:second].has_key?(index)
3872:         cached = node_cache[:second][index]
3873:         if cached
3874:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3875:           @index = cached.interval.end
3876:         end
3877:         return cached
3878:       end
3879: 
3880:       i0 = index
3881:       i1, s1 = index, []
3882:       r2 = _nt_DIGIT
3883:       s1 << r2
3884:       if r2
3885:         r3 = _nt_DIGIT
3886:         s1 << r3
3887:       end
3888:       if s1.last
3889:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3890:         r1.extend(Second0)
3891:       else
3892:         @index = i1
3893:         r1 = nil
3894:       end
3895:       if r1
3896:         r0 = r1
3897:       else
3898:         r4 = _nt_obs_second
3899:         if r4
3900:           r0 = r4
3901:         else
3902:           @index = i0
3903:           r0 = nil
3904:         end
3905:       end
3906: 
3907:       node_cache[:second][start_index] = r0
3908: 
3909:       r0
3910:     end
_nt_specials() click to toggle source
     # File lib/mail/parsers/rfc2822.rb, line 431
431:     def _nt_specials
432:       start_index = index
433:       if node_cache[:specials].has_key?(index)
434:         cached = node_cache[:specials][index]
435:         if cached
436:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
437:           @index = cached.interval.end
438:         end
439:         return cached
440:       end
441: 
442:       i0 = index
443:       if has_terminal?("(", false, index)
444:         r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
445:         @index += 1
446:       else
447:         terminal_parse_failure("(")
448:         r1 = nil
449:       end
450:       if r1
451:         r0 = r1
452:       else
453:         if has_terminal?(")", false, index)
454:           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
455:           @index += 1
456:         else
457:           terminal_parse_failure(")")
458:           r2 = nil
459:         end
460:         if r2
461:           r0 = r2
462:         else
463:           if has_terminal?("<", false, index)
464:             r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
465:             @index += 1
466:           else
467:             terminal_parse_failure("<")
468:             r3 = nil
469:           end
470:           if r3
471:             r0 = r3
472:           else
473:             if has_terminal?(">", false, index)
474:               r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
475:               @index += 1
476:             else
477:               terminal_parse_failure(">")
478:               r4 = nil
479:             end
480:             if r4
481:               r0 = r4
482:             else
483:               if has_terminal?("[", false, index)
484:                 r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
485:                 @index += 1
486:               else
487:                 terminal_parse_failure("[")
488:                 r5 = nil
489:               end
490:               if r5
491:                 r0 = r5
492:               else
493:                 if has_terminal?("]", false, index)
494:                   r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
495:                   @index += 1
496:                 else
497:                   terminal_parse_failure("]")
498:                   r6 = nil
499:                 end
500:                 if r6
501:                   r0 = r6
502:                 else
503:                   if has_terminal?(":", false, index)
504:                     r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
505:                     @index += 1
506:                   else
507:                     terminal_parse_failure(":")
508:                     r7 = nil
509:                   end
510:                   if r7
511:                     r0 = r7
512:                   else
513:                     if has_terminal?(";", false, index)
514:                       r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
515:                       @index += 1
516:                     else
517:                       terminal_parse_failure(";")
518:                       r8 = nil
519:                     end
520:                     if r8
521:                       r0 = r8
522:                     else
523:                       if has_terminal?("@", false, index)
524:                         r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
525:                         @index += 1
526:                       else
527:                         terminal_parse_failure("@")
528:                         r9 = nil
529:                       end
530:                       if r9
531:                         r0 = r9
532:                       else
533:                         if has_terminal?('\', false, index)
534:                           r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
535:                           @index += 1
536:                         else
537:                           terminal_parse_failure('\')
538:                           r10 = nil
539:                         end
540:                         if r10
541:                           r0 = r10
542:                         else
543:                           if has_terminal?(",", false, index)
544:                             r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
545:                             @index += 1
546:                           else
547:                             terminal_parse_failure(",")
548:                             r11 = nil
549:                           end
550:                           if r11
551:                             r0 = r11
552:                           else
553:                             if has_terminal?(".", false, index)
554:                               r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
555:                               @index += 1
556:                             else
557:                               terminal_parse_failure(".")
558:                               r12 = nil
559:                             end
560:                             if r12
561:                               r0 = r12
562:                             else
563:                               r13 = _nt_DQUOTE
564:                               if r13
565:                                 r0 = r13
566:                               else
567:                                 @index = i0
568:                                 r0 = nil
569:                               end
570:                             end
571:                           end
572:                         end
573:                       end
574:                     end
575:                   end
576:                 end
577:               end
578:             end
579:           end
580:         end
581:       end
582: 
583:       node_cache[:specials][start_index] = r0
584: 
585:       r0
586:     end
_nt_text() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2556
2556:     def _nt_text
2557:       start_index = index
2558:       if node_cache[:text].has_key?(index)
2559:         cached = node_cache[:text][index]
2560:         if cached
2561:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2562:           @index = cached.interval.end
2563:         end
2564:         return cached
2565:       end
2566: 
2567:       i0 = index
2568:       if has_terminal?('\G[\x01-\x09]', true, index)
2569:         r1 = true
2570:         @index += 1
2571:       else
2572:         r1 = nil
2573:       end
2574:       if r1
2575:         r0 = r1
2576:       else
2577:         if has_terminal?('\G[\x0b-\x0c]', true, index)
2578:           r2 = true
2579:           @index += 1
2580:         else
2581:           r2 = nil
2582:         end
2583:         if r2
2584:           r0 = r2
2585:         else
2586:           if has_terminal?('\G[\x0e-\x7e]', true, index)
2587:             r3 = true
2588:             @index += 1
2589:           else
2590:             r3 = nil
2591:           end
2592:           if r3
2593:             r0 = r3
2594:           else
2595:             r4 = _nt_obs_text
2596:             if r4
2597:               r0 = r4
2598:             else
2599:               @index = i0
2600:               r0 = nil
2601:             end
2602:           end
2603:         end
2604:       end
2605: 
2606:       node_cache[:text][start_index] = r0
2607: 
2608:       r0
2609:     end
_nt_time() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3632
3632:     def _nt_time
3633:       start_index = index
3634:       if node_cache[:time].has_key?(index)
3635:         cached = node_cache[:time][index]
3636:         if cached
3637:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3638:           @index = cached.interval.end
3639:         end
3640:         return cached
3641:       end
3642: 
3643:       i0, s0 = index, []
3644:       r1 = _nt_time_of_day
3645:       s0 << r1
3646:       if r1
3647:         r2 = _nt_FWS
3648:         s0 << r2
3649:         if r2
3650:           r3 = _nt_zone
3651:           s0 << r3
3652:         end
3653:       end
3654:       if s0.last
3655:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3656:         r0.extend(Time0)
3657:       else
3658:         @index = i0
3659:         r0 = nil
3660:       end
3661: 
3662:       node_cache[:time][start_index] = r0
3663: 
3664:       r0
3665:     end
_nt_time_of_day() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3684
3684:     def _nt_time_of_day
3685:       start_index = index
3686:       if node_cache[:time_of_day].has_key?(index)
3687:         cached = node_cache[:time_of_day][index]
3688:         if cached
3689:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3690:           @index = cached.interval.end
3691:         end
3692:         return cached
3693:       end
3694: 
3695:       i0, s0 = index, []
3696:       r1 = _nt_hour
3697:       s0 << r1
3698:       if r1
3699:         if has_terminal?(":", false, index)
3700:           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3701:           @index += 1
3702:         else
3703:           terminal_parse_failure(":")
3704:           r2 = nil
3705:         end
3706:         s0 << r2
3707:         if r2
3708:           r3 = _nt_minute
3709:           s0 << r3
3710:           if r3
3711:             i5, s5 = index, []
3712:             if has_terminal?(":", false, index)
3713:               r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
3714:               @index += 1
3715:             else
3716:               terminal_parse_failure(":")
3717:               r6 = nil
3718:             end
3719:             s5 << r6
3720:             if r6
3721:               r7 = _nt_second
3722:               s5 << r7
3723:             end
3724:             if s5.last
3725:               r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3726:               r5.extend(TimeOfDay0)
3727:             else
3728:               @index = i5
3729:               r5 = nil
3730:             end
3731:             if r5
3732:               r4 = r5
3733:             else
3734:               r4 = instantiate_node(SyntaxNode,input, index...index)
3735:             end
3736:             s0 << r4
3737:           end
3738:         end
3739:       end
3740:       if s0.last
3741:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3742:         r0.extend(TimeOfDay1)
3743:       else
3744:         @index = i0
3745:         r0 = nil
3746:       end
3747: 
3748:       node_cache[:time_of_day][start_index] = r0
3749: 
3750:       r0
3751:     end
_nt_word() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 1668
1668:     def _nt_word
1669:       start_index = index
1670:       if node_cache[:word].has_key?(index)
1671:         cached = node_cache[:word][index]
1672:         if cached
1673:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1674:           @index = cached.interval.end
1675:         end
1676:         return cached
1677:       end
1678: 
1679:       i0 = index
1680:       r1 = _nt_atom
1681:       if r1
1682:         r0 = r1
1683:       else
1684:         r2 = _nt_quoted_string
1685:         if r2
1686:           r0 = r2
1687:         else
1688:           @index = i0
1689:           r0 = nil
1690:         end
1691:       end
1692: 
1693:       node_cache[:word][start_index] = r0
1694: 
1695:       r0
1696:     end
_nt_year() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3290
3290:     def _nt_year
3291:       start_index = index
3292:       if node_cache[:year].has_key?(index)
3293:         cached = node_cache[:year][index]
3294:         if cached
3295:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3296:           @index = cached.interval.end
3297:         end
3298:         return cached
3299:       end
3300: 
3301:       i0 = index
3302:       i1, s1 = index, []
3303:       r2 = _nt_DIGIT
3304:       s1 << r2
3305:       if r2
3306:         r3 = _nt_DIGIT
3307:         s1 << r3
3308:         if r3
3309:           r4 = _nt_DIGIT
3310:           s1 << r4
3311:           if r4
3312:             r5 = _nt_DIGIT
3313:             s1 << r5
3314:           end
3315:         end
3316:       end
3317:       if s1.last
3318:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3319:         r1.extend(Year0)
3320:       else
3321:         @index = i1
3322:         r1 = nil
3323:       end
3324:       if r1
3325:         r0 = r1
3326:       else
3327:         r6 = _nt_obs_year
3328:         if r6
3329:           r0 = r6
3330:         else
3331:           @index = i0
3332:           r0 = nil
3333:         end
3334:       end
3335: 
3336:       node_cache[:year][start_index] = r0
3337: 
3338:       r0
3339:     end
_nt_zone() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3930
3930:     def _nt_zone
3931:       start_index = index
3932:       if node_cache[:zone].has_key?(index)
3933:         cached = node_cache[:zone][index]
3934:         if cached
3935:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3936:           @index = cached.interval.end
3937:         end
3938:         return cached
3939:       end
3940: 
3941:       i0 = index
3942:       i1, s1 = index, []
3943:       i2 = index
3944:       if has_terminal?("+", false, index)
3945:         r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
3946:         @index += 1
3947:       else
3948:         terminal_parse_failure("+")
3949:         r3 = nil
3950:       end
3951:       if r3
3952:         r2 = r3
3953:       else
3954:         if has_terminal?("-", false, index)
3955:           r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3956:           @index += 1
3957:         else
3958:           terminal_parse_failure("-")
3959:           r4 = nil
3960:         end
3961:         if r4
3962:           r2 = r4
3963:         else
3964:           @index = i2
3965:           r2 = nil
3966:         end
3967:       end
3968:       s1 << r2
3969:       if r2
3970:         r5 = _nt_DIGIT
3971:         s1 << r5
3972:         if r5
3973:           r6 = _nt_DIGIT
3974:           s1 << r6
3975:           if r6
3976:             r7 = _nt_DIGIT
3977:             s1 << r7
3978:             if r7
3979:               r8 = _nt_DIGIT
3980:               s1 << r8
3981:             end
3982:           end
3983:         end
3984:       end
3985:       if s1.last
3986:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3987:         r1.extend(Zone0)
3988:       else
3989:         @index = i1
3990:         r1 = nil
3991:       end
3992:       if r1
3993:         r0 = r1
3994:       else
3995:         r9 = _nt_obs_zone
3996:         if r9
3997:           r0 = r9
3998:         else
3999:           @index = i0
4000:           r0 = nil
4001:         end
4002:       end
4003: 
4004:       node_cache[:zone][start_index] = r0
4005: 
4006:       r0
4007:     end
root() click to toggle source
    # File lib/mail/parsers/rfc2822.rb, line 8
 8:     def root
 9:       @root ||= :ALPHA
10:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.