dns-zonefile 0.0.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1895 +0,0 @@
1
- require 'treetop'
2
-
3
- module DNS
4
- # Autogenerated from a Treetop grammar. Edits may be lost.
5
-
6
-
7
- module ZonefileGrammar # :nodoc:
8
- include Treetop::Runtime
9
-
10
- def root
11
- @root || :zone
12
- end
13
-
14
- module Zone0
15
- def soa
16
- elements[1]
17
- end
18
-
19
- end
20
-
21
- module Zone1
22
- def variables
23
- @variables ||= begin
24
- raw = elements[0].elements.select { |e| e.to_s =~ /^\$/ }
25
- variables = {}
26
- raw.each do |e|
27
- variables[e.name.text_value.to_s] = e.value.text_value.to_s
28
- end
29
- variables
30
- end
31
- end
32
-
33
- def origin
34
- soa.origin.host.to_s
35
- end
36
-
37
- def to_s
38
- text_value
39
- end
40
-
41
- def rr
42
- elements[-1].elements.select { |e| e.to_s !~ /\A\s*(;.*)?\z|\A\z/; }
43
- end
44
- end
45
-
46
- def _nt_zone
47
- start_index = index
48
- if node_cache[:zone].has_key?(index)
49
- cached = node_cache[:zone][index]
50
- @index = cached.interval.end if cached
51
- return cached
52
- end
53
-
54
- i0, s0 = index, []
55
- s1, i1 = [], index
56
- loop do
57
- i2 = index
58
- r3 = _nt_variable
59
- if r3
60
- r2 = r3
61
- else
62
- r4 = _nt_space
63
- if r4
64
- r2 = r4
65
- else
66
- r5 = _nt_comment
67
- if r5
68
- r2 = r5
69
- else
70
- @index = i2
71
- r2 = nil
72
- end
73
- end
74
- end
75
- if r2
76
- s1 << r2
77
- else
78
- break
79
- end
80
- end
81
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
82
- s0 << r1
83
- if r1
84
- r6 = _nt_soa
85
- s0 << r6
86
- if r6
87
- s7, i7 = [], index
88
- loop do
89
- i8 = index
90
- r9 = _nt_resource_record
91
- if r9
92
- r8 = r9
93
- else
94
- r10 = _nt_comment
95
- if r10
96
- r8 = r10
97
- else
98
- r11 = _nt_space
99
- if r11
100
- r8 = r11
101
- else
102
- @index = i8
103
- r8 = nil
104
- end
105
- end
106
- end
107
- if r8
108
- s7 << r8
109
- else
110
- break
111
- end
112
- end
113
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
114
- s0 << r7
115
- end
116
- end
117
- if s0.last
118
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
119
- r0.extend(Zone0)
120
- r0.extend(Zone1)
121
- else
122
- @index = i0
123
- r0 = nil
124
- end
125
-
126
- node_cache[:zone][start_index] = r0
127
-
128
- r0
129
- end
130
-
131
- module Variable0
132
- def name
133
- elements[1]
134
- end
135
-
136
- def space
137
- elements[2]
138
- end
139
-
140
- def value
141
- elements[3]
142
- end
143
-
144
- end
145
-
146
- module Variable1
147
- def to_s
148
- "$#{name.text_value.to_s} #{value.text_value.to_s}"
149
- end
150
- end
151
-
152
- def _nt_variable
153
- start_index = index
154
- if node_cache[:variable].has_key?(index)
155
- cached = node_cache[:variable][index]
156
- @index = cached.interval.end if cached
157
- return cached
158
- end
159
-
160
- i0, s0 = index, []
161
- if has_terminal?("$", false, index)
162
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
163
- @index += 1
164
- else
165
- terminal_parse_failure("$")
166
- r1 = nil
167
- end
168
- s0 << r1
169
- if r1
170
- s2, i2 = [], index
171
- loop do
172
- if has_terminal?('\G[a-zA-Z0-9]', true, index)
173
- r3 = true
174
- @index += 1
175
- else
176
- r3 = nil
177
- end
178
- if r3
179
- s2 << r3
180
- else
181
- break
182
- end
183
- end
184
- if s2.empty?
185
- @index = i2
186
- r2 = nil
187
- else
188
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
189
- end
190
- s0 << r2
191
- if r2
192
- r4 = _nt_space
193
- s0 << r4
194
- if r4
195
- s5, i5 = [], index
196
- loop do
197
- if has_terminal?('\G[a-zA-Z0-9\\.\\-]', true, index)
198
- r6 = true
199
- @index += 1
200
- else
201
- r6 = nil
202
- end
203
- if r6
204
- s5 << r6
205
- else
206
- break
207
- end
208
- end
209
- if s5.empty?
210
- @index = i5
211
- r5 = nil
212
- else
213
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
214
- end
215
- s0 << r5
216
- if r5
217
- r8 = _nt_space
218
- if r8
219
- r7 = r8
220
- else
221
- r7 = instantiate_node(SyntaxNode,input, index...index)
222
- end
223
- s0 << r7
224
- if r7
225
- r10 = _nt_comment
226
- if r10
227
- r9 = r10
228
- else
229
- r9 = instantiate_node(SyntaxNode,input, index...index)
230
- end
231
- s0 << r9
232
- end
233
- end
234
- end
235
- end
236
- end
237
- if s0.last
238
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
239
- r0.extend(Variable0)
240
- r0.extend(Variable1)
241
- else
242
- @index = i0
243
- r0 = nil
244
- end
245
-
246
- node_cache[:variable][start_index] = r0
247
-
248
- r0
249
- end
250
-
251
- module Soa0
252
- def origin
253
- elements[0]
254
- end
255
-
256
- def space1
257
- elements[1]
258
- end
259
-
260
- def zone_type
261
- elements[2]
262
- end
263
-
264
- def space2
265
- elements[3]
266
- end
267
-
268
- def space3
269
- elements[5]
270
- end
271
-
272
- def ns
273
- elements[6]
274
- end
275
-
276
- def space4
277
- elements[7]
278
- end
279
-
280
- def rp
281
- elements[8]
282
- end
283
-
284
- def space5
285
- elements[9]
286
- end
287
-
288
- def serial
289
- elements[12]
290
- end
291
-
292
- def space6
293
- elements[13]
294
- end
295
-
296
- def refresh
297
- elements[14]
298
- end
299
-
300
- def space7
301
- elements[15]
302
- end
303
-
304
- def retry
305
- elements[16]
306
- end
307
-
308
- def space8
309
- elements[17]
310
- end
311
-
312
- def expiry
313
- elements[18]
314
- end
315
-
316
- def space9
317
- elements[19]
318
- end
319
-
320
- def ttl
321
- elements[20]
322
- end
323
-
324
- end
325
-
326
- module Soa1
327
- def to_s
328
- text_value
329
- end
330
- end
331
-
332
- def _nt_soa
333
- start_index = index
334
- if node_cache[:soa].has_key?(index)
335
- cached = node_cache[:soa][index]
336
- @index = cached.interval.end if cached
337
- return cached
338
- end
339
-
340
- i0, s0 = index, []
341
- r1 = _nt_origin
342
- s0 << r1
343
- if r1
344
- r2 = _nt_space
345
- s0 << r2
346
- if r2
347
- r3 = _nt_zone_type
348
- s0 << r3
349
- if r3
350
- r4 = _nt_space
351
- s0 << r4
352
- if r4
353
- if has_terminal?("SOA", false, index)
354
- r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
355
- @index += 3
356
- else
357
- terminal_parse_failure("SOA")
358
- r5 = nil
359
- end
360
- s0 << r5
361
- if r5
362
- r6 = _nt_space
363
- s0 << r6
364
- if r6
365
- r7 = _nt_ns
366
- s0 << r7
367
- if r7
368
- r8 = _nt_space
369
- s0 << r8
370
- if r8
371
- r9 = _nt_rp
372
- s0 << r9
373
- if r9
374
- r10 = _nt_space
375
- s0 << r10
376
- if r10
377
- if has_terminal?("(", false, index)
378
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
379
- @index += 1
380
- else
381
- terminal_parse_failure("(")
382
- r11 = nil
383
- end
384
- s0 << r11
385
- if r11
386
- s12, i12 = [], index
387
- loop do
388
- r13 = _nt_space
389
- if r13
390
- s12 << r13
391
- else
392
- break
393
- end
394
- end
395
- r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
396
- s0 << r12
397
- if r12
398
- r14 = _nt_serial
399
- s0 << r14
400
- if r14
401
- r15 = _nt_space
402
- s0 << r15
403
- if r15
404
- r16 = _nt_refresh
405
- s0 << r16
406
- if r16
407
- r17 = _nt_space
408
- s0 << r17
409
- if r17
410
- r18 = _nt_retry
411
- s0 << r18
412
- if r18
413
- r19 = _nt_space
414
- s0 << r19
415
- if r19
416
- r20 = _nt_expiry
417
- s0 << r20
418
- if r20
419
- r21 = _nt_space
420
- s0 << r21
421
- if r21
422
- r22 = _nt_ttl
423
- s0 << r22
424
- if r22
425
- s23, i23 = [], index
426
- loop do
427
- r24 = _nt_space
428
- if r24
429
- s23 << r24
430
- else
431
- break
432
- end
433
- end
434
- r23 = instantiate_node(SyntaxNode,input, i23...index, s23)
435
- s0 << r23
436
- if r23
437
- if has_terminal?(")", false, index)
438
- r25 = instantiate_node(SyntaxNode,input, index...(index + 1))
439
- @index += 1
440
- else
441
- terminal_parse_failure(")")
442
- r25 = nil
443
- end
444
- s0 << r25
445
- end
446
- end
447
- end
448
- end
449
- end
450
- end
451
- end
452
- end
453
- end
454
- end
455
- end
456
- end
457
- end
458
- end
459
- end
460
- end
461
- end
462
- end
463
- end
464
- end
465
- end
466
- end
467
- if s0.last
468
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
469
- r0.extend(Soa0)
470
- r0.extend(Soa1)
471
- else
472
- @index = i0
473
- r0 = nil
474
- end
475
-
476
- node_cache[:soa][start_index] = r0
477
-
478
- r0
479
- end
480
-
481
- module ResourceRecord0
482
- def record
483
- elements[1]
484
- end
485
-
486
- end
487
-
488
- module ResourceRecord1
489
- def to_s
490
- text_value
491
- end
492
-
493
- def record_type
494
- record.elements[2].text_value
495
- end
496
-
497
- def method_missing(method_name, *args)
498
- if record.respond_to?(method_name)
499
- record.send(method_name, *args)
500
- end
501
- end
502
-
503
- def respond_to?(method_name)
504
- super || record.respond_to?(method_name)
505
- end
506
- end
507
-
508
- def _nt_resource_record
509
- start_index = index
510
- if node_cache[:resource_record].has_key?(index)
511
- cached = node_cache[:resource_record][index]
512
- @index = cached.interval.end if cached
513
- return cached
514
- end
515
-
516
- i0, s0 = index, []
517
- r2 = _nt_space
518
- if r2
519
- r1 = r2
520
- else
521
- r1 = instantiate_node(SyntaxNode,input, index...index)
522
- end
523
- s0 << r1
524
- if r1
525
- i3 = index
526
- r4 = _nt_a_record
527
- if r4
528
- r3 = r4
529
- else
530
- r5 = _nt_cname_record
531
- if r5
532
- r3 = r5
533
- else
534
- r6 = _nt_mx_record
535
- if r6
536
- r3 = r6
537
- else
538
- r7 = _nt_ns_record
539
- if r7
540
- r3 = r7
541
- else
542
- @index = i3
543
- r3 = nil
544
- end
545
- end
546
- end
547
- end
548
- s0 << r3
549
- if r3
550
- r9 = _nt_space
551
- if r9
552
- r8 = r9
553
- else
554
- r8 = instantiate_node(SyntaxNode,input, index...index)
555
- end
556
- s0 << r8
557
- if r8
558
- r11 = _nt_comment
559
- if r11
560
- r10 = r11
561
- else
562
- r10 = instantiate_node(SyntaxNode,input, index...index)
563
- end
564
- s0 << r10
565
- end
566
- end
567
- end
568
- if s0.last
569
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
570
- r0.extend(ResourceRecord0)
571
- r0.extend(ResourceRecord1)
572
- else
573
- @index = i0
574
- r0 = nil
575
- end
576
-
577
- node_cache[:resource_record][start_index] = r0
578
-
579
- r0
580
- end
581
-
582
- module ARecord0
583
- def host
584
- elements[0]
585
- end
586
-
587
- def space1
588
- elements[1]
589
- end
590
-
591
- def space2
592
- elements[3]
593
- end
594
-
595
- def ip_address
596
- elements[4]
597
- end
598
- end
599
-
600
- module ARecord1
601
- def to_s
602
- text_value
603
- end
604
- end
605
-
606
- def _nt_a_record
607
- start_index = index
608
- if node_cache[:a_record].has_key?(index)
609
- cached = node_cache[:a_record][index]
610
- @index = cached.interval.end if cached
611
- return cached
612
- end
613
-
614
- i0, s0 = index, []
615
- r1 = _nt_host
616
- s0 << r1
617
- if r1
618
- r2 = _nt_space
619
- s0 << r2
620
- if r2
621
- if has_terminal?("A", false, index)
622
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
623
- @index += 1
624
- else
625
- terminal_parse_failure("A")
626
- r3 = nil
627
- end
628
- s0 << r3
629
- if r3
630
- r4 = _nt_space
631
- s0 << r4
632
- if r4
633
- r5 = _nt_ip_address
634
- s0 << r5
635
- end
636
- end
637
- end
638
- end
639
- if s0.last
640
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
641
- r0.extend(ARecord0)
642
- r0.extend(ARecord1)
643
- else
644
- @index = i0
645
- r0 = nil
646
- end
647
-
648
- node_cache[:a_record][start_index] = r0
649
-
650
- r0
651
- end
652
-
653
- module IpAddress0
654
- end
655
-
656
- module IpAddress1
657
- def to_s
658
- text_value
659
- end
660
- end
661
-
662
- def _nt_ip_address
663
- start_index = index
664
- if node_cache[:ip_address].has_key?(index)
665
- cached = node_cache[:ip_address][index]
666
- @index = cached.interval.end if cached
667
- return cached
668
- end
669
-
670
- i0, s0 = index, []
671
- s1, i1 = [], index
672
- loop do
673
- if has_terminal?('\G[\\d]', true, index)
674
- r2 = true
675
- @index += 1
676
- else
677
- r2 = nil
678
- end
679
- if r2
680
- s1 << r2
681
- else
682
- break
683
- end
684
- end
685
- if s1.empty?
686
- @index = i1
687
- r1 = nil
688
- else
689
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
690
- end
691
- s0 << r1
692
- if r1
693
- if has_terminal?(".", false, index)
694
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
695
- @index += 1
696
- else
697
- terminal_parse_failure(".")
698
- r3 = nil
699
- end
700
- s0 << r3
701
- if r3
702
- s4, i4 = [], index
703
- loop do
704
- if has_terminal?('\G[\\d]', true, index)
705
- r5 = true
706
- @index += 1
707
- else
708
- r5 = nil
709
- end
710
- if r5
711
- s4 << r5
712
- else
713
- break
714
- end
715
- end
716
- if s4.empty?
717
- @index = i4
718
- r4 = nil
719
- else
720
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
721
- end
722
- s0 << r4
723
- if r4
724
- if has_terminal?(".", false, index)
725
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
726
- @index += 1
727
- else
728
- terminal_parse_failure(".")
729
- r6 = nil
730
- end
731
- s0 << r6
732
- if r6
733
- s7, i7 = [], index
734
- loop do
735
- if has_terminal?('\G[\\d]', true, index)
736
- r8 = true
737
- @index += 1
738
- else
739
- r8 = nil
740
- end
741
- if r8
742
- s7 << r8
743
- else
744
- break
745
- end
746
- end
747
- if s7.empty?
748
- @index = i7
749
- r7 = nil
750
- else
751
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
752
- end
753
- s0 << r7
754
- if r7
755
- if has_terminal?(".", false, index)
756
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
757
- @index += 1
758
- else
759
- terminal_parse_failure(".")
760
- r9 = nil
761
- end
762
- s0 << r9
763
- if r9
764
- s10, i10 = [], index
765
- loop do
766
- if has_terminal?('\G[\\d]', true, index)
767
- r11 = true
768
- @index += 1
769
- else
770
- r11 = nil
771
- end
772
- if r11
773
- s10 << r11
774
- else
775
- break
776
- end
777
- end
778
- if s10.empty?
779
- @index = i10
780
- r10 = nil
781
- else
782
- r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
783
- end
784
- s0 << r10
785
- end
786
- end
787
- end
788
- end
789
- end
790
- end
791
- if s0.last
792
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
793
- r0.extend(IpAddress0)
794
- r0.extend(IpAddress1)
795
- else
796
- @index = i0
797
- r0 = nil
798
- end
799
-
800
- node_cache[:ip_address][start_index] = r0
801
-
802
- r0
803
- end
804
-
805
- module CnameRecord0
806
- def alias
807
- elements[0]
808
- end
809
-
810
- def space1
811
- elements[1]
812
- end
813
-
814
- def space2
815
- elements[3]
816
- end
817
-
818
- def host
819
- elements[4]
820
- end
821
- end
822
-
823
- module CnameRecord1
824
- def to_s
825
- text_value
826
- end
827
- end
828
-
829
- def _nt_cname_record
830
- start_index = index
831
- if node_cache[:cname_record].has_key?(index)
832
- cached = node_cache[:cname_record][index]
833
- @index = cached.interval.end if cached
834
- return cached
835
- end
836
-
837
- i0, s0 = index, []
838
- r1 = _nt_host
839
- s0 << r1
840
- if r1
841
- r2 = _nt_space
842
- s0 << r2
843
- if r2
844
- if has_terminal?("CNAME", false, index)
845
- r3 = instantiate_node(SyntaxNode,input, index...(index + 5))
846
- @index += 5
847
- else
848
- terminal_parse_failure("CNAME")
849
- r3 = nil
850
- end
851
- s0 << r3
852
- if r3
853
- r4 = _nt_space
854
- s0 << r4
855
- if r4
856
- r5 = _nt_host
857
- s0 << r5
858
- end
859
- end
860
- end
861
- end
862
- if s0.last
863
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
864
- r0.extend(CnameRecord0)
865
- r0.extend(CnameRecord1)
866
- else
867
- @index = i0
868
- r0 = nil
869
- end
870
-
871
- node_cache[:cname_record][start_index] = r0
872
-
873
- r0
874
- end
875
-
876
- module MxRecord0
877
- def host
878
- elements[0]
879
- end
880
-
881
- def space1
882
- elements[1]
883
- end
884
-
885
- def space2
886
- elements[3]
887
- end
888
-
889
- def priority
890
- elements[4]
891
- end
892
-
893
- def space3
894
- elements[5]
895
- end
896
-
897
- def exchanger
898
- elements[6]
899
- end
900
- end
901
-
902
- module MxRecord1
903
- def to_s
904
- text_value
905
- end
906
- end
907
-
908
- def _nt_mx_record
909
- start_index = index
910
- if node_cache[:mx_record].has_key?(index)
911
- cached = node_cache[:mx_record][index]
912
- @index = cached.interval.end if cached
913
- return cached
914
- end
915
-
916
- i0, s0 = index, []
917
- r1 = _nt_host
918
- s0 << r1
919
- if r1
920
- r2 = _nt_space
921
- s0 << r2
922
- if r2
923
- if has_terminal?("MX", false, index)
924
- r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
925
- @index += 2
926
- else
927
- terminal_parse_failure("MX")
928
- r3 = nil
929
- end
930
- s0 << r3
931
- if r3
932
- r4 = _nt_space
933
- s0 << r4
934
- if r4
935
- r5 = _nt_integer
936
- s0 << r5
937
- if r5
938
- r6 = _nt_space
939
- s0 << r6
940
- if r6
941
- r7 = _nt_host
942
- s0 << r7
943
- end
944
- end
945
- end
946
- end
947
- end
948
- end
949
- if s0.last
950
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
951
- r0.extend(MxRecord0)
952
- r0.extend(MxRecord1)
953
- else
954
- @index = i0
955
- r0 = nil
956
- end
957
-
958
- node_cache[:mx_record][start_index] = r0
959
-
960
- r0
961
- end
962
-
963
- module NsRecord0
964
- def host
965
- elements[0]
966
- end
967
-
968
- def space1
969
- elements[1]
970
- end
971
-
972
- def space2
973
- elements[3]
974
- end
975
-
976
- def nameserver
977
- elements[4]
978
- end
979
- end
980
-
981
- module NsRecord1
982
- def to_s
983
- text_value
984
- end
985
- end
986
-
987
- def _nt_ns_record
988
- start_index = index
989
- if node_cache[:ns_record].has_key?(index)
990
- cached = node_cache[:ns_record][index]
991
- @index = cached.interval.end if cached
992
- return cached
993
- end
994
-
995
- i0, s0 = index, []
996
- r1 = _nt_host
997
- s0 << r1
998
- if r1
999
- r2 = _nt_space
1000
- s0 << r2
1001
- if r2
1002
- if has_terminal?("NS", false, index)
1003
- r3 = instantiate_node(SyntaxNode,input, index...(index + 2))
1004
- @index += 2
1005
- else
1006
- terminal_parse_failure("NS")
1007
- r3 = nil
1008
- end
1009
- s0 << r3
1010
- if r3
1011
- r4 = _nt_space
1012
- s0 << r4
1013
- if r4
1014
- r5 = _nt_host
1015
- s0 << r5
1016
- end
1017
- end
1018
- end
1019
- end
1020
- if s0.last
1021
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1022
- r0.extend(NsRecord0)
1023
- r0.extend(NsRecord1)
1024
- else
1025
- @index = i0
1026
- r0 = nil
1027
- end
1028
-
1029
- node_cache[:ns_record][start_index] = r0
1030
-
1031
- r0
1032
- end
1033
-
1034
- module Origin0
1035
- def host
1036
- elements[0]
1037
- end
1038
-
1039
- end
1040
-
1041
- module Origin1
1042
- def to_s
1043
- text_value
1044
- end
1045
- end
1046
-
1047
- def _nt_origin
1048
- start_index = index
1049
- if node_cache[:origin].has_key?(index)
1050
- cached = node_cache[:origin][index]
1051
- @index = cached.interval.end if cached
1052
- return cached
1053
- end
1054
-
1055
- i0, s0 = index, []
1056
- r1 = _nt_host
1057
- s0 << r1
1058
- if r1
1059
- s2, i2 = [], index
1060
- loop do
1061
- r3 = _nt_comment
1062
- if r3
1063
- s2 << r3
1064
- else
1065
- break
1066
- end
1067
- end
1068
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1069
- s0 << r2
1070
- end
1071
- if s0.last
1072
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1073
- r0.extend(Origin0)
1074
- r0.extend(Origin1)
1075
- else
1076
- @index = i0
1077
- r0 = nil
1078
- end
1079
-
1080
- node_cache[:origin][start_index] = r0
1081
-
1082
- r0
1083
- end
1084
-
1085
- module Space0
1086
- def to_s
1087
- text_value
1088
- end
1089
- end
1090
-
1091
- def _nt_space
1092
- start_index = index
1093
- if node_cache[:space].has_key?(index)
1094
- cached = node_cache[:space][index]
1095
- @index = cached.interval.end if cached
1096
- return cached
1097
- end
1098
-
1099
- s0, i0 = [], index
1100
- loop do
1101
- if has_terminal?('\G[\\s]', true, index)
1102
- r1 = true
1103
- @index += 1
1104
- else
1105
- r1 = nil
1106
- end
1107
- if r1
1108
- s0 << r1
1109
- else
1110
- break
1111
- end
1112
- end
1113
- if s0.empty?
1114
- @index = i0
1115
- r0 = nil
1116
- else
1117
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1118
- r0.extend(Space0)
1119
- end
1120
-
1121
- node_cache[:space][start_index] = r0
1122
-
1123
- r0
1124
- end
1125
-
1126
- module ZoneType0
1127
- def to_s
1128
- text_value
1129
- end
1130
- end
1131
-
1132
- def _nt_zone_type
1133
- start_index = index
1134
- if node_cache[:zone_type].has_key?(index)
1135
- cached = node_cache[:zone_type][index]
1136
- @index = cached.interval.end if cached
1137
- return cached
1138
- end
1139
-
1140
- if has_terminal?("IN", false, index)
1141
- r0 = instantiate_node(SyntaxNode,input, index...(index + 2))
1142
- r0.extend(ZoneType0)
1143
- @index += 2
1144
- else
1145
- terminal_parse_failure("IN")
1146
- r0 = nil
1147
- end
1148
-
1149
- node_cache[:zone_type][start_index] = r0
1150
-
1151
- r0
1152
- end
1153
-
1154
- module Comment0
1155
- end
1156
-
1157
- module Comment1
1158
- def to_s
1159
- text_value
1160
- end
1161
- end
1162
-
1163
- def _nt_comment
1164
- start_index = index
1165
- if node_cache[:comment].has_key?(index)
1166
- cached = node_cache[:comment][index]
1167
- @index = cached.interval.end if cached
1168
- return cached
1169
- end
1170
-
1171
- i0, s0 = index, []
1172
- s1, i1 = [], index
1173
- loop do
1174
- r2 = _nt_space
1175
- if r2
1176
- s1 << r2
1177
- else
1178
- break
1179
- end
1180
- end
1181
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1182
- s0 << r1
1183
- if r1
1184
- if has_terminal?(";", false, index)
1185
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1186
- @index += 1
1187
- else
1188
- terminal_parse_failure(";")
1189
- r3 = nil
1190
- end
1191
- s0 << r3
1192
- if r3
1193
- s4, i4 = [], index
1194
- loop do
1195
- if has_terminal?('\G[^\\n]', true, index)
1196
- r5 = true
1197
- @index += 1
1198
- else
1199
- r5 = nil
1200
- end
1201
- if r5
1202
- s4 << r5
1203
- else
1204
- break
1205
- end
1206
- end
1207
- if s4.empty?
1208
- @index = i4
1209
- r4 = nil
1210
- else
1211
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1212
- end
1213
- s0 << r4
1214
- end
1215
- end
1216
- if s0.last
1217
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1218
- r0.extend(Comment0)
1219
- r0.extend(Comment1)
1220
- else
1221
- @index = i0
1222
- r0 = nil
1223
- end
1224
-
1225
- node_cache[:comment][start_index] = r0
1226
-
1227
- r0
1228
- end
1229
-
1230
- module Ns0
1231
- def host
1232
- elements[0]
1233
- end
1234
-
1235
- end
1236
-
1237
- module Ns1
1238
- def to_s
1239
- text_value
1240
- end
1241
- end
1242
-
1243
- def _nt_ns
1244
- start_index = index
1245
- if node_cache[:ns].has_key?(index)
1246
- cached = node_cache[:ns][index]
1247
- @index = cached.interval.end if cached
1248
- return cached
1249
- end
1250
-
1251
- i0, s0 = index, []
1252
- r1 = _nt_host
1253
- s0 << r1
1254
- if r1
1255
- s2, i2 = [], index
1256
- loop do
1257
- r3 = _nt_comment
1258
- if r3
1259
- s2 << r3
1260
- else
1261
- break
1262
- end
1263
- end
1264
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1265
- s0 << r2
1266
- end
1267
- if s0.last
1268
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1269
- r0.extend(Ns0)
1270
- r0.extend(Ns1)
1271
- else
1272
- @index = i0
1273
- r0 = nil
1274
- end
1275
-
1276
- node_cache[:ns][start_index] = r0
1277
-
1278
- r0
1279
- end
1280
-
1281
- module Rp0
1282
- end
1283
-
1284
- module Rp1
1285
- def to_s
1286
- text_value
1287
- end
1288
- end
1289
-
1290
- def _nt_rp
1291
- start_index = index
1292
- if node_cache[:rp].has_key?(index)
1293
- cached = node_cache[:rp][index]
1294
- @index = cached.interval.end if cached
1295
- return cached
1296
- end
1297
-
1298
- s0, i0 = [], index
1299
- loop do
1300
- i1, s1 = index, []
1301
- s2, i2 = [], index
1302
- loop do
1303
- if has_terminal?('\G[a-zA-Z0-9\\-]', true, index)
1304
- r3 = true
1305
- @index += 1
1306
- else
1307
- r3 = nil
1308
- end
1309
- if r3
1310
- s2 << r3
1311
- else
1312
- break
1313
- end
1314
- end
1315
- if s2.empty?
1316
- @index = i2
1317
- r2 = nil
1318
- else
1319
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1320
- end
1321
- s1 << r2
1322
- if r2
1323
- if has_terminal?(".", false, index)
1324
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1325
- @index += 1
1326
- else
1327
- terminal_parse_failure(".")
1328
- r4 = nil
1329
- end
1330
- s1 << r4
1331
- end
1332
- if s1.last
1333
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1334
- r1.extend(Rp0)
1335
- else
1336
- @index = i1
1337
- r1 = nil
1338
- end
1339
- if r1
1340
- s0 << r1
1341
- else
1342
- break
1343
- end
1344
- end
1345
- if s0.empty?
1346
- @index = i0
1347
- r0 = nil
1348
- else
1349
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1350
- r0.extend(Rp1)
1351
- end
1352
-
1353
- node_cache[:rp][start_index] = r0
1354
-
1355
- r0
1356
- end
1357
-
1358
- module Serial0
1359
- def integer
1360
- elements[0]
1361
- end
1362
-
1363
- end
1364
-
1365
- module Serial1
1366
- def to_i
1367
- integer.to_i
1368
- end
1369
- end
1370
-
1371
- def _nt_serial
1372
- start_index = index
1373
- if node_cache[:serial].has_key?(index)
1374
- cached = node_cache[:serial][index]
1375
- @index = cached.interval.end if cached
1376
- return cached
1377
- end
1378
-
1379
- i0, s0 = index, []
1380
- r1 = _nt_integer
1381
- s0 << r1
1382
- if r1
1383
- s2, i2 = [], index
1384
- loop do
1385
- r3 = _nt_comment
1386
- if r3
1387
- s2 << r3
1388
- else
1389
- break
1390
- end
1391
- end
1392
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1393
- s0 << r2
1394
- end
1395
- if s0.last
1396
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1397
- r0.extend(Serial0)
1398
- r0.extend(Serial1)
1399
- else
1400
- @index = i0
1401
- r0 = nil
1402
- end
1403
-
1404
- node_cache[:serial][start_index] = r0
1405
-
1406
- r0
1407
- end
1408
-
1409
- module TimeInterval0
1410
- def integer
1411
- elements[0]
1412
- end
1413
-
1414
- def time_multiplier
1415
- elements[1]
1416
- end
1417
- end
1418
-
1419
- module TimeInterval1
1420
- def to_s
1421
- text_value
1422
- end
1423
-
1424
- def to_i
1425
- multipliers = {
1426
- "" => 1,
1427
- "h" => 60 * 60,
1428
- "d" => 60 * 60 * 24,
1429
- "w" => 60 * 60 * 24 * 7,
1430
- "m" => 60 * 60 * 24 * 7 * 4,
1431
- "y" => 60 * 60 * 24 * 7 * 4 * 52
1432
- }
1433
- multipliers[time_multiplier.to_s] * integer.to_i
1434
- end
1435
- end
1436
-
1437
- def _nt_time_interval
1438
- start_index = index
1439
- if node_cache[:time_interval].has_key?(index)
1440
- cached = node_cache[:time_interval][index]
1441
- @index = cached.interval.end if cached
1442
- return cached
1443
- end
1444
-
1445
- i0, s0 = index, []
1446
- r1 = _nt_integer
1447
- s0 << r1
1448
- if r1
1449
- r2 = _nt_time_multiplier
1450
- s0 << r2
1451
- end
1452
- if s0.last
1453
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1454
- r0.extend(TimeInterval0)
1455
- r0.extend(TimeInterval1)
1456
- else
1457
- @index = i0
1458
- r0 = nil
1459
- end
1460
-
1461
- node_cache[:time_interval][start_index] = r0
1462
-
1463
- r0
1464
- end
1465
-
1466
- module Refresh0
1467
- def time_interval
1468
- elements[0]
1469
- end
1470
-
1471
- end
1472
-
1473
- module Refresh1
1474
- def to_i
1475
- time_interval.to_i
1476
- end
1477
- end
1478
-
1479
- def _nt_refresh
1480
- start_index = index
1481
- if node_cache[:refresh].has_key?(index)
1482
- cached = node_cache[:refresh][index]
1483
- @index = cached.interval.end if cached
1484
- return cached
1485
- end
1486
-
1487
- i0, s0 = index, []
1488
- r1 = _nt_time_interval
1489
- s0 << r1
1490
- if r1
1491
- s2, i2 = [], index
1492
- loop do
1493
- r3 = _nt_comment
1494
- if r3
1495
- s2 << r3
1496
- else
1497
- break
1498
- end
1499
- end
1500
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1501
- s0 << r2
1502
- end
1503
- if s0.last
1504
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1505
- r0.extend(Refresh0)
1506
- r0.extend(Refresh1)
1507
- else
1508
- @index = i0
1509
- r0 = nil
1510
- end
1511
-
1512
- node_cache[:refresh][start_index] = r0
1513
-
1514
- r0
1515
- end
1516
-
1517
- module Integer0
1518
- def to_i
1519
- text_value.to_i
1520
- end
1521
- end
1522
-
1523
- def _nt_integer
1524
- start_index = index
1525
- if node_cache[:integer].has_key?(index)
1526
- cached = node_cache[:integer][index]
1527
- @index = cached.interval.end if cached
1528
- return cached
1529
- end
1530
-
1531
- s0, i0 = [], index
1532
- loop do
1533
- if has_terminal?('\G[0-9]', true, index)
1534
- r1 = true
1535
- @index += 1
1536
- else
1537
- r1 = nil
1538
- end
1539
- if r1
1540
- s0 << r1
1541
- else
1542
- break
1543
- end
1544
- end
1545
- if s0.empty?
1546
- @index = i0
1547
- r0 = nil
1548
- else
1549
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1550
- r0.extend(Integer0)
1551
- end
1552
-
1553
- node_cache[:integer][start_index] = r0
1554
-
1555
- r0
1556
- end
1557
-
1558
- module TimeMultiplier0
1559
- def to_s
1560
- text_value
1561
- end
1562
- end
1563
-
1564
- def _nt_time_multiplier
1565
- start_index = index
1566
- if node_cache[:time_multiplier].has_key?(index)
1567
- cached = node_cache[:time_multiplier][index]
1568
- @index = cached.interval.end if cached
1569
- return cached
1570
- end
1571
-
1572
- i0 = index
1573
- if has_terminal?("h", false, index)
1574
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
1575
- @index += 1
1576
- else
1577
- terminal_parse_failure("h")
1578
- r1 = nil
1579
- end
1580
- if r1
1581
- r0 = r1
1582
- r0.extend(TimeMultiplier0)
1583
- else
1584
- if has_terminal?("d", false, index)
1585
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
1586
- @index += 1
1587
- else
1588
- terminal_parse_failure("d")
1589
- r2 = nil
1590
- end
1591
- if r2
1592
- r0 = r2
1593
- r0.extend(TimeMultiplier0)
1594
- else
1595
- if has_terminal?("w", false, index)
1596
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1597
- @index += 1
1598
- else
1599
- terminal_parse_failure("w")
1600
- r3 = nil
1601
- end
1602
- if r3
1603
- r0 = r3
1604
- r0.extend(TimeMultiplier0)
1605
- else
1606
- if has_terminal?("m", false, index)
1607
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1608
- @index += 1
1609
- else
1610
- terminal_parse_failure("m")
1611
- r4 = nil
1612
- end
1613
- if r4
1614
- r0 = r4
1615
- r0.extend(TimeMultiplier0)
1616
- else
1617
- if has_terminal?("y", false, index)
1618
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
1619
- @index += 1
1620
- else
1621
- terminal_parse_failure("y")
1622
- r5 = nil
1623
- end
1624
- if r5
1625
- r0 = r5
1626
- r0.extend(TimeMultiplier0)
1627
- else
1628
- if has_terminal?("", false, index)
1629
- r6 = instantiate_node(SyntaxNode,input, index...(index + 0))
1630
- @index += 0
1631
- else
1632
- terminal_parse_failure("")
1633
- r6 = nil
1634
- end
1635
- if r6
1636
- r0 = r6
1637
- r0.extend(TimeMultiplier0)
1638
- else
1639
- @index = i0
1640
- r0 = nil
1641
- end
1642
- end
1643
- end
1644
- end
1645
- end
1646
- end
1647
-
1648
- node_cache[:time_multiplier][start_index] = r0
1649
-
1650
- r0
1651
- end
1652
-
1653
- module Retry0
1654
- def time_interval
1655
- elements[0]
1656
- end
1657
-
1658
- end
1659
-
1660
- module Retry1
1661
- def to_i
1662
- time_interval.to_i
1663
- end
1664
- end
1665
-
1666
- def _nt_retry
1667
- start_index = index
1668
- if node_cache[:retry].has_key?(index)
1669
- cached = node_cache[:retry][index]
1670
- @index = cached.interval.end if cached
1671
- return cached
1672
- end
1673
-
1674
- i0, s0 = index, []
1675
- r1 = _nt_time_interval
1676
- s0 << r1
1677
- if r1
1678
- s2, i2 = [], index
1679
- loop do
1680
- r3 = _nt_comment
1681
- if r3
1682
- s2 << r3
1683
- else
1684
- break
1685
- end
1686
- end
1687
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1688
- s0 << r2
1689
- end
1690
- if s0.last
1691
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1692
- r0.extend(Retry0)
1693
- r0.extend(Retry1)
1694
- else
1695
- @index = i0
1696
- r0 = nil
1697
- end
1698
-
1699
- node_cache[:retry][start_index] = r0
1700
-
1701
- r0
1702
- end
1703
-
1704
- module Expiry0
1705
- def time_interval
1706
- elements[0]
1707
- end
1708
-
1709
- end
1710
-
1711
- module Expiry1
1712
- def to_i
1713
- time_interval.to_i
1714
- end
1715
- end
1716
-
1717
- def _nt_expiry
1718
- start_index = index
1719
- if node_cache[:expiry].has_key?(index)
1720
- cached = node_cache[:expiry][index]
1721
- @index = cached.interval.end if cached
1722
- return cached
1723
- end
1724
-
1725
- i0, s0 = index, []
1726
- r1 = _nt_time_interval
1727
- s0 << r1
1728
- if r1
1729
- s2, i2 = [], index
1730
- loop do
1731
- r3 = _nt_comment
1732
- if r3
1733
- s2 << r3
1734
- else
1735
- break
1736
- end
1737
- end
1738
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1739
- s0 << r2
1740
- end
1741
- if s0.last
1742
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1743
- r0.extend(Expiry0)
1744
- r0.extend(Expiry1)
1745
- else
1746
- @index = i0
1747
- r0 = nil
1748
- end
1749
-
1750
- node_cache[:expiry][start_index] = r0
1751
-
1752
- r0
1753
- end
1754
-
1755
- module Ttl0
1756
- def time_interval
1757
- elements[0]
1758
- end
1759
-
1760
- end
1761
-
1762
- module Ttl1
1763
- def to_i
1764
- time_interval.to_i
1765
- end
1766
- end
1767
-
1768
- def _nt_ttl
1769
- start_index = index
1770
- if node_cache[:ttl].has_key?(index)
1771
- cached = node_cache[:ttl][index]
1772
- @index = cached.interval.end if cached
1773
- return cached
1774
- end
1775
-
1776
- i0, s0 = index, []
1777
- r1 = _nt_time_interval
1778
- s0 << r1
1779
- if r1
1780
- s2, i2 = [], index
1781
- loop do
1782
- r3 = _nt_comment
1783
- if r3
1784
- s2 << r3
1785
- else
1786
- break
1787
- end
1788
- end
1789
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1790
- s0 << r2
1791
- end
1792
- if s0.last
1793
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1794
- r0.extend(Ttl0)
1795
- r0.extend(Ttl1)
1796
- else
1797
- @index = i0
1798
- r0 = nil
1799
- end
1800
-
1801
- node_cache[:ttl][start_index] = r0
1802
-
1803
- r0
1804
- end
1805
-
1806
- module Host0
1807
- def zone
1808
- p = parent
1809
- while p.respond_to?(:parent) && p.parent
1810
- p = p.parent
1811
- end
1812
- p
1813
- end
1814
-
1815
- def to_s
1816
- case
1817
- when text_value =~ /\.$/
1818
- text_value
1819
- when text_value == "@" || text_value == ""
1820
- if parent == zone.soa.origin
1821
- zone.variables['ORIGIN']
1822
- else
1823
- zone.origin.to_s
1824
- end
1825
- else
1826
- text_value + '.' + zone.origin.to_s
1827
- end
1828
- end
1829
- end
1830
-
1831
- def _nt_host
1832
- start_index = index
1833
- if node_cache[:host].has_key?(index)
1834
- cached = node_cache[:host][index]
1835
- @index = cached.interval.end if cached
1836
- return cached
1837
- end
1838
-
1839
- i0 = index
1840
- s1, i1 = [], index
1841
- loop do
1842
- if has_terminal?('\G[a-zA-Z0-9\\-\\.]', true, index)
1843
- r2 = true
1844
- @index += 1
1845
- else
1846
- r2 = nil
1847
- end
1848
- if r2
1849
- s1 << r2
1850
- else
1851
- break
1852
- end
1853
- end
1854
- if s1.empty?
1855
- @index = i1
1856
- r1 = nil
1857
- else
1858
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1859
- end
1860
- if r1
1861
- r0 = r1
1862
- r0.extend(Host0)
1863
- else
1864
- if has_terminal?("@", false, index)
1865
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1866
- @index += 1
1867
- else
1868
- terminal_parse_failure("@")
1869
- r4 = nil
1870
- end
1871
- if r4
1872
- r3 = r4
1873
- else
1874
- r3 = instantiate_node(SyntaxNode,input, index...index)
1875
- end
1876
- if r3
1877
- r0 = r3
1878
- r0.extend(Host0)
1879
- else
1880
- @index = i0
1881
- r0 = nil
1882
- end
1883
- end
1884
-
1885
- node_cache[:host][start_index] = r0
1886
-
1887
- r0
1888
- end
1889
-
1890
- end
1891
-
1892
- class ZonefileParser < Treetop::Runtime::CompiledParser
1893
- include ZonefileGrammar # :nodoc:
1894
- end
1895
- end