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:       r1 = _nt_address
2896:       s0 << r1
2897:       if r1
2898:         s2, i2 = [], index
2899:         loop do
2900:           i3, s3 = index, []
2901:           if has_terminal?(",", false, index)
2902:             r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2903:             @index += 1
2904:           else
2905:             terminal_parse_failure(",")
2906:             r4 = nil
2907:           end
2908:           s3 << r4
2909:           if r4
2910:             s5, i5 = [], index
2911:             loop do
2912:               r6 = _nt_FWS
2913:               if r6
2914:                 s5 << r6
2915:               else
2916:                 break
2917:               end
2918:             end
2919:             r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2920:             s3 << r5
2921:             if r5
2922:               r7 = _nt_address
2923:               s3 << r7
2924:             end
2925:           end
2926:           if s3.last
2927:             r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2928:             r3.extend(AddressList0)
2929:           else
2930:             @index = i3
2931:             r3 = nil
2932:           end
2933:           if r3
2934:             s2 << r3
2935:           else
2936:             break
2937:           end
2938:         end
2939:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2940:         s0 << r2
2941:       end
2942:       if s0.last
2943:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2944:         r0.extend(AddressList1)
2945:       else
2946:         @index = i0
2947:         r0 = nil
2948:       end
2949: 
2950:       node_cache[:address_list][start_index] = r0
2951: 
2952:       r0
2953:     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 3214
3214:     def _nt_date
3215:       start_index = index
3216:       if node_cache[:date].has_key?(index)
3217:         cached = node_cache[:date][index]
3218:         if cached
3219:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3220:           @index = cached.interval.end
3221:         end
3222:         return cached
3223:       end
3224: 
3225:       i0, s0 = index, []
3226:       r1 = _nt_day
3227:       s0 << r1
3228:       if r1
3229:         r2 = _nt_month
3230:         s0 << r2
3231:         if r2
3232:           r3 = _nt_year
3233:           s0 << r3
3234:         end
3235:       end
3236:       if s0.last
3237:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3238:         r0.extend(Date0)
3239:       else
3240:         @index = i0
3241:         r0 = nil
3242:       end
3243: 
3244:       node_cache[:date][start_index] = r0
3245: 
3246:       r0
3247:     end
_nt_date_time() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 2977
2977:     def _nt_date_time
2978:       start_index = index
2979:       if node_cache[:date_time].has_key?(index)
2980:         cached = node_cache[:date_time][index]
2981:         if cached
2982:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2983:           @index = cached.interval.end
2984:         end
2985:         return cached
2986:       end
2987: 
2988:       i0, s0 = index, []
2989:       i2, s2 = index, []
2990:       r3 = _nt_day_of_week
2991:       s2 << r3
2992:       if r3
2993:         if has_terminal?(",", false, index)
2994:           r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2995:           @index += 1
2996:         else
2997:           terminal_parse_failure(",")
2998:           r4 = nil
2999:         end
3000:         s2 << r4
3001:       end
3002:       if s2.last
3003:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3004:         r2.extend(DateTime0)
3005:       else
3006:         @index = i2
3007:         r2 = nil
3008:       end
3009:       if r2
3010:         r1 = r2
3011:       else
3012:         r1 = instantiate_node(SyntaxNode,input, index...index)
3013:       end
3014:       s0 << r1
3015:       if r1
3016:         r5 = _nt_date
3017:         s0 << r5
3018:         if r5
3019:           r6 = _nt_FWS
3020:           s0 << r6
3021:           if r6
3022:             r7 = _nt_time
3023:             s0 << r7
3024:             if r7
3025:               r9 = _nt_CFWS
3026:               if r9
3027:                 r8 = r9
3028:               else
3029:                 r8 = instantiate_node(SyntaxNode,input, index...index)
3030:               end
3031:               s0 << r8
3032:             end
3033:           end
3034:         end
3035:       end
3036:       if s0.last
3037:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3038:         r0.extend(DateTime1)
3039:       else
3040:         @index = i0
3041:         r0 = nil
3042:       end
3043: 
3044:       node_cache[:date_time][start_index] = r0
3045: 
3046:       r0
3047:     end
_nt_day() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3538
3538:     def _nt_day
3539:       start_index = index
3540:       if node_cache[:day].has_key?(index)
3541:         cached = node_cache[:day][index]
3542:         if cached
3543:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3544:           @index = cached.interval.end
3545:         end
3546:         return cached
3547:       end
3548: 
3549:       i0 = index
3550:       i1, s1 = index, []
3551:       r3 = _nt_FWS
3552:       if r3
3553:         r2 = r3
3554:       else
3555:         r2 = instantiate_node(SyntaxNode,input, index...index)
3556:       end
3557:       s1 << r2
3558:       if r2
3559:         r4 = _nt_DIGIT
3560:         s1 << r4
3561:         if r4
3562:           r6 = _nt_DIGIT
3563:           if r6
3564:             r5 = r6
3565:           else
3566:             r5 = instantiate_node(SyntaxNode,input, index...index)
3567:           end
3568:           s1 << r5
3569:         end
3570:       end
3571:       if s1.last
3572:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3573:         r1.extend(Day0)
3574:       else
3575:         @index = i1
3576:         r1 = nil
3577:       end
3578:       if r1
3579:         r0 = r1
3580:       else
3581:         r7 = _nt_obs_day
3582:         if r7
3583:           r0 = r7
3584:         else
3585:           @index = i0
3586:           r0 = nil
3587:         end
3588:       end
3589: 
3590:       node_cache[:day][start_index] = r0
3591: 
3592:       r0
3593:     end
_nt_day_name() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3103
3103:     def _nt_day_name
3104:       start_index = index
3105:       if node_cache[:day_name].has_key?(index)
3106:         cached = node_cache[:day_name][index]
3107:         if cached
3108:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3109:           @index = cached.interval.end
3110:         end
3111:         return cached
3112:       end
3113: 
3114:       i0 = index
3115:       if has_terminal?("Mon", false, index)
3116:         r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
3117:         @index += 3
3118:       else
3119:         terminal_parse_failure("Mon")
3120:         r1 = nil
3121:       end
3122:       if r1
3123:         r0 = r1
3124:       else
3125:         if has_terminal?("Tue", false, index)
3126:           r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
3127:           @index += 3
3128:         else
3129:           terminal_parse_failure("Tue")
3130:           r2 = nil
3131:         end
3132:         if r2
3133:           r0 = r2
3134:         else
3135:           if has_terminal?("Wed", false, index)
3136:             r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
3137:             @index += 3
3138:           else
3139:             terminal_parse_failure("Wed")
3140:             r3 = nil
3141:           end
3142:           if r3
3143:             r0 = r3
3144:           else
3145:             if has_terminal?("Thu", false, index)
3146:               r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
3147:               @index += 3
3148:             else
3149:               terminal_parse_failure("Thu")
3150:               r4 = nil
3151:             end
3152:             if r4
3153:               r0 = r4
3154:             else
3155:               if has_terminal?("Fri", false, index)
3156:                 r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
3157:                 @index += 3
3158:               else
3159:                 terminal_parse_failure("Fri")
3160:                 r5 = nil
3161:               end
3162:               if r5
3163:                 r0 = r5
3164:               else
3165:                 if has_terminal?("Sat", false, index)
3166:                   r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
3167:                   @index += 3
3168:                 else
3169:                   terminal_parse_failure("Sat")
3170:                   r6 = nil
3171:                 end
3172:                 if r6
3173:                   r0 = r6
3174:                 else
3175:                   if has_terminal?("Sun", false, index)
3176:                     r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
3177:                     @index += 3
3178:                   else
3179:                     terminal_parse_failure("Sun")
3180:                     r7 = nil
3181:                   end
3182:                   if r7
3183:                     r0 = r7
3184:                   else
3185:                     @index = i0
3186:                     r0 = nil
3187:                   end
3188:                 end
3189:               end
3190:             end
3191:           end
3192:         end
3193:       end
3194: 
3195:       node_cache[:day_name][start_index] = r0
3196: 
3197:       r0
3198:     end
_nt_day_of_week() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3055
3055:     def _nt_day_of_week
3056:       start_index = index
3057:       if node_cache[:day_of_week].has_key?(index)
3058:         cached = node_cache[:day_of_week][index]
3059:         if cached
3060:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3061:           @index = cached.interval.end
3062:         end
3063:         return cached
3064:       end
3065: 
3066:       i0 = index
3067:       i1, s1 = index, []
3068:       r3 = _nt_FWS
3069:       if r3
3070:         r2 = r3
3071:       else
3072:         r2 = instantiate_node(SyntaxNode,input, index...index)
3073:       end
3074:       s1 << r2
3075:       if r2
3076:         r4 = _nt_day_name
3077:         s1 << r4
3078:       end
3079:       if s1.last
3080:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3081:         r1.extend(DayOfWeek0)
3082:       else
3083:         @index = i1
3084:         r1 = nil
3085:       end
3086:       if r1
3087:         r0 = r1
3088:       else
3089:         r5 = _nt_obs_day_of_week
3090:         if r5
3091:           r0 = r5
3092:         else
3093:           @index = i0
3094:           r0 = nil
3095:         end
3096:       end
3097: 
3098:       node_cache[:day_of_week][start_index] = r0
3099: 
3100:       r0
3101:     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 3740
3740:     def _nt_hour
3741:       start_index = index
3742:       if node_cache[:hour].has_key?(index)
3743:         cached = node_cache[:hour][index]
3744:         if cached
3745:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3746:           @index = cached.interval.end
3747:         end
3748:         return cached
3749:       end
3750: 
3751:       i0 = index
3752:       i1, s1 = index, []
3753:       r2 = _nt_DIGIT
3754:       s1 << r2
3755:       if r2
3756:         r3 = _nt_DIGIT
3757:         s1 << r3
3758:       end
3759:       if s1.last
3760:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3761:         r1.extend(Hour0)
3762:       else
3763:         @index = i1
3764:         r1 = nil
3765:       end
3766:       if r1
3767:         r0 = r1
3768:       else
3769:         r4 = _nt_obs_hour
3770:         if r4
3771:           r0 = r4
3772:         else
3773:           @index = i0
3774:           r0 = nil
3775:         end
3776:       end
3777: 
3778:       node_cache[:hour][start_index] = r0
3779: 
3780:       r0
3781:     end
_nt_id_left() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4664
4664:     def _nt_id_left
4665:       start_index = index
4666:       if node_cache[:id_left].has_key?(index)
4667:         cached = node_cache[:id_left][index]
4668:         if cached
4669:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4670:           @index = cached.interval.end
4671:         end
4672:         return cached
4673:       end
4674: 
4675:       i0 = index
4676:       r1 = _nt_message_id_text
4677:       if r1
4678:         r0 = r1
4679:       else
4680:         r2 = _nt_no_fold_quote
4681:         if r2
4682:           r0 = r2
4683:         else
4684:           r3 = _nt_obs_id_left
4685:           if r3
4686:             r0 = r3
4687:           else
4688:             @index = i0
4689:             r0 = nil
4690:           end
4691:         end
4692:       end
4693: 
4694:       node_cache[:id_left][start_index] = r0
4695: 
4696:       r0
4697:     end
_nt_id_right() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4699
4699:     def _nt_id_right
4700:       start_index = index
4701:       if node_cache[:id_right].has_key?(index)
4702:         cached = node_cache[:id_right][index]
4703:         if cached
4704:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4705:           @index = cached.interval.end
4706:         end
4707:         return cached
4708:       end
4709: 
4710:       i0 = index
4711:       r1 = _nt_msg_id_dot_atom_text
4712:       if r1
4713:         r0 = r1
4714:       else
4715:         r2 = _nt_no_fold_literal
4716:         if r2
4717:           r0 = r2
4718:         else
4719:           r3 = _nt_obs_id_right
4720:           if r3
4721:             r0 = r3
4722:           else
4723:             @index = i0
4724:             r0 = nil
4725:           end
4726:         end
4727:       end
4728: 
4729:       node_cache[:id_right][start_index] = r0
4730: 
4731:       r0
4732:     end
_nt_item_name() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4333
4333:     def _nt_item_name
4334:       start_index = index
4335:       if node_cache[:item_name].has_key?(index)
4336:         cached = node_cache[:item_name][index]
4337:         if cached
4338:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4339:           @index = cached.interval.end
4340:         end
4341:         return cached
4342:       end
4343: 
4344:       i0, s0 = index, []
4345:       r1 = _nt_ALPHA
4346:       s0 << r1
4347:       if r1
4348:         s2, i2 = [], index
4349:         loop do
4350:           i3, s3 = index, []
4351:           if has_terminal?("-", false, index)
4352:             r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
4353:             @index += 1
4354:           else
4355:             terminal_parse_failure("-")
4356:             r5 = nil
4357:           end
4358:           if r5
4359:             r4 = r5
4360:           else
4361:             r4 = instantiate_node(SyntaxNode,input, index...index)
4362:           end
4363:           s3 << r4
4364:           if r4
4365:             i6 = index
4366:             r7 = _nt_ALPHA
4367:             if r7
4368:               r6 = r7
4369:             else
4370:               r8 = _nt_DIGIT
4371:               if r8
4372:                 r6 = r8
4373:               else
4374:                 @index = i6
4375:                 r6 = nil
4376:               end
4377:             end
4378:             s3 << r6
4379:           end
4380:           if s3.last
4381:             r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4382:             r3.extend(ItemName0)
4383:           else
4384:             @index = i3
4385:             r3 = nil
4386:           end
4387:           if r3
4388:             s2 << r3
4389:           else
4390:             break
4391:           end
4392:         end
4393:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4394:         s0 << r2
4395:       end
4396:       if s0.last
4397:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4398:         r0.extend(ItemName1)
4399:       else
4400:         @index = i0
4401:         r0 = nil
4402:       end
4403: 
4404:       node_cache[:item_name][start_index] = r0
4405: 
4406:       r0
4407:     end
_nt_item_value() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4409
4409:     def _nt_item_value
4410:       start_index = index
4411:       if node_cache[:item_value].has_key?(index)
4412:         cached = node_cache[:item_value][index]
4413:         if cached
4414:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4415:           @index = cached.interval.end
4416:         end
4417:         return cached
4418:       end
4419: 
4420:       i0 = index
4421:       s1, i1 = [], index
4422:       loop do
4423:         r2 = _nt_angle_addr
4424:         if r2
4425:           s1 << r2
4426:         else
4427:           break
4428:         end
4429:       end
4430:       if s1.empty?
4431:         @index = i1
4432:         r1 = nil
4433:       else
4434:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4435:       end
4436:       if r1
4437:         r0 = r1
4438:       else
4439:         r3 = _nt_addr_spec
4440:         if r3
4441:           r0 = r3
4442:         else
4443:           r4 = _nt_atom
4444:           if r4
4445:             r0 = r4
4446:           else
4447:             r5 = _nt_domain
4448:             if r5
4449:               r0 = r5
4450:             else
4451:               r6 = _nt_msg_id
4452:               if r6
4453:                 r0 = r6
4454:               else
4455:                 @index = i0
4456:                 r0 = nil
4457:               end
4458:             end
4459:           end
4460:         end
4461:       end
4462: 
4463:       node_cache[:item_value][start_index] = r0
4464: 
4465:       r0
4466:     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 4488
4488:     def _nt_message_ids
4489:       start_index = index
4490:       if node_cache[:message_ids].has_key?(index)
4491:         cached = node_cache[:message_ids][index]
4492:         if cached
4493:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4494:           @index = cached.interval.end
4495:         end
4496:         return cached
4497:       end
4498: 
4499:       i0, s0 = index, []
4500:       r1 = _nt_msg_id
4501:       s0 << r1
4502:       if r1
4503:         s2, i2 = [], index
4504:         loop do
4505:           i3, s3 = index, []
4506:           r4 = _nt_CFWS
4507:           s3 << r4
4508:           if r4
4509:             r5 = _nt_msg_id
4510:             s3 << r5
4511:           end
4512:           if s3.last
4513:             r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4514:             r3.extend(MessageIds0)
4515:           else
4516:             @index = i3
4517:             r3 = nil
4518:           end
4519:           if r3
4520:             s2 << r3
4521:           else
4522:             break
4523:           end
4524:         end
4525:         r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4526:         s0 << r2
4527:       end
4528:       if s0.last
4529:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4530:         r0.extend(MessageIds1)
4531:       else
4532:         @index = i0
4533:         r0 = nil
4534:       end
4535: 
4536:       node_cache[:message_ids][start_index] = r0
4537: 
4538:       r0
4539:     end
_nt_minute() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3793
3793:     def _nt_minute
3794:       start_index = index
3795:       if node_cache[:minute].has_key?(index)
3796:         cached = node_cache[:minute][index]
3797:         if cached
3798:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3799:           @index = cached.interval.end
3800:         end
3801:         return cached
3802:       end
3803: 
3804:       i0 = index
3805:       i1, s1 = index, []
3806:       r2 = _nt_DIGIT
3807:       s1 << r2
3808:       if r2
3809:         r3 = _nt_DIGIT
3810:         s1 << r3
3811:       end
3812:       if s1.last
3813:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3814:         r1.extend(Minute0)
3815:       else
3816:         @index = i1
3817:         r1 = nil
3818:       end
3819:       if r1
3820:         r0 = r1
3821:       else
3822:         r4 = _nt_obs_minute
3823:         if r4
3824:           r0 = r4
3825:         else
3826:           @index = i0
3827:           r0 = nil
3828:         end
3829:       end
3830: 
3831:       node_cache[:minute][start_index] = r0
3832: 
3833:       r0
3834:     end
_nt_month() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3332
3332:     def _nt_month
3333:       start_index = index
3334:       if node_cache[:month].has_key?(index)
3335:         cached = node_cache[:month][index]
3336:         if cached
3337:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3338:           @index = cached.interval.end
3339:         end
3340:         return cached
3341:       end
3342: 
3343:       i0 = index
3344:       i1, s1 = index, []
3345:       r2 = _nt_FWS
3346:       s1 << r2
3347:       if r2
3348:         r3 = _nt_month_name
3349:         s1 << r3
3350:         if r3
3351:           r4 = _nt_FWS
3352:           s1 << r4
3353:         end
3354:       end
3355:       if s1.last
3356:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3357:         r1.extend(Month0)
3358:       else
3359:         @index = i1
3360:         r1 = nil
3361:       end
3362:       if r1
3363:         r0 = r1
3364:       else
3365:         r5 = _nt_obs_month
3366:         if r5
3367:           r0 = r5
3368:         else
3369:           @index = i0
3370:           r0 = nil
3371:         end
3372:       end
3373: 
3374:       node_cache[:month][start_index] = r0
3375: 
3376:       r0
3377:     end
_nt_month_name() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3379
3379:     def _nt_month_name
3380:       start_index = index
3381:       if node_cache[:month_name].has_key?(index)
3382:         cached = node_cache[:month_name][index]
3383:         if cached
3384:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3385:           @index = cached.interval.end
3386:         end
3387:         return cached
3388:       end
3389: 
3390:       i0 = index
3391:       if has_terminal?("Jan", false, index)
3392:         r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
3393:         @index += 3
3394:       else
3395:         terminal_parse_failure("Jan")
3396:         r1 = nil
3397:       end
3398:       if r1
3399:         r0 = r1
3400:       else
3401:         if has_terminal?("Feb", false, index)
3402:           r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
3403:           @index += 3
3404:         else
3405:           terminal_parse_failure("Feb")
3406:           r2 = nil
3407:         end
3408:         if r2
3409:           r0 = r2
3410:         else
3411:           if has_terminal?("Mar", false, index)
3412:             r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
3413:             @index += 3
3414:           else
3415:             terminal_parse_failure("Mar")
3416:             r3 = nil
3417:           end
3418:           if r3
3419:             r0 = r3
3420:           else
3421:             if has_terminal?("Apr", false, index)
3422:               r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
3423:               @index += 3
3424:             else
3425:               terminal_parse_failure("Apr")
3426:               r4 = nil
3427:             end
3428:             if r4
3429:               r0 = r4
3430:             else
3431:               if has_terminal?("May", false, index)
3432:                 r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
3433:                 @index += 3
3434:               else
3435:                 terminal_parse_failure("May")
3436:                 r5 = nil
3437:               end
3438:               if r5
3439:                 r0 = r5
3440:               else
3441:                 if has_terminal?("Jun", false, index)
3442:                   r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
3443:                   @index += 3
3444:                 else
3445:                   terminal_parse_failure("Jun")
3446:                   r6 = nil
3447:                 end
3448:                 if r6
3449:                   r0 = r6
3450:                 else
3451:                   if has_terminal?("Jul", false, index)
3452:                     r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
3453:                     @index += 3
3454:                   else
3455:                     terminal_parse_failure("Jul")
3456:                     r7 = nil
3457:                   end
3458:                   if r7
3459:                     r0 = r7
3460:                   else
3461:                     if has_terminal?("Aug", false, index)
3462:                       r8 = instantiate_node(SyntaxNode,input, index...(index + 3))
3463:                       @index += 3
3464:                     else
3465:                       terminal_parse_failure("Aug")
3466:                       r8 = nil
3467:                     end
3468:                     if r8
3469:                       r0 = r8
3470:                     else
3471:                       if has_terminal?("Sep", false, index)
3472:                         r9 = instantiate_node(SyntaxNode,input, index...(index + 3))
3473:                         @index += 3
3474:                       else
3475:                         terminal_parse_failure("Sep")
3476:                         r9 = nil
3477:                       end
3478:                       if r9
3479:                         r0 = r9
3480:                       else
3481:                         if has_terminal?("Oct", false, index)
3482:                           r10 = instantiate_node(SyntaxNode,input, index...(index + 3))
3483:                           @index += 3
3484:                         else
3485:                           terminal_parse_failure("Oct")
3486:                           r10 = nil
3487:                         end
3488:                         if r10
3489:                           r0 = r10
3490:                         else
3491:                           if has_terminal?("Nov", false, index)
3492:                             r11 = instantiate_node(SyntaxNode,input, index...(index + 3))
3493:                             @index += 3
3494:                           else
3495:                             terminal_parse_failure("Nov")
3496:                             r11 = nil
3497:                           end
3498:                           if r11
3499:                             r0 = r11
3500:                           else
3501:                             if has_terminal?("Dec", false, index)
3502:                               r12 = instantiate_node(SyntaxNode,input, index...(index + 3))
3503:                               @index += 3
3504:                             else
3505:                               terminal_parse_failure("Dec")
3506:                               r12 = nil
3507:                             end
3508:                             if r12
3509:                               r0 = r12
3510:                             else
3511:                               @index = i0
3512:                               r0 = nil
3513:                             end
3514:                           end
3515:                         end
3516:                       end
3517:                     end
3518:                   end
3519:                 end
3520:               end
3521:             end
3522:           end
3523:         end
3524:       end
3525: 
3526:       node_cache[:month_name][start_index] = r0
3527: 
3528:       r0
3529:     end
_nt_msg_id() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4548
4548:     def _nt_msg_id
4549:       start_index = index
4550:       if node_cache[:msg_id].has_key?(index)
4551:         cached = node_cache[:msg_id][index]
4552:         if cached
4553:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4554:           @index = cached.interval.end
4555:         end
4556:         return cached
4557:       end
4558: 
4559:       i0, s0 = index, []
4560:       r2 = _nt_CFWS
4561:       if r2
4562:         r1 = r2
4563:       else
4564:         r1 = instantiate_node(SyntaxNode,input, index...index)
4565:       end
4566:       s0 << r1
4567:       if r1
4568:         if has_terminal?("<", false, index)
4569:           r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
4570:           @index += 1
4571:         else
4572:           terminal_parse_failure("<")
4573:           r3 = nil
4574:         end
4575:         s0 << r3
4576:         if r3
4577:           r4 = _nt_msg_id_value
4578:           s0 << r4
4579:           if r4
4580:             if has_terminal?(">", false, index)
4581:               r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
4582:               @index += 1
4583:             else
4584:               terminal_parse_failure(">")
4585:               r5 = nil
4586:             end
4587:             s0 << r5
4588:             if r5
4589:               r7 = _nt_CFWS
4590:               if r7
4591:                 r6 = r7
4592:               else
4593:                 r6 = instantiate_node(SyntaxNode,input, index...index)
4594:               end
4595:               s0 << r6
4596:             end
4597:           end
4598:         end
4599:       end
4600:       if s0.last
4601:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4602:         r0.extend(MsgId0)
4603:       else
4604:         @index = i0
4605:         r0 = nil
4606:       end
4607: 
4608:       node_cache[:msg_id][start_index] = r0
4609: 
4610:       r0
4611:     end
_nt_msg_id_atext() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4915
4915:     def _nt_msg_id_atext
4916:       start_index = index
4917:       if node_cache[:msg_id_atext].has_key?(index)
4918:         cached = node_cache[:msg_id_atext][index]
4919:         if cached
4920:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4921:           @index = cached.interval.end
4922:         end
4923:         return cached
4924:       end
4925: 
4926:       i0 = index
4927:       r1 = _nt_ALPHA
4928:       if r1
4929:         r0 = r1
4930:       else
4931:         r2 = _nt_DIGIT
4932:         if r2
4933:           r0 = r2
4934:         else
4935:           if has_terminal?("!", false, index)
4936:             r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
4937:             @index += 1
4938:           else
4939:             terminal_parse_failure("!")
4940:             r3 = nil
4941:           end
4942:           if r3
4943:             r0 = r3
4944:           else
4945:             if has_terminal?("#", false, index)
4946:               r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
4947:               @index += 1
4948:             else
4949:               terminal_parse_failure("#")
4950:               r4 = nil
4951:             end
4952:             if r4
4953:               r0 = r4
4954:             else
4955:               if has_terminal?("$", false, index)
4956:                 r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
4957:                 @index += 1
4958:               else
4959:                 terminal_parse_failure("$")
4960:                 r5 = nil
4961:               end
4962:               if r5
4963:                 r0 = r5
4964:               else
4965:                 if has_terminal?("%", false, index)
4966:                   r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
4967:                   @index += 1
4968:                 else
4969:                   terminal_parse_failure("%")
4970:                   r6 = nil
4971:                 end
4972:                 if r6
4973:                   r0 = r6
4974:                 else
4975:                   if has_terminal?("&", false, index)
4976:                     r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
4977:                     @index += 1
4978:                   else
4979:                     terminal_parse_failure("&")
4980:                     r7 = nil
4981:                   end
4982:                   if r7
4983:                     r0 = r7
4984:                   else
4985:                     if has_terminal?("'", false, index)
4986:                       r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
4987:                       @index += 1
4988:                     else
4989:                       terminal_parse_failure("'")
4990:                       r8 = nil
4991:                     end
4992:                     if r8
4993:                       r0 = r8
4994:                     else
4995:                       if has_terminal?("*", false, index)
4996:                         r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
4997:                         @index += 1
4998:                       else
4999:                         terminal_parse_failure("*")
5000:                         r9 = nil
5001:                       end
5002:                       if r9
5003:                         r0 = r9
5004:                       else
5005:                         if has_terminal?("+", false, index)
5006:                           r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
5007:                           @index += 1
5008:                         else
5009:                           terminal_parse_failure("+")
5010:                           r10 = nil
5011:                         end
5012:                         if r10
5013:                           r0 = r10
5014:                         else
5015:                           if has_terminal?("-", false, index)
5016:                             r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
5017:                             @index += 1
5018:                           else
5019:                             terminal_parse_failure("-")
5020:                             r11 = nil
5021:                           end
5022:                           if r11
5023:                             r0 = r11
5024:                           else
5025:                             if has_terminal?("/", false, index)
5026:                               r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
5027:                               @index += 1
5028:                             else
5029:                               terminal_parse_failure("/")
5030:                               r12 = nil
5031:                             end
5032:                             if r12
5033:                               r0 = r12
5034:                             else
5035:                               if has_terminal?("=", false, index)
5036:                                 r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
5037:                                 @index += 1
5038:                               else
5039:                                 terminal_parse_failure("=")
5040:                                 r13 = nil
5041:                               end
5042:                               if r13
5043:                                 r0 = r13
5044:                               else
5045:                                 if has_terminal?("?", false, index)
5046:                                   r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
5047:                                   @index += 1
5048:                                 else
5049:                                   terminal_parse_failure("?")
5050:                                   r14 = nil
5051:                                 end
5052:                                 if r14
5053:                                   r0 = r14
5054:                                 else
5055:                                   if has_terminal?("^", false, index)
5056:                                     r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
5057:                                     @index += 1
5058:                                   else
5059:                                     terminal_parse_failure("^")
5060:                                     r15 = nil
5061:                                   end
5062:                                   if r15
5063:                                     r0 = r15
5064:                                   else
5065:                                     if has_terminal?("_", false, index)
5066:                                       r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
5067:                                       @index += 1
5068:                                     else
5069:                                       terminal_parse_failure("_")
5070:                                       r16 = nil
5071:                                     end
5072:                                     if r16
5073:                                       r0 = r16
5074:                                     else
5075:                                       if has_terminal?("`", false, index)
5076:                                         r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
5077:                                         @index += 1
5078:                                       else
5079:                                         terminal_parse_failure("`")
5080:                                         r17 = nil
5081:                                       end
5082:                                       if r17
5083:                                         r0 = r17
5084:                                       else
5085:                                         if has_terminal?("{", false, index)
5086:                                           r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
5087:                                           @index += 1
5088:                                         else
5089:                                           terminal_parse_failure("{")
5090:                                           r18 = nil
5091:                                         end
5092:                                         if r18
5093:                                           r0 = r18
5094:                                         else
5095:                                           if has_terminal?("|", false, index)
5096:                                             r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
5097:                                             @index += 1
5098:                                           else
5099:                                             terminal_parse_failure("|")
5100:                                             r19 = nil
5101:                                           end
5102:                                           if r19
5103:                                             r0 = r19
5104:                                           else
5105:                                             if has_terminal?("}", false, index)
5106:                                               r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
5107:                                               @index += 1
5108:                                             else
5109:                                               terminal_parse_failure("}")
5110:                                               r20 = nil
5111:                                             end
5112:                                             if r20
5113:                                               r0 = r20
5114:                                             else
5115:                                               if has_terminal?("~", false, index)
5116:                                                 r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
5117:                                                 @index += 1
5118:                                               else
5119:                                                 terminal_parse_failure("~")
5120:                                                 r21 = nil
5121:                                               end
5122:                                               if r21
5123:                                                 r0 = r21
5124:                                               else
5125:                                                 if has_terminal?("@", false, index)
5126:                                                   r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
5127:                                                   @index += 1
5128:                                                 else
5129:                                                   terminal_parse_failure("@")
5130:                                                   r22 = nil
5131:                                                 end
5132:                                                 if r22
5133:                                                   r0 = r22
5134:                                                 else
5135:                                                   @index = i0
5136:                                                   r0 = nil
5137:                                                 end
5138:                                               end
5139:                                             end
5140:                                           end
5141:                                         end
5142:                                       end
5143:                                     end
5144:                                   end
5145:                                 end
5146:                               end
5147:                             end
5148:                           end
5149:                         end
5150:                       end
5151:                     end
5152:                   end
5153:                 end
5154:               end
5155:             end
5156:           end
5157:         end
5158:       end
5159: 
5160:       node_cache[:msg_id_atext][start_index] = r0
5161: 
5162:       r0
5163:     end
_nt_msg_id_domain_text() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4813
4813:     def _nt_msg_id_domain_text
4814:       start_index = index
4815:       if node_cache[:msg_id_domain_text].has_key?(index)
4816:         cached = node_cache[:msg_id_domain_text][index]
4817:         if cached
4818:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4819:           @index = cached.interval.end
4820:         end
4821:         return cached
4822:       end
4823: 
4824:       i0 = index
4825:       i1, s1 = index, []
4826:       r2 = _nt_DQUOTE
4827:       s1 << r2
4828:       if r2
4829:         s3, i3 = [], index
4830:         loop do
4831:           i4, s4 = index, []
4832:           r6 = _nt_FWS
4833:           if r6
4834:             r5 = r6
4835:           else
4836:             r5 = instantiate_node(SyntaxNode,input, index...index)
4837:           end
4838:           s4 << r5
4839:           if r5
4840:             r7 = _nt_quoted_domain
4841:             s4 << r7
4842:           end
4843:           if s4.last
4844:             r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
4845:             r4.extend(MsgIdDomainText0)
4846:           else
4847:             @index = i4
4848:             r4 = nil
4849:           end
4850:           if r4
4851:             s3 << r4
4852:           else
4853:             break
4854:           end
4855:         end
4856:         if s3.empty?
4857:           @index = i3
4858:           r3 = nil
4859:         else
4860:           r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4861:         end
4862:         s1 << r3
4863:         if r3
4864:           r9 = _nt_FWS
4865:           if r9
4866:             r8 = r9
4867:           else
4868:             r8 = instantiate_node(SyntaxNode,input, index...index)
4869:           end
4870:           s1 << r8
4871:           if r8
4872:             r10 = _nt_DQUOTE
4873:             s1 << r10
4874:           end
4875:         end
4876:       end
4877:       if s1.last
4878:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4879:         r1.extend(MsgIdDomainText1)
4880:       else
4881:         @index = i1
4882:         r1 = nil
4883:       end
4884:       if r1
4885:         r0 = r1
4886:       else
4887:         s11, i11 = [], index
4888:         loop do
4889:           r12 = _nt_msg_id_atext
4890:           if r12
4891:             s11 << r12
4892:           else
4893:             break
4894:           end
4895:         end
4896:         if s11.empty?
4897:           @index = i11
4898:           r11 = nil
4899:         else
4900:           r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
4901:         end
4902:         if r11
4903:           r0 = r11
4904:         else
4905:           @index = i0
4906:           r0 = nil
4907:         end
4908:       end
4909: 
4910:       node_cache[:msg_id_domain_text][start_index] = r0
4911: 
4912:       r0
4913:     end
_nt_msg_id_dot_atom_text() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4741
4741:     def _nt_msg_id_dot_atom_text
4742:       start_index = index
4743:       if node_cache[:msg_id_dot_atom_text].has_key?(index)
4744:         cached = node_cache[:msg_id_dot_atom_text][index]
4745:         if cached
4746:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4747:           @index = cached.interval.end
4748:         end
4749:         return cached
4750:       end
4751: 
4752:       s0, i0 = [], index
4753:       loop do
4754:         i1, s1 = index, []
4755:         r2 = _nt_msg_id_domain_text
4756:         s1 << r2
4757:         if r2
4758:           if has_terminal?(".", false, index)
4759:             r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
4760:             @index += 1
4761:           else
4762:             terminal_parse_failure(".")
4763:             r4 = nil
4764:           end
4765:           if r4
4766:             r3 = r4
4767:           else
4768:             r3 = instantiate_node(SyntaxNode,input, index...index)
4769:           end
4770:           s1 << r3
4771:         end
4772:         if s1.last
4773:           r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4774:           r1.extend(MsgIdDotAtomText0)
4775:         else
4776:           @index = i1
4777:           r1 = nil
4778:         end
4779:         if r1
4780:           s0 << r1
4781:         else
4782:           break
4783:         end
4784:       end
4785:       if s0.empty?
4786:         @index = i0
4787:         r0 = nil
4788:       else
4789:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4790:       end
4791: 
4792:       node_cache[:msg_id_dot_atom_text][start_index] = r0
4793: 
4794:       r0
4795:     end
_nt_msg_id_value() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4623
4623:     def _nt_msg_id_value
4624:       start_index = index
4625:       if node_cache[:msg_id_value].has_key?(index)
4626:         cached = node_cache[:msg_id_value][index]
4627:         if cached
4628:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4629:           @index = cached.interval.end
4630:         end
4631:         return cached
4632:       end
4633: 
4634:       i0, s0 = index, []
4635:       r1 = _nt_id_left
4636:       s0 << r1
4637:       if r1
4638:         if has_terminal?("@", false, index)
4639:           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
4640:           @index += 1
4641:         else
4642:           terminal_parse_failure("@")
4643:           r2 = nil
4644:         end
4645:         s0 << r2
4646:         if r2
4647:           r3 = _nt_id_right
4648:           s0 << r3
4649:         end
4650:       end
4651:       if s0.last
4652:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4653:         r0.extend(MsgIdValue0)
4654:       else
4655:         @index = i0
4656:         r0 = nil
4657:       end
4658: 
4659:       node_cache[:msg_id_value][start_index] = r0
4660: 
4661:       r0
4662:     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 4203
4203:     def _nt_name_val_list
4204:       start_index = index
4205:       if node_cache[:name_val_list].has_key?(index)
4206:         cached = node_cache[:name_val_list][index]
4207:         if cached
4208:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4209:           @index = cached.interval.end
4210:         end
4211:         return cached
4212:       end
4213: 
4214:       i0, s0 = index, []
4215:       r2 = _nt_CFWS
4216:       if r2
4217:         r1 = r2
4218:       else
4219:         r1 = instantiate_node(SyntaxNode,input, index...index)
4220:       end
4221:       s0 << r1
4222:       if r1
4223:         i3, s3 = index, []
4224:         r4 = _nt_name_val_pair
4225:         s3 << r4
4226:         if r4
4227:           s5, i5 = [], index
4228:           loop do
4229:             i6, s6 = index, []
4230:             r7 = _nt_CFWS
4231:             s6 << r7
4232:             if r7
4233:               r8 = _nt_name_val_pair
4234:               s6 << r8
4235:             end
4236:             if s6.last
4237:               r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
4238:               r6.extend(NameValList0)
4239:             else
4240:               @index = i6
4241:               r6 = nil
4242:             end
4243:             if r6
4244:               s5 << r6
4245:             else
4246:               break
4247:             end
4248:           end
4249:           r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
4250:           s3 << r5
4251:         end
4252:         if s3.last
4253:           r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4254:           r3.extend(NameValList1)
4255:         else
4256:           @index = i3
4257:           r3 = nil
4258:         end
4259:         s0 << r3
4260:       end
4261:       if s0.last
4262:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4263:         r0.extend(NameValList2)
4264:       else
4265:         @index = i0
4266:         r0 = nil
4267:       end
4268: 
4269:       node_cache[:name_val_list][start_index] = r0
4270: 
4271:       r0
4272:     end
_nt_name_val_pair() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4288
4288:     def _nt_name_val_pair
4289:       start_index = index
4290:       if node_cache[:name_val_pair].has_key?(index)
4291:         cached = node_cache[:name_val_pair][index]
4292:         if cached
4293:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4294:           @index = cached.interval.end
4295:         end
4296:         return cached
4297:       end
4298: 
4299:       i0, s0 = index, []
4300:       r1 = _nt_item_name
4301:       s0 << r1
4302:       if r1
4303:         r2 = _nt_CFWS
4304:         s0 << r2
4305:         if r2
4306:           r3 = _nt_item_value
4307:           s0 << r3
4308:         end
4309:       end
4310:       if s0.last
4311:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4312:         r0.extend(NameValPair0)
4313:       else
4314:         @index = i0
4315:         r0 = nil
4316:       end
4317: 
4318:       node_cache[:name_val_pair][start_index] = r0
4319: 
4320:       r0
4321:     end
_nt_no_fold_literal() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 5239
5239:     def _nt_no_fold_literal
5240:       start_index = index
5241:       if node_cache[:no_fold_literal].has_key?(index)
5242:         cached = node_cache[:no_fold_literal][index]
5243:         if cached
5244:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
5245:           @index = cached.interval.end
5246:         end
5247:         return cached
5248:       end
5249: 
5250:       i0, s0 = index, []
5251:       if has_terminal?("[", false, index)
5252:         r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
5253:         @index += 1
5254:       else
5255:         terminal_parse_failure("[")
5256:         r1 = nil
5257:       end
5258:       s0 << r1
5259:       if r1
5260:         s2, i2 = [], index
5261:         loop do
5262:           i3 = index
5263:           r4 = _nt_dtext
5264:           if r4
5265:             r3 = r4
5266:           else
5267:             r5 = _nt_quoted_pair
5268:             if r5
5269:               r3 = r5
5270:             else
5271:               @index = i3
5272:               r3 = nil
5273:             end
5274:           end
5275:           if r3
5276:             s2 << r3
5277:           else
5278:             break
5279:           end
5280:         end
5281:         if s2.empty?
5282:           @index = i2
5283:           r2 = nil
5284:         else
5285:           r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
5286:         end
5287:         s0 << r2
5288:         if r2
5289:           if has_terminal?("]", false, index)
5290:             r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
5291:             @index += 1
5292:           else
5293:             terminal_parse_failure("]")
5294:             r6 = nil
5295:           end
5296:           s0 << r6
5297:         end
5298:       end
5299:       if s0.last
5300:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
5301:         r0.extend(NoFoldLiteral0)
5302:       else
5303:         @index = i0
5304:         r0 = nil
5305:       end
5306: 
5307:       node_cache[:no_fold_literal][start_index] = r0
5308: 
5309:       r0
5310:     end
_nt_no_fold_quote() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 5175
5175:     def _nt_no_fold_quote
5176:       start_index = index
5177:       if node_cache[:no_fold_quote].has_key?(index)
5178:         cached = node_cache[:no_fold_quote][index]
5179:         if cached
5180:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
5181:           @index = cached.interval.end
5182:         end
5183:         return cached
5184:       end
5185: 
5186:       i0, s0 = index, []
5187:       r1 = _nt_DQUOTE
5188:       s0 << r1
5189:       if r1
5190:         s2, i2 = [], index
5191:         loop do
5192:           i3 = index
5193:           r4 = _nt_qtext
5194:           if r4
5195:             r3 = r4
5196:           else
5197:             r5 = _nt_quoted_pair
5198:             if r5
5199:               r3 = r5
5200:             else
5201:               @index = i3
5202:               r3 = nil
5203:             end
5204:           end
5205:           if r3
5206:             s2 << r3
5207:           else
5208:             break
5209:           end
5210:         end
5211:         if s2.empty?
5212:           @index = i2
5213:           r2 = nil
5214:         else
5215:           r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
5216:         end
5217:         s0 << r2
5218:         if r2
5219:           r6 = _nt_DQUOTE
5220:           s0 << r6
5221:         end
5222:       end
5223:       if s0.last
5224:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
5225:         r0.extend(NoFoldQuote0)
5226:       else
5227:         @index = i0
5228:         r0 = nil
5229:       end
5230: 
5231:       node_cache[:no_fold_quote][start_index] = r0
5232: 
5233:       r0
5234:     end
_nt_path() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 4030
4030:     def _nt_path
4031:       start_index = index
4032:       if node_cache[:path].has_key?(index)
4033:         cached = node_cache[:path][index]
4034:         if cached
4035:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4036:           @index = cached.interval.end
4037:         end
4038:         return cached
4039:       end
4040: 
4041:       i0 = index
4042:       i1, s1 = index, []
4043:       r3 = _nt_CFWS
4044:       if r3
4045:         r2 = r3
4046:       else
4047:         r2 = instantiate_node(SyntaxNode,input, index...index)
4048:       end
4049:       s1 << r2
4050:       if r2
4051:         if has_terminal?("<", false, index)
4052:           r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
4053:           @index += 1
4054:         else
4055:           terminal_parse_failure("<")
4056:           r4 = nil
4057:         end
4058:         s1 << r4
4059:         if r4
4060:           i5 = index
4061:           r7 = _nt_CFWS
4062:           if r7
4063:             r6 = r7
4064:           else
4065:             r6 = instantiate_node(SyntaxNode,input, index...index)
4066:           end
4067:           if r6
4068:             r5 = r6
4069:           else
4070:             r8 = _nt_addr_spec
4071:             if r8
4072:               r5 = r8
4073:             else
4074:               @index = i5
4075:               r5 = nil
4076:             end
4077:           end
4078:           s1 << r5
4079:           if r5
4080:             if has_terminal?(">", false, index)
4081:               r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
4082:               @index += 1
4083:             else
4084:               terminal_parse_failure(">")
4085:               r9 = nil
4086:             end
4087:             s1 << r9
4088:             if r9
4089:               r11 = _nt_CFWS
4090:               if r11
4091:                 r10 = r11
4092:               else
4093:                 r10 = instantiate_node(SyntaxNode,input, index...index)
4094:               end
4095:               s1 << r10
4096:             end
4097:           end
4098:         end
4099:       end
4100:       if s1.last
4101:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4102:         r1.extend(Path0)
4103:       else
4104:         @index = i1
4105:         r1 = nil
4106:       end
4107:       if r1
4108:         r0 = r1
4109:       else
4110:         r12 = _nt_obs_path
4111:         if r12
4112:           r0 = r12
4113:         else
4114:           @index = i0
4115:           r0 = nil
4116:         end
4117:       end
4118: 
4119:       node_cache[:path][start_index] = r0
4120: 
4121:       r0
4122:     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 4138
4138:     def _nt_received
4139:       start_index = index
4140:       if node_cache[:received].has_key?(index)
4141:         cached = node_cache[:received][index]
4142:         if cached
4143:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4144:           @index = cached.interval.end
4145:         end
4146:         return cached
4147:       end
4148: 
4149:       i0, s0 = index, []
4150:       r1 = _nt_name_val_list
4151:       s0 << r1
4152:       if r1
4153:         if has_terminal?(";", false, index)
4154:           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
4155:           @index += 1
4156:         else
4157:           terminal_parse_failure(";")
4158:           r2 = nil
4159:         end
4160:         s0 << r2
4161:         if r2
4162:           r3 = _nt_date_time
4163:           s0 << r3
4164:           if r3
4165:             r4 = _nt_CRLF
4166:             s0 << r4
4167:           end
4168:         end
4169:       end
4170:       if s0.last
4171:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4172:         r0.extend(Received0)
4173:       else
4174:         @index = i0
4175:         r0 = nil
4176:       end
4177: 
4178:       node_cache[:received][start_index] = r0
4179: 
4180:       r0
4181:     end
_nt_return() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3996
3996:     def _nt_return
3997:       start_index = index
3998:       if node_cache[:return].has_key?(index)
3999:         cached = node_cache[:return][index]
4000:         if cached
4001:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4002:           @index = cached.interval.end
4003:         end
4004:         return cached
4005:       end
4006: 
4007:       i0, s0 = index, []
4008:       r1 = _nt_path
4009:       s0 << r1
4010:       if r1
4011:         r2 = _nt_CRLF
4012:         s0 << r2
4013:       end
4014:       if s0.last
4015:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4016:         r0.extend(Return0)
4017:       else
4018:         @index = i0
4019:         r0 = nil
4020:       end
4021: 
4022:       node_cache[:return][start_index] = r0
4023: 
4024:       r0
4025:     end
_nt_second() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3846
3846:     def _nt_second
3847:       start_index = index
3848:       if node_cache[:second].has_key?(index)
3849:         cached = node_cache[:second][index]
3850:         if cached
3851:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3852:           @index = cached.interval.end
3853:         end
3854:         return cached
3855:       end
3856: 
3857:       i0 = index
3858:       i1, s1 = index, []
3859:       r2 = _nt_DIGIT
3860:       s1 << r2
3861:       if r2
3862:         r3 = _nt_DIGIT
3863:         s1 << r3
3864:       end
3865:       if s1.last
3866:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3867:         r1.extend(Second0)
3868:       else
3869:         @index = i1
3870:         r1 = nil
3871:       end
3872:       if r1
3873:         r0 = r1
3874:       else
3875:         r4 = _nt_obs_second
3876:         if r4
3877:           r0 = r4
3878:         else
3879:           @index = i0
3880:           r0 = nil
3881:         end
3882:       end
3883: 
3884:       node_cache[:second][start_index] = r0
3885: 
3886:       r0
3887:     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 3609
3609:     def _nt_time
3610:       start_index = index
3611:       if node_cache[:time].has_key?(index)
3612:         cached = node_cache[:time][index]
3613:         if cached
3614:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3615:           @index = cached.interval.end
3616:         end
3617:         return cached
3618:       end
3619: 
3620:       i0, s0 = index, []
3621:       r1 = _nt_time_of_day
3622:       s0 << r1
3623:       if r1
3624:         r2 = _nt_FWS
3625:         s0 << r2
3626:         if r2
3627:           r3 = _nt_zone
3628:           s0 << r3
3629:         end
3630:       end
3631:       if s0.last
3632:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3633:         r0.extend(Time0)
3634:       else
3635:         @index = i0
3636:         r0 = nil
3637:       end
3638: 
3639:       node_cache[:time][start_index] = r0
3640: 
3641:       r0
3642:     end
_nt_time_of_day() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3661
3661:     def _nt_time_of_day
3662:       start_index = index
3663:       if node_cache[:time_of_day].has_key?(index)
3664:         cached = node_cache[:time_of_day][index]
3665:         if cached
3666:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3667:           @index = cached.interval.end
3668:         end
3669:         return cached
3670:       end
3671: 
3672:       i0, s0 = index, []
3673:       r1 = _nt_hour
3674:       s0 << r1
3675:       if r1
3676:         if has_terminal?(":", false, index)
3677:           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3678:           @index += 1
3679:         else
3680:           terminal_parse_failure(":")
3681:           r2 = nil
3682:         end
3683:         s0 << r2
3684:         if r2
3685:           r3 = _nt_minute
3686:           s0 << r3
3687:           if r3
3688:             i5, s5 = index, []
3689:             if has_terminal?(":", false, index)
3690:               r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
3691:               @index += 1
3692:             else
3693:               terminal_parse_failure(":")
3694:               r6 = nil
3695:             end
3696:             s5 << r6
3697:             if r6
3698:               r7 = _nt_second
3699:               s5 << r7
3700:             end
3701:             if s5.last
3702:               r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3703:               r5.extend(TimeOfDay0)
3704:             else
3705:               @index = i5
3706:               r5 = nil
3707:             end
3708:             if r5
3709:               r4 = r5
3710:             else
3711:               r4 = instantiate_node(SyntaxNode,input, index...index)
3712:             end
3713:             s0 << r4
3714:           end
3715:         end
3716:       end
3717:       if s0.last
3718:         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3719:         r0.extend(TimeOfDay1)
3720:       else
3721:         @index = i0
3722:         r0 = nil
3723:       end
3724: 
3725:       node_cache[:time_of_day][start_index] = r0
3726: 
3727:       r0
3728:     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 3267
3267:     def _nt_year
3268:       start_index = index
3269:       if node_cache[:year].has_key?(index)
3270:         cached = node_cache[:year][index]
3271:         if cached
3272:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3273:           @index = cached.interval.end
3274:         end
3275:         return cached
3276:       end
3277: 
3278:       i0 = index
3279:       i1, s1 = index, []
3280:       r2 = _nt_DIGIT
3281:       s1 << r2
3282:       if r2
3283:         r3 = _nt_DIGIT
3284:         s1 << r3
3285:         if r3
3286:           r4 = _nt_DIGIT
3287:           s1 << r4
3288:           if r4
3289:             r5 = _nt_DIGIT
3290:             s1 << r5
3291:           end
3292:         end
3293:       end
3294:       if s1.last
3295:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3296:         r1.extend(Year0)
3297:       else
3298:         @index = i1
3299:         r1 = nil
3300:       end
3301:       if r1
3302:         r0 = r1
3303:       else
3304:         r6 = _nt_obs_year
3305:         if r6
3306:           r0 = r6
3307:         else
3308:           @index = i0
3309:           r0 = nil
3310:         end
3311:       end
3312: 
3313:       node_cache[:year][start_index] = r0
3314: 
3315:       r0
3316:     end
_nt_zone() click to toggle source
      # File lib/mail/parsers/rfc2822.rb, line 3907
