# File lib/mail/parsers/content_type.rb, line 433
433: def _nt_attribute
434: start_index = index
435: if node_cache[:attribute].has_key?(index)
436: cached = node_cache[:attribute][index]
437: if cached
438: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
439: @index = cached.interval.end
440: end
441: return cached
442: end
443:
444: s0, i0 = [], index
445: loop do
446: r1 = _nt_token
447: if r1
448: s0 << r1
449: else
450: break
451: end
452: end
453: if s0.empty?
454: @index = i0
455: r0 = nil
456: else
457: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
458: end
459:
460: node_cache[:attribute][start_index] = r0
461:
462: r0
463: end
# File lib/mail/parsers/content_type.rb, line 249
249: def _nt_composite_type
250: start_index = index
251: if node_cache[:composite_type].has_key?(index)
252: cached = node_cache[:composite_type][index]
253: if cached
254: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
255: @index = cached.interval.end
256: end
257: return cached
258: end
259:
260: i0 = index
261: if has_terminal?("message", false, index)
262: r1 = instantiate_node(SyntaxNode,input, index...(index + 7))
263: @index += 7
264: else
265: terminal_parse_failure("message")
266: r1 = nil
267: end
268: if r1
269: r0 = r1
270: else
271: if has_terminal?("multipart", false, index)
272: r2 = instantiate_node(SyntaxNode,input, index...(index + 9))
273: @index += 9
274: else
275: terminal_parse_failure("multipart")
276: r2 = nil
277: end
278: if r2
279: r0 = r2
280: else
281: r3 = _nt_extension_token
282: if r3
283: r0 = r3
284: else
285: @index = i0
286: r0 = nil
287: end
288: end
289: end
290:
291: node_cache[:composite_type][start_index] = r0
292:
293: r0
294: end
# File lib/mail/parsers/content_type.rb, line 52
52: def _nt_content_type
53: start_index = index
54: if node_cache[:content_type].has_key?(index)
55: cached = node_cache[:content_type][index]
56: if cached
57: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
58: @index = cached.interval.end
59: end
60: return cached
61: end
62:
63: i0, s0 = index, []
64: r1 = _nt_main_type
65: s0 << r1
66: if r1
67: if has_terminal?("/", false, index)
68: r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
69: @index += 1
70: else
71: terminal_parse_failure("/")
72: r2 = nil
73: end
74: s0 << r2
75: if r2
76: r3 = _nt_sub_type
77: s0 << r3
78: if r3
79: s4, i4 = [], index
80: loop do
81: i5, s5 = index, []
82: r6 = _nt_CFWS
83: s5 << r6
84: if r6
85: if has_terminal?(";", false, index)
86: r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
87: @index += 1
88: else
89: terminal_parse_failure(";")
90: r8 = nil
91: end
92: if r8
93: r7 = r8
94: else
95: r7 = instantiate_node(SyntaxNode,input, index...index)
96: end
97: s5 << r7
98: if r7
99: r9 = _nt_parameter
100: s5 << r9
101: if r9
102: r10 = _nt_CFWS
103: s5 << r10
104: end
105: end
106: end
107: if s5.last
108: r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
109: r5.extend(ContentType0)
110: else
111: @index = i5
112: r5 = nil
113: end
114: if r5
115: s4 << r5
116: else
117: break
118: end
119: end
120: r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
121: s0 << r4
122: end
123: end
124: end
125: if s0.last
126: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
127: r0.extend(ContentType1)
128: r0.extend(ContentType2)
129: else
130: @index = i0
131: r0 = nil
132: end
133:
134: node_cache[:content_type][start_index] = r0
135:
136: r0
137: end
# File lib/mail/parsers/content_type.rb, line 169
169: def _nt_discrete_type
170: start_index = index
171: if node_cache[:discrete_type].has_key?(index)
172: cached = node_cache[:discrete_type][index]
173: if cached
174: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
175: @index = cached.interval.end
176: end
177: return cached
178: end
179:
180: i0 = index
181: if has_terminal?("text", false, index)
182: r1 = instantiate_node(SyntaxNode,input, index...(index + 4))
183: @index += 4
184: else
185: terminal_parse_failure("text")
186: r1 = nil
187: end
188: if r1
189: r0 = r1
190: else
191: if has_terminal?("image", false, index)
192: r2 = instantiate_node(SyntaxNode,input, index...(index + 5))
193: @index += 5
194: else
195: terminal_parse_failure("image")
196: r2 = nil
197: end
198: if r2
199: r0 = r2
200: else
201: if has_terminal?("audio", false, index)
202: r3 = instantiate_node(SyntaxNode,input, index...(index + 5))
203: @index += 5
204: else
205: terminal_parse_failure("audio")
206: r3 = nil
207: end
208: if r3
209: r0 = r3
210: else
211: if has_terminal?("video", false, index)
212: r4 = instantiate_node(SyntaxNode,input, index...(index + 5))
213: @index += 5
214: else
215: terminal_parse_failure("video")
216: r4 = nil
217: end
218: if r4
219: r0 = r4
220: else
221: if has_terminal?("application", false, index)
222: r5 = instantiate_node(SyntaxNode,input, index...(index + 11))
223: @index += 11
224: else
225: terminal_parse_failure("application")
226: r5 = nil
227: end
228: if r5
229: r0 = r5
230: else
231: r6 = _nt_extension_token
232: if r6
233: r0 = r6
234: else
235: @index = i0
236: r0 = nil
237: end
238: end
239: end
240: end
241: end
242: end
243:
244: node_cache[:discrete_type][start_index] = r0
245:
246: r0
247: end
# File lib/mail/parsers/content_type.rb, line 296
296: def _nt_extension_token
297: start_index = index
298: if node_cache[:extension_token].has_key?(index)
299: cached = node_cache[:extension_token][index]
300: if cached
301: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
302: @index = cached.interval.end
303: end
304: return cached
305: end
306:
307: i0 = index
308: r1 = _nt_ietf_token
309: if r1
310: r0 = r1
311: else
312: r2 = _nt_custom_x_token
313: if r2
314: r0 = r2
315: else
316: @index = i0
317: r0 = nil
318: end
319: end
320:
321: node_cache[:extension_token][start_index] = r0
322:
323: r0
324: end
# File lib/mail/parsers/content_type.rb, line 139
139: def _nt_main_type
140: start_index = index
141: if node_cache[:main_type].has_key?(index)
142: cached = node_cache[:main_type][index]
143: if cached
144: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
145: @index = cached.interval.end
146: end
147: return cached
148: end
149:
150: i0 = index
151: r1 = _nt_discrete_type
152: if r1
153: r0 = r1
154: else
155: r2 = _nt_composite_type
156: if r2
157: r0 = r2
158: else
159: @index = i0
160: r0 = nil
161: end
162: end
163:
164: node_cache[:main_type][start_index] = r0
165:
166: r0
167: end
# File lib/mail/parsers/content_type.rb, line 373
373: def _nt_parameter
374: start_index = index
375: if node_cache[:parameter].has_key?(index)
376: cached = node_cache[:parameter][index]
377: if cached
378: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
379: @index = cached.interval.end
380: end
381: return cached
382: end
383:
384: i0, s0 = index, []
385: r2 = _nt_CFWS
386: if r2
387: r1 = r2
388: else
389: r1 = instantiate_node(SyntaxNode,input, index...index)
390: end
391: s0 << r1
392: if r1
393: r3 = _nt_attribute
394: s0 << r3
395: if r3
396: if has_terminal?("=", false, index)
397: r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
398: @index += 1
399: else
400: terminal_parse_failure("=")
401: r4 = nil
402: end
403: s0 << r4
404: if r4
405: r5 = _nt_value
406: s0 << r5
407: if r5
408: r7 = _nt_CFWS
409: if r7
410: r6 = r7
411: else
412: r6 = instantiate_node(SyntaxNode,input, index...index)
413: end
414: s0 << r6
415: end
416: end
417: end
418: end
419: if s0.last
420: r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
421: r0.extend(Parameter0)
422: r0.extend(Parameter1)
423: else
424: @index = i0
425: r0 = nil
426: end
427:
428: node_cache[:parameter][start_index] = r0
429:
430: r0
431: end
# File lib/mail/parsers/content_type.rb, line 326
326: def _nt_sub_type
327: start_index = index
328: if node_cache[:sub_type].has_key?(index)
329: cached = node_cache[:sub_type][index]
330: if cached
331: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
332: @index = cached.interval.end
333: end
334: return cached
335: end
336:
337: i0 = index
338: r1 = _nt_extension_token
339: if r1
340: r0 = r1
341: else
342: r2 = _nt_iana_token
343: if r2
344: r0 = r2
345: else
346: @index = i0
347: r0 = nil
348: end
349: end
350:
351: node_cache[:sub_type][start_index] = r0
352:
353: r0
354: end
# File lib/mail/parsers/content_type.rb, line 471
471: def _nt_value
472: start_index = index
473: if node_cache[:value].has_key?(index)
474: cached = node_cache[:value][index]
475: if cached
476: cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
477: @index = cached.interval.end
478: end
479: return cached
480: end
481:
482: i0 = index
483: r1 = _nt_quoted_string
484: r1.extend(Value0)
485: if r1
486: r0 = r1
487: else
488: s2, i2 = [], index
489: loop do
490: i3 = index
491: r4 = _nt_token
492: if r4
493: r3 = r4
494: else
495: if has_terminal?('\G[\x3d]', true, index)
496: r5 = true
497: @index += 1
498: else
499: r5 = nil
500: end
501: if r5
502: r3 = r5
503: else
504: @index = i3
505: r3 = nil
506: end
507: end
508: if r3
509: s2 << r3
510: else
511: break
512: end
513: end
514: if s2.empty?
515: @index = i2
516: r2 = nil
517: else
518: r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
519: end
520: if r2
521: r0 = r2
522: else
523: @index = i0
524: r0 = nil
525: end
526: end
527:
528: node_cache[:value][start_index] = r0
529:
530: r0
531: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.