3907:     def _nt_zone
3908:       start_index = index
3909:       if node_cache[:zone].has_key?(index)
3910:         cached = node_cache[:zone][index]
3911:         if cached
3912:           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3913:           @index = cached.interval.end
3914:         end
3915:         return cached
3916:       end
3917: 
3918:       i0 = index
3919:       i1, s1 = index, []
3920:       i2 = index
3921:       if has_terminal?("+", false, index)
3922:         r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
3923:         @index += 1
3924:       else
3925:         terminal_parse_failure("+")
3926:         r3 = nil
3927:       end
3928:       if r3
3929:         r2 = r3
3930:       else
3931:         if has_terminal?("-", false, index)
3932:           r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3933:           @index += 1
3934:         else
3935:           terminal_parse_failure("-")
3936:           r4 = nil
3937:         end
3938:         if r4
3939:           r2 = r4
3940:         else
3941:           @index = i2
3942:           r2 = nil
3943:         end
3944:       end
3945:       s1 << r2
3946:       if r2
3947:         r5 = _nt_DIGIT
3948:         s1 << r5
3949:         if r5
3950:           r6 = _nt_DIGIT
3951:           s1 << r6
3952:           if r6
3953:             r7 = _nt_DIGIT
3954:             s1 << r7
3955:             if r7
3956:               r8 = _nt_DIGIT
3957:               s1 << r8
3958:             end
3959:           end
3960:         end
3961:       end
3962:       if s1.last
3963:         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3964:         r1.extend(Zone0)
3965:       else
3966:         @index = i1
3967:         r1 = nil
3968:       end
3969:       if r1
3970:         r0 = r1
3971:       else
3972:         r9 = _nt_obs_zone
3973:         if r9
3974:           r0 = r9
3975:         else
3976:           @index = i0
3977:           r0 = nil
3978:         end
3979:       end
3980: 
3981:       node_cache[:zone][start_index] = r0
3982: 
3983:       r0
3984:     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.