devdnsd 1.7.0 → 2.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.
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: DevDNSd::Rule
8
8
 
9
- &mdash; Documentation by YARD 0.8.2.1
9
+ &mdash; Documentation by YARD 0.8.4.1
10
10
 
11
11
  </title>
12
12
 
@@ -90,11 +90,15 @@
90
90
 
91
91
 
92
92
 
93
+ <dt class="r2">Includes:</dt>
94
+ <dd class="r2">Lazier::I18n</dd>
95
+
96
+
93
97
 
94
98
 
95
99
 
96
- <dt class="r2 last">Defined in:</dt>
97
- <dd class="r2 last">lib/devdnsd/rule.rb</dd>
100
+ <dt class="r1 last">Defined in:</dt>
101
+ <dd class="r1 last">lib/devdnsd/rule.rb</dd>
98
102
 
99
103
  </dl>
100
104
  <div class="clear"></div>
@@ -119,7 +123,7 @@
119
123
  <li class="public ">
120
124
  <span class="summary_signature">
121
125
 
122
- <a href="#block-instance_method" title="#block (instance method)">- (Object) <strong>block</strong> </a>
126
+ <a href="#block-instance_method" title="#block (instance method)">- (Proc) <strong>block</strong> </a>
123
127
 
124
128
 
125
129
 
@@ -145,7 +149,7 @@
145
149
  <li class="public ">
146
150
  <span class="summary_signature">
147
151
 
148
- <a href="#match-instance_method" title="#match (instance method)">- (Object) <strong>match</strong> </a>
152
+ <a href="#match-instance_method" title="#match (instance method)">- (String|Regexp) <strong>match</strong> </a>
149
153
 
150
154
 
151
155
 
@@ -171,7 +175,7 @@
171
175
  <li class="public ">
172
176
  <span class="summary_signature">
173
177
 
174
- <a href="#options-instance_method" title="#options (instance method)">- (Object) <strong>options</strong> </a>
178
+ <a href="#options-instance_method" title="#options (instance method)">- (Hash) <strong>options</strong> </a>
175
179
 
176
180
 
177
181
 
@@ -197,7 +201,7 @@
197
201
  <li class="public ">
198
202
  <span class="summary_signature">
199
203
 
200
- <a href="#reply-instance_method" title="#reply (instance method)">- (Object) <strong>reply</strong> </a>
204
+ <a href="#reply-instance_method" title="#reply (instance method)">- (String) <strong>reply</strong> </a>
201
205
 
202
206
 
203
207
 
@@ -223,7 +227,7 @@
223
227
  <li class="public ">
224
228
  <span class="summary_signature">
225
229
 
226
- <a href="#type-instance_method" title="#type (instance method)">- (Object) <strong>type</strong> </a>
230
+ <a href="#type-instance_method" title="#type (instance method)">- (Symbol) <strong>type</strong> </a>
227
231
 
228
232
 
229
233
 
@@ -262,7 +266,7 @@
262
266
  <li class="public ">
263
267
  <span class="summary_signature">
264
268
 
265
- <a href="#create-class_method" title="create (class method)">+ (Object) <strong>create</strong>(match, reply_or_type = nil, type = nil, options = {}, &amp;block) </a>
269
+ <a href="#create-class_method" title="create (class method)">+ (Rule) <strong>create</strong>(match, reply_or_type = nil, type = nil, options = {}, &amp;block) </a>
266
270
 
267
271
 
268
272
 
@@ -308,7 +312,7 @@
308
312
  <li class="public ">
309
313
  <span class="summary_signature">
310
314
 
311
- <a href="#symbol_to_resource_class-class_method" title="symbol_to_resource_class (class method)">+ (Symbol) <strong>symbol_to_resource_class</strong>(symbol) </a>
315
+ <a href="#symbol_to_resource_class-class_method" title="symbol_to_resource_class (class method)">+ (Symbol) <strong>symbol_to_resource_class</strong>(symbol, locale = nil) </a>
312
316
 
313
317
 
314
318
 
@@ -457,7 +461,8 @@
457
461
  </ul>
458
462
 
459
463
 
460
- <div id="constructor_details" class="method_details_list">
464
+
465
+ <div id="constructor_details" class="method_details_list">
461
466
  <h2>Constructor Details</h2>
462
467
 
463
468
  <div class="method_details first">
@@ -565,19 +570,6 @@
565
570
 
566
571
  </ul>
567
572
 
568
- <p class="tag_title">Raises:</p>
569
- <ul class="raise">
570
-
571
- <li>
572
-
573
-
574
- <span class='type'>(<tt><span class='object_link'><a href="Errors/InvalidRule.html" title="DevDNSd::Errors::InvalidRule (class)">DevDNSd::Errors::InvalidRule</a></span></tt>)</span>
575
-
576
-
577
-
578
- </li>
579
-
580
- </ul>
581
573
 
582
574
  <p class="tag_title">See Also:</p>
583
575
  <ul class="see">
@@ -592,33 +584,21 @@
592
584
  <pre class="lines">
593
585
 
594
586
 
587
+ 37
588
+ 38
595
589
  39
596
590
  40
597
591
  41
598
- 42
599
- 43
600
- 44
601
- 45
602
- 46
603
- 47
604
- 48
605
- 49
606
- 50</pre>
592
+ 42</pre>
607
593
  </td>
608
594
  <td>
609
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 39</span>
595
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 37</span>
610
596
 
611
597
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
612
- <span class='id identifier rubyid_reply'>reply</span> <span class='op'>||=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span>
613
- <span class='id identifier rubyid_type'>type</span> <span class='op'>||=</span> <span class='symbol'>:A</span>
614
- <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
615
- <span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span>
616
- <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>:</span> <span class='kw'>nil</span>
617
- <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
618
- <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
619
-
620
- <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>You must specify at least a rule and a host (also via a block). Optionally you can add a record type (default: A) and the options.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
621
- <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>You can only use hashs for options.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
598
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
599
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
600
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
601
+ <span class='id identifier rubyid_validate_rule'>validate_rule</span>
622
602
  <span class='kw'>end</span></pre>
623
603
  </td>
624
604
  </tr>
@@ -635,7 +615,7 @@
635
615
  <div class="method_details first">
636
616
  <h3 class="signature first" id="block-instance_method">
637
617
 
638
- - (<tt>Object</tt>) <strong>block</strong>
618
+ - (<tt>Proc</tt>) <strong>block</strong>
639
619
 
640
620
 
641
621
 
@@ -643,20 +623,30 @@
643
623
 
644
624
  </h3><div class="docstring">
645
625
  <div class="discussion">
646
- <p>An optional block to compute the reply instead of using the <code>reply</code> parameter.</p>
626
+ <p>An optional block to compute the reply instead of using the <code>reply</code> parameter. @see .create</p>
647
627
 
648
628
 
649
629
  </div>
650
630
  </div>
651
631
  <div class="tags">
652
632
 
653
-
654
- <p class="tag_title">See Also:</p>
655
- <ul class="see">
656
-
657
- <li><span class='object_link'><a href="#create-class_method" title="DevDNSd::Rule.create (method)">create</a></span></li>
658
-
659
- </ul>
633
+ <p class="tag_title">Returns:</p>
634
+ <ul class="return">
635
+
636
+ <li>
637
+
638
+
639
+ <span class='type'>(<tt>Proc</tt>)</span>
640
+
641
+
642
+
643
+ &mdash;
644
+ <div class='inline'><p>An optional block to compute the reply instead of using the <code>reply</code> parameter. @see .create</p>
645
+ </div>
646
+
647
+ </li>
648
+
649
+ </ul>
660
650
 
661
651
  </div><table class="source_code">
662
652
  <tr>
@@ -664,15 +654,301 @@
664
654
  <pre class="lines">
665
655
 
666
656
 
657
+ 20
658
+ 21
659
+ 22
660
+ 23
661
+ 24
662
+ 25
663
+ 26
664
+ 27
665
+ 28
667
666
  29
668
667
  30
669
- 31</pre>
668
+ 31
669
+ 32
670
+ 33
671
+ 34
672
+ 35
673
+ 36
674
+ 37
675
+ 38
676
+ 39
677
+ 40
678
+ 41
679
+ 42
680
+ 43
681
+ 44
682
+ 45
683
+ 46
684
+ 47
685
+ 48
686
+ 49
687
+ 50
688
+ 51
689
+ 52
690
+ 53
691
+ 54
692
+ 55
693
+ 56
694
+ 57
695
+ 58
696
+ 59
697
+ 60
698
+ 61
699
+ 62
700
+ 63
701
+ 64
702
+ 65
703
+ 66
704
+ 67
705
+ 68
706
+ 69
707
+ 70
708
+ 71
709
+ 72
710
+ 73
711
+ 74
712
+ 75
713
+ 76
714
+ 77
715
+ 78
716
+ 79
717
+ 80
718
+ 81
719
+ 82
720
+ 83
721
+ 84
722
+ 85
723
+ 86
724
+ 87
725
+ 88
726
+ 89
727
+ 90
728
+ 91
729
+ 92
730
+ 93
731
+ 94
732
+ 95
733
+ 96
734
+ 97
735
+ 98
736
+ 99
737
+ 100
738
+ 101
739
+ 102
740
+ 103
741
+ 104
742
+ 105
743
+ 106
744
+ 107
745
+ 108
746
+ 109
747
+ 110
748
+ 111
749
+ 112
750
+ 113
751
+ 114
752
+ 115
753
+ 116
754
+ 117
755
+ 118
756
+ 119
757
+ 120
758
+ 121
759
+ 122
760
+ 123
761
+ 124
762
+ 125
763
+ 126
764
+ 127
765
+ 128
766
+ 129
767
+ 130
768
+ 131
769
+ 132
770
+ 133
771
+ 134
772
+ 135
773
+ 136
774
+ 137
775
+ 138
776
+ 139
777
+ 140
778
+ 141
779
+ 142
780
+ 143
781
+ 144
782
+ 145
783
+ 146
784
+ 147
785
+ 148
786
+ 149
787
+ 150
788
+ 151
789
+ 152
790
+ 153
791
+ 154
792
+ 155
793
+ 156
794
+ 157
795
+ 158
796
+ 159
797
+ 160
798
+ 161
799
+ 162
800
+ 163
801
+ 164
802
+ 165</pre>
670
803
  </td>
671
804
  <td>
672
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 29</span>
805
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
806
+
807
+ <span class='kw'>class</span> <span class='const'>Rule</span>
808
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
809
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
810
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
811
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
812
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
813
+
814
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
815
+
816
+ <span class='comment'># Creates a new rule.
817
+ </span> <span class='comment'>#
818
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
819
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
820
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
821
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
822
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
823
+ </span> <span class='comment'># @see .create
824
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
825
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
826
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
827
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
828
+ <span class='id identifier rubyid_validate_rule'>validate_rule</span>
829
+ <span class='kw'>end</span>
830
+
831
+ <span class='comment'># Returns the resource class(es) for the current rule.
832
+ </span> <span class='comment'>#
833
+ </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
834
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
835
+ <span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
836
+ <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
837
+ <span class='kw'>end</span>
838
+
839
+ <span class='comment'># Checks if the rule is a regexp.
840
+ </span> <span class='comment'>#
841
+ </span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
842
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
843
+ <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
844
+ <span class='kw'>end</span>
845
+
846
+ <span class='comment'># Checks if the rule is a regexp.
847
+ </span> <span class='comment'>#
848
+ </span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
849
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
850
+ <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
851
+ <span class='kw'>end</span>
852
+
853
+ <span class='comment'># Matches a hostname to the rule.
854
+ </span> <span class='comment'>#
855
+ </span> <span class='comment'># @param hostname [String] The hostname to match.
856
+ </span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
857
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
858
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
859
+ <span class='kw'>end</span>
860
+
861
+ <span class='comment'># Creates a new rule.
862
+ </span> <span class='comment'>#
863
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
864
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
865
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
866
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
867
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
868
+ </span> <span class='comment'># @return [Rule] The new rule.
869
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
870
+ <span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
871
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
872
+ <span class='kw'>end</span>
873
+
874
+ <span class='comment'># Converts a class to the correspondent symbol.
875
+ </span> <span class='comment'>#
876
+ </span> <span class='comment'># @param klass [Class] The class to convert.
877
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
878
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
879
+ <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
880
+ <span class='kw'>end</span>
881
+
882
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
883
+ </span> <span class='comment'>#
884
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
885
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
886
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
887
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
888
+ <span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
889
+
890
+ <span class='kw'>begin</span>
891
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
892
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
893
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
894
+ <span class='kw'>end</span>
895
+ <span class='kw'>end</span>
673
896
 
674
- <span class='kw'>def</span> <span class='id identifier rubyid_block'>block</span>
675
- <span class='ivar'>@block</span>
897
+ <span class='id identifier rubyid_private'>private</span>
898
+ <span class='comment'># Setups a new rule.
899
+ </span> <span class='comment'>#
900
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
901
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
902
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
903
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
904
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
905
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
906
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
907
+ <span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
908
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
909
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
910
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
911
+ <span class='kw'>end</span>
912
+
913
+ <span class='comment'># Validates a newly created rule.
914
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
915
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
916
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
917
+ <span class='kw'>end</span>
918
+
919
+ <span class='comment'># Setups a new rule.
920
+ </span> <span class='comment'>#
921
+ </span> <span class='comment'># @param rv [Rule] The rule that is been created.
922
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
923
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
924
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
925
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
926
+ </span> <span class='comment'># @return [Rule] The new rule.
927
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
928
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
929
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
930
+
931
+ <span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
932
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
933
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
934
+ <span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
935
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span>
936
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
937
+ <span class='kw'>end</span>
938
+
939
+ <span class='id identifier rubyid_rv'>rv</span>
940
+ <span class='kw'>end</span>
941
+
942
+ <span class='comment'># Validate options for a new rule creation.
943
+ </span> <span class='comment'>#
944
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
945
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
946
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
947
+ </span> <span class='comment'># @param localizer [Localizer] A localizer object.
948
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
949
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
950
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
951
+ <span class='kw'>end</span>
676
952
  <span class='kw'>end</span></pre>
677
953
  </td>
678
954
  </tr>
@@ -684,7 +960,7 @@
684
960
  <div class="method_details ">
685
961
  <h3 class="signature " id="match-instance_method">
686
962
 
687
- - (<tt>Object</tt>) <strong>match</strong>
963
+ - (<tt>String|Regexp</tt>) <strong>match</strong>
688
964
 
689
965
 
690
966
 
@@ -699,6 +975,23 @@
699
975
  </div>
700
976
  <div class="tags">
701
977
 
978
+ <p class="tag_title">Returns:</p>
979
+ <ul class="return">
980
+
981
+ <li>
982
+
983
+
984
+ <span class='type'>(<tt>String|Regexp</tt>)</span>
985
+
986
+
987
+
988
+ &mdash;
989
+ <div class='inline'><p>The pattern to match. Default: <code>/.+/</code>.</p>
990
+ </div>
991
+
992
+ </li>
993
+
994
+ </ul>
702
995
 
703
996
  </div><table class="source_code">
704
997
  <tr>
@@ -706,57 +999,301 @@
706
999
  <pre class="lines">
707
1000
 
708
1001
 
709
- 11
710
- 12
711
- 13</pre>
1002
+ 20
1003
+ 21
1004
+ 22
1005
+ 23
1006
+ 24
1007
+ 25
1008
+ 26
1009
+ 27
1010
+ 28
1011
+ 29
1012
+ 30
1013
+ 31
1014
+ 32
1015
+ 33
1016
+ 34
1017
+ 35
1018
+ 36
1019
+ 37
1020
+ 38
1021
+ 39
1022
+ 40
1023
+ 41
1024
+ 42
1025
+ 43
1026
+ 44
1027
+ 45
1028
+ 46
1029
+ 47
1030
+ 48
1031
+ 49
1032
+ 50
1033
+ 51
1034
+ 52
1035
+ 53
1036
+ 54
1037
+ 55
1038
+ 56
1039
+ 57
1040
+ 58
1041
+ 59
1042
+ 60
1043
+ 61
1044
+ 62
1045
+ 63
1046
+ 64
1047
+ 65
1048
+ 66
1049
+ 67
1050
+ 68
1051
+ 69
1052
+ 70
1053
+ 71
1054
+ 72
1055
+ 73
1056
+ 74
1057
+ 75
1058
+ 76
1059
+ 77
1060
+ 78
1061
+ 79
1062
+ 80
1063
+ 81
1064
+ 82
1065
+ 83
1066
+ 84
1067
+ 85
1068
+ 86
1069
+ 87
1070
+ 88
1071
+ 89
1072
+ 90
1073
+ 91
1074
+ 92
1075
+ 93
1076
+ 94
1077
+ 95
1078
+ 96
1079
+ 97
1080
+ 98
1081
+ 99
1082
+ 100
1083
+ 101
1084
+ 102
1085
+ 103
1086
+ 104
1087
+ 105
1088
+ 106
1089
+ 107
1090
+ 108
1091
+ 109
1092
+ 110
1093
+ 111
1094
+ 112
1095
+ 113
1096
+ 114
1097
+ 115
1098
+ 116
1099
+ 117
1100
+ 118
1101
+ 119
1102
+ 120
1103
+ 121
1104
+ 122
1105
+ 123
1106
+ 124
1107
+ 125
1108
+ 126
1109
+ 127
1110
+ 128
1111
+ 129
1112
+ 130
1113
+ 131
1114
+ 132
1115
+ 133
1116
+ 134
1117
+ 135
1118
+ 136
1119
+ 137
1120
+ 138
1121
+ 139
1122
+ 140
1123
+ 141
1124
+ 142
1125
+ 143
1126
+ 144
1127
+ 145
1128
+ 146
1129
+ 147
1130
+ 148
1131
+ 149
1132
+ 150
1133
+ 151
1134
+ 152
1135
+ 153
1136
+ 154
1137
+ 155
1138
+ 156
1139
+ 157
1140
+ 158
1141
+ 159
1142
+ 160
1143
+ 161
1144
+ 162
1145
+ 163
1146
+ 164
1147
+ 165</pre>
712
1148
  </td>
713
1149
  <td>
714
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 11</span>
715
-
716
- <span class='kw'>def</span> <span class='id identifier rubyid_match'>match</span>
717
- <span class='ivar'>@match</span>
718
- <span class='kw'>end</span></pre>
719
- </td>
720
- </tr>
721
- </table>
722
- </div>
723
-
724
-
725
- <span id="options=-instance_method"></span>
726
- <div class="method_details ">
727
- <h3 class="signature " id="options-instance_method">
728
-
729
- - (<tt>Object</tt>) <strong>options</strong>
730
-
1150
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
1151
+
1152
+ <span class='kw'>class</span> <span class='const'>Rule</span>
1153
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
1154
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
1155
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
1156
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
1157
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
1158
+
1159
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
1160
+
1161
+ <span class='comment'># Creates a new rule.
1162
+ </span> <span class='comment'>#
1163
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1164
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
1165
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1166
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1167
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1168
+ </span> <span class='comment'># @see .create
1169
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1170
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
1171
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
1172
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1173
+ <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1174
+ <span class='kw'>end</span>
731
1175
 
732
-
1176
+ <span class='comment'># Returns the resource class(es) for the current rule.
1177
+ </span> <span class='comment'>#
1178
+ </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
1179
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
1180
+ <span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
1181
+ <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
1182
+ <span class='kw'>end</span>
733
1183
 
734
-
735
- </h3><div class="docstring">
736
- <div class="discussion">
737
- <p>A list of options for the request. Default is an empty hash.</p>
1184
+ <span class='comment'># Checks if the rule is a regexp.
1185
+ </span> <span class='comment'>#
1186
+ </span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
1187
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
1188
+ <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
1189
+ <span class='kw'>end</span>
738
1190
 
1191
+ <span class='comment'># Checks if the rule is a regexp.
1192
+ </span> <span class='comment'>#
1193
+ </span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
1194
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
1195
+ <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
1196
+ <span class='kw'>end</span>
739
1197
 
740
- </div>
741
- </div>
742
- <div class="tags">
743
-
1198
+ <span class='comment'># Matches a hostname to the rule.
1199
+ </span> <span class='comment'>#
1200
+ </span> <span class='comment'># @param hostname [String] The hostname to match.
1201
+ </span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
1202
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
1203
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
1204
+ <span class='kw'>end</span>
744
1205
 
745
- </div><table class="source_code">
746
- <tr>
747
- <td>
748
- <pre class="lines">
1206
+ <span class='comment'># Creates a new rule.
1207
+ </span> <span class='comment'>#
1208
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1209
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
1210
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
1211
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1212
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
1213
+ </span> <span class='comment'># @return [Rule] The new rule.
1214
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1215
+ <span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
1216
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1217
+ <span class='kw'>end</span>
749
1218
 
1219
+ <span class='comment'># Converts a class to the correspondent symbol.
1220
+ </span> <span class='comment'>#
1221
+ </span> <span class='comment'># @param klass [Class] The class to convert.
1222
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
1223
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
1224
+ <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
1225
+ <span class='kw'>end</span>
750
1226
 
751
- 24
752
- 25
753
- 26</pre>
754
- </td>
755
- <td>
756
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 24</span>
1227
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
1228
+ </span> <span class='comment'>#
1229
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
1230
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
1231
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
1232
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1233
+ <span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
1234
+
1235
+ <span class='kw'>begin</span>
1236
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
1237
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
1238
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
1239
+ <span class='kw'>end</span>
1240
+ <span class='kw'>end</span>
757
1241
 
758
- <span class='kw'>def</span> <span class='id identifier rubyid_options'>options</span>
759
- <span class='ivar'>@options</span>
1242
+ <span class='id identifier rubyid_private'>private</span>
1243
+ <span class='comment'># Setups a new rule.
1244
+ </span> <span class='comment'>#
1245
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1246
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
1247
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1248
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1249
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1250
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1251
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
1252
+ <span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1253
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
1254
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1255
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1256
+ <span class='kw'>end</span>
1257
+
1258
+ <span class='comment'># Validates a newly created rule.
1259
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1260
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1261
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
1262
+ <span class='kw'>end</span>
1263
+
1264
+ <span class='comment'># Setups a new rule.
1265
+ </span> <span class='comment'>#
1266
+ </span> <span class='comment'># @param rv [Rule] The rule that is been created.
1267
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
1268
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
1269
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1270
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
1271
+ </span> <span class='comment'># @return [Rule] The new rule.
1272
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1273
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1274
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1275
+
1276
+ <span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
1277
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1278
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
1279
+ <span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
1280
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span>
1281
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1282
+ <span class='kw'>end</span>
1283
+
1284
+ <span class='id identifier rubyid_rv'>rv</span>
1285
+ <span class='kw'>end</span>
1286
+
1287
+ <span class='comment'># Validate options for a new rule creation.
1288
+ </span> <span class='comment'>#
1289
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
1290
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1291
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
1292
+ </span> <span class='comment'># @param localizer [Localizer] A localizer object.
1293
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
1294
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1295
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
1296
+ <span class='kw'>end</span>
760
1297
  <span class='kw'>end</span></pre>
761
1298
  </td>
762
1299
  </tr>
@@ -764,11 +1301,11 @@
764
1301
  </div>
765
1302
 
766
1303
 
767
- <span id="reply=-instance_method"></span>
1304
+ <span id="options=-instance_method"></span>
768
1305
  <div class="method_details ">
769
- <h3 class="signature " id="reply-instance_method">
1306
+ <h3 class="signature " id="options-instance_method">
770
1307
 
771
- - (<tt>Object</tt>) <strong>reply</strong>
1308
+ - (<tt>Hash</tt>) <strong>options</strong>
772
1309
 
773
1310
 
774
1311
 
@@ -776,20 +1313,30 @@
776
1313
 
777
1314
  </h3><div class="docstring">
778
1315
  <div class="discussion">
779
- <p>The IP or hostname to reply back to the client. Default: <code>127.0.0.1</code>.</p>
1316
+ <p>A list of options for the request. Default is an empty hash.</p>
780
1317
 
781
1318
 
782
1319
  </div>
783
1320
  </div>
784
1321
  <div class="tags">
785
1322
 
786
-
787
- <p class="tag_title">See Also:</p>
788
- <ul class="see">
789
-
790
- <li><span class='object_link'><a href="#create-class_method" title="DevDNSd::Rule.create (method)">create</a></span></li>
791
-
792
- </ul>
1323
+ <p class="tag_title">Returns:</p>
1324
+ <ul class="return">
1325
+
1326
+ <li>
1327
+
1328
+
1329
+ <span class='type'>(<tt>Hash</tt>)</span>
1330
+
1331
+
1332
+
1333
+ &mdash;
1334
+ <div class='inline'><p>A list of options for the request. Default is an empty hash.</p>
1335
+ </div>
1336
+
1337
+ </li>
1338
+
1339
+ </ul>
793
1340
 
794
1341
  </div><table class="source_code">
795
1342
  <tr>
@@ -797,27 +1344,313 @@
797
1344
  <pre class="lines">
798
1345
 
799
1346
 
1347
+ 20
800
1348
  21
801
1349
  22
802
- 23</pre>
803
- </td>
804
- <td>
805
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 21</span>
806
-
807
- <span class='kw'>def</span> <span class='id identifier rubyid_reply'>reply</span>
808
- <span class='ivar'>@reply</span>
809
- <span class='kw'>end</span></pre>
810
- </td>
811
- </tr>
812
- </table>
813
- </div>
814
-
815
-
816
- <span id="type=-instance_method"></span>
1350
+ 23
1351
+ 24
1352
+ 25
1353
+ 26
1354
+ 27
1355
+ 28
1356
+ 29
1357
+ 30
1358
+ 31
1359
+ 32
1360
+ 33
1361
+ 34
1362
+ 35
1363
+ 36
1364
+ 37
1365
+ 38
1366
+ 39
1367
+ 40
1368
+ 41
1369
+ 42
1370
+ 43
1371
+ 44
1372
+ 45
1373
+ 46
1374
+ 47
1375
+ 48
1376
+ 49
1377
+ 50
1378
+ 51
1379
+ 52
1380
+ 53
1381
+ 54
1382
+ 55
1383
+ 56
1384
+ 57
1385
+ 58
1386
+ 59
1387
+ 60
1388
+ 61
1389
+ 62
1390
+ 63
1391
+ 64
1392
+ 65
1393
+ 66
1394
+ 67
1395
+ 68
1396
+ 69
1397
+ 70
1398
+ 71
1399
+ 72
1400
+ 73
1401
+ 74
1402
+ 75
1403
+ 76
1404
+ 77
1405
+ 78
1406
+ 79
1407
+ 80
1408
+ 81
1409
+ 82
1410
+ 83
1411
+ 84
1412
+ 85
1413
+ 86
1414
+ 87
1415
+ 88
1416
+ 89
1417
+ 90
1418
+ 91
1419
+ 92
1420
+ 93
1421
+ 94
1422
+ 95
1423
+ 96
1424
+ 97
1425
+ 98
1426
+ 99
1427
+ 100
1428
+ 101
1429
+ 102
1430
+ 103
1431
+ 104
1432
+ 105
1433
+ 106
1434
+ 107
1435
+ 108
1436
+ 109
1437
+ 110
1438
+ 111
1439
+ 112
1440
+ 113
1441
+ 114
1442
+ 115
1443
+ 116
1444
+ 117
1445
+ 118
1446
+ 119
1447
+ 120
1448
+ 121
1449
+ 122
1450
+ 123
1451
+ 124
1452
+ 125
1453
+ 126
1454
+ 127
1455
+ 128
1456
+ 129
1457
+ 130
1458
+ 131
1459
+ 132
1460
+ 133
1461
+ 134
1462
+ 135
1463
+ 136
1464
+ 137
1465
+ 138
1466
+ 139
1467
+ 140
1468
+ 141
1469
+ 142
1470
+ 143
1471
+ 144
1472
+ 145
1473
+ 146
1474
+ 147
1475
+ 148
1476
+ 149
1477
+ 150
1478
+ 151
1479
+ 152
1480
+ 153
1481
+ 154
1482
+ 155
1483
+ 156
1484
+ 157
1485
+ 158
1486
+ 159
1487
+ 160
1488
+ 161
1489
+ 162
1490
+ 163
1491
+ 164
1492
+ 165</pre>
1493
+ </td>
1494
+ <td>
1495
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
1496
+
1497
+ <span class='kw'>class</span> <span class='const'>Rule</span>
1498
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
1499
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
1500
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
1501
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
1502
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
1503
+
1504
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
1505
+
1506
+ <span class='comment'># Creates a new rule.
1507
+ </span> <span class='comment'>#
1508
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1509
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
1510
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1511
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1512
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1513
+ </span> <span class='comment'># @see .create
1514
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1515
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
1516
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
1517
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1518
+ <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1519
+ <span class='kw'>end</span>
1520
+
1521
+ <span class='comment'># Returns the resource class(es) for the current rule.
1522
+ </span> <span class='comment'>#
1523
+ </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
1524
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
1525
+ <span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
1526
+ <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
1527
+ <span class='kw'>end</span>
1528
+
1529
+ <span class='comment'># Checks if the rule is a regexp.
1530
+ </span> <span class='comment'>#
1531
+ </span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
1532
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
1533
+ <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
1534
+ <span class='kw'>end</span>
1535
+
1536
+ <span class='comment'># Checks if the rule is a regexp.
1537
+ </span> <span class='comment'>#
1538
+ </span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
1539
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
1540
+ <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
1541
+ <span class='kw'>end</span>
1542
+
1543
+ <span class='comment'># Matches a hostname to the rule.
1544
+ </span> <span class='comment'>#
1545
+ </span> <span class='comment'># @param hostname [String] The hostname to match.
1546
+ </span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
1547
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
1548
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
1549
+ <span class='kw'>end</span>
1550
+
1551
+ <span class='comment'># Creates a new rule.
1552
+ </span> <span class='comment'>#
1553
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1554
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
1555
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
1556
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1557
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
1558
+ </span> <span class='comment'># @return [Rule] The new rule.
1559
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1560
+ <span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
1561
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1562
+ <span class='kw'>end</span>
1563
+
1564
+ <span class='comment'># Converts a class to the correspondent symbol.
1565
+ </span> <span class='comment'>#
1566
+ </span> <span class='comment'># @param klass [Class] The class to convert.
1567
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
1568
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
1569
+ <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
1570
+ <span class='kw'>end</span>
1571
+
1572
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
1573
+ </span> <span class='comment'>#
1574
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
1575
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
1576
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
1577
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1578
+ <span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
1579
+
1580
+ <span class='kw'>begin</span>
1581
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
1582
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
1583
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
1584
+ <span class='kw'>end</span>
1585
+ <span class='kw'>end</span>
1586
+
1587
+ <span class='id identifier rubyid_private'>private</span>
1588
+ <span class='comment'># Setups a new rule.
1589
+ </span> <span class='comment'>#
1590
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1591
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
1592
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1593
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1594
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1595
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1596
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
1597
+ <span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1598
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
1599
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1600
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1601
+ <span class='kw'>end</span>
1602
+
1603
+ <span class='comment'># Validates a newly created rule.
1604
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1605
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1606
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
1607
+ <span class='kw'>end</span>
1608
+
1609
+ <span class='comment'># Setups a new rule.
1610
+ </span> <span class='comment'>#
1611
+ </span> <span class='comment'># @param rv [Rule] The rule that is been created.
1612
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
1613
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
1614
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1615
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
1616
+ </span> <span class='comment'># @return [Rule] The new rule.
1617
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1618
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1619
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1620
+
1621
+ <span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
1622
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1623
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
1624
+ <span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
1625
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span>
1626
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1627
+ <span class='kw'>end</span>
1628
+
1629
+ <span class='id identifier rubyid_rv'>rv</span>
1630
+ <span class='kw'>end</span>
1631
+
1632
+ <span class='comment'># Validate options for a new rule creation.
1633
+ </span> <span class='comment'>#
1634
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
1635
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1636
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
1637
+ </span> <span class='comment'># @param localizer [Localizer] A localizer object.
1638
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
1639
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1640
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
1641
+ <span class='kw'>end</span>
1642
+ <span class='kw'>end</span></pre>
1643
+ </td>
1644
+ </tr>
1645
+ </table>
1646
+ </div>
1647
+
1648
+
1649
+ <span id="reply=-instance_method"></span>
817
1650
  <div class="method_details ">
818
- <h3 class="signature " id="type-instance_method">
1651
+ <h3 class="signature " id="reply-instance_method">
819
1652
 
820
- - (<tt>Object</tt>) <strong>type</strong>
1653
+ - (<tt>String</tt>) <strong>reply</strong>
821
1654
 
822
1655
 
823
1656
 
@@ -825,20 +1658,375 @@
825
1658
 
826
1659
  </h3><div class="docstring">
827
1660
  <div class="discussion">
828
- <p>The type of request to match. Default: <code>:A</code>.</p>
1661
+ <p>The IP or hostname to reply back to the client. Default: <code>127.0.0.1</code>. @see .create</p>
829
1662
 
830
1663
 
831
1664
  </div>
832
1665
  </div>
833
1666
  <div class="tags">
834
1667
 
1668
+ <p class="tag_title">Returns:</p>
1669
+ <ul class="return">
1670
+
1671
+ <li>
1672
+
1673
+
1674
+ <span class='type'>(<tt>String</tt>)</span>
1675
+
1676
+
1677
+
1678
+ &mdash;
1679
+ <div class='inline'><p>The IP or hostname to reply back to the client. Default: <code>127.0.0.1</code>. @see .create</p>
1680
+ </div>
1681
+
1682
+ </li>
1683
+
1684
+ </ul>
835
1685
 
836
- <p class="tag_title">See Also:</p>
837
- <ul class="see">
838
-
839
- <li><span class='object_link'><a href="#create-class_method" title="DevDNSd::Rule.create (method)">create</a></span></li>
1686
+ </div><table class="source_code">
1687
+ <tr>
1688
+ <td>
1689
+ <pre class="lines">
1690
+
1691
+
1692
+ 20
1693
+ 21
1694
+ 22
1695
+ 23
1696
+ 24
1697
+ 25
1698
+ 26
1699
+ 27
1700
+ 28
1701
+ 29
1702
+ 30
1703
+ 31
1704
+ 32
1705
+ 33
1706
+ 34
1707
+ 35
1708
+ 36
1709
+ 37
1710
+ 38
1711
+ 39
1712
+ 40
1713
+ 41
1714
+ 42
1715
+ 43
1716
+ 44
1717
+ 45
1718
+ 46
1719
+ 47
1720
+ 48
1721
+ 49
1722
+ 50
1723
+ 51
1724
+ 52
1725
+ 53
1726
+ 54
1727
+ 55
1728
+ 56
1729
+ 57
1730
+ 58
1731
+ 59
1732
+ 60
1733
+ 61
1734
+ 62
1735
+ 63
1736
+ 64
1737
+ 65
1738
+ 66
1739
+ 67
1740
+ 68
1741
+ 69
1742
+ 70
1743
+ 71
1744
+ 72
1745
+ 73
1746
+ 74
1747
+ 75
1748
+ 76
1749
+ 77
1750
+ 78
1751
+ 79
1752
+ 80
1753
+ 81
1754
+ 82
1755
+ 83
1756
+ 84
1757
+ 85
1758
+ 86
1759
+ 87
1760
+ 88
1761
+ 89
1762
+ 90
1763
+ 91
1764
+ 92
1765
+ 93
1766
+ 94
1767
+ 95
1768
+ 96
1769
+ 97
1770
+ 98
1771
+ 99
1772
+ 100
1773
+ 101
1774
+ 102
1775
+ 103
1776
+ 104
1777
+ 105
1778
+ 106
1779
+ 107
1780
+ 108
1781
+ 109
1782
+ 110
1783
+ 111
1784
+ 112
1785
+ 113
1786
+ 114
1787
+ 115
1788
+ 116
1789
+ 117
1790
+ 118
1791
+ 119
1792
+ 120
1793
+ 121
1794
+ 122
1795
+ 123
1796
+ 124
1797
+ 125
1798
+ 126
1799
+ 127
1800
+ 128
1801
+ 129
1802
+ 130
1803
+ 131
1804
+ 132
1805
+ 133
1806
+ 134
1807
+ 135
1808
+ 136
1809
+ 137
1810
+ 138
1811
+ 139
1812
+ 140
1813
+ 141
1814
+ 142
1815
+ 143
1816
+ 144
1817
+ 145
1818
+ 146
1819
+ 147
1820
+ 148
1821
+ 149
1822
+ 150
1823
+ 151
1824
+ 152
1825
+ 153
1826
+ 154
1827
+ 155
1828
+ 156
1829
+ 157
1830
+ 158
1831
+ 159
1832
+ 160
1833
+ 161
1834
+ 162
1835
+ 163
1836
+ 164
1837
+ 165</pre>
1838
+ </td>
1839
+ <td>
1840
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
1841
+
1842
+ <span class='kw'>class</span> <span class='const'>Rule</span>
1843
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
1844
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
1845
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
1846
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
1847
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
1848
+
1849
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
1850
+
1851
+ <span class='comment'># Creates a new rule.
1852
+ </span> <span class='comment'>#
1853
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1854
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
1855
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1856
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1857
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1858
+ </span> <span class='comment'># @see .create
1859
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1860
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
1861
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
1862
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1863
+ <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1864
+ <span class='kw'>end</span>
1865
+
1866
+ <span class='comment'># Returns the resource class(es) for the current rule.
1867
+ </span> <span class='comment'>#
1868
+ </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
1869
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
1870
+ <span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
1871
+ <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
1872
+ <span class='kw'>end</span>
1873
+
1874
+ <span class='comment'># Checks if the rule is a regexp.
1875
+ </span> <span class='comment'>#
1876
+ </span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
1877
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
1878
+ <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
1879
+ <span class='kw'>end</span>
1880
+
1881
+ <span class='comment'># Checks if the rule is a regexp.
1882
+ </span> <span class='comment'>#
1883
+ </span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
1884
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
1885
+ <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
1886
+ <span class='kw'>end</span>
1887
+
1888
+ <span class='comment'># Matches a hostname to the rule.
1889
+ </span> <span class='comment'>#
1890
+ </span> <span class='comment'># @param hostname [String] The hostname to match.
1891
+ </span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
1892
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
1893
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
1894
+ <span class='kw'>end</span>
1895
+
1896
+ <span class='comment'># Creates a new rule.
1897
+ </span> <span class='comment'>#
1898
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1899
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
1900
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
1901
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1902
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
1903
+ </span> <span class='comment'># @return [Rule] The new rule.
1904
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1905
+ <span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
1906
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1907
+ <span class='kw'>end</span>
1908
+
1909
+ <span class='comment'># Converts a class to the correspondent symbol.
1910
+ </span> <span class='comment'>#
1911
+ </span> <span class='comment'># @param klass [Class] The class to convert.
1912
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
1913
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
1914
+ <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
1915
+ <span class='kw'>end</span>
1916
+
1917
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
1918
+ </span> <span class='comment'>#
1919
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
1920
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
1921
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
1922
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1923
+ <span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
1924
+
1925
+ <span class='kw'>begin</span>
1926
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
1927
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
1928
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
1929
+ <span class='kw'>end</span>
1930
+ <span class='kw'>end</span>
1931
+
1932
+ <span class='id identifier rubyid_private'>private</span>
1933
+ <span class='comment'># Setups a new rule.
1934
+ </span> <span class='comment'>#
1935
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1936
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
1937
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1938
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1939
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1940
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1941
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
1942
+ <span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1943
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
1944
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1945
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1946
+ <span class='kw'>end</span>
1947
+
1948
+ <span class='comment'># Validates a newly created rule.
1949
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1950
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1951
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
1952
+ <span class='kw'>end</span>
1953
+
1954
+ <span class='comment'># Setups a new rule.
1955
+ </span> <span class='comment'>#
1956
+ </span> <span class='comment'># @param rv [Rule] The rule that is been created.
1957
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
1958
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
1959
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1960
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
1961
+ </span> <span class='comment'># @return [Rule] The new rule.
1962
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1963
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1964
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1965
+
1966
+ <span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
1967
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1968
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
1969
+ <span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
1970
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span>
1971
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1972
+ <span class='kw'>end</span>
1973
+
1974
+ <span class='id identifier rubyid_rv'>rv</span>
1975
+ <span class='kw'>end</span>
1976
+
1977
+ <span class='comment'># Validate options for a new rule creation.
1978
+ </span> <span class='comment'>#
1979
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
1980
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1981
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
1982
+ </span> <span class='comment'># @param localizer [Localizer] A localizer object.
1983
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
1984
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1985
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
1986
+ <span class='kw'>end</span>
1987
+ <span class='kw'>end</span></pre>
1988
+ </td>
1989
+ </tr>
1990
+ </table>
1991
+ </div>
840
1992
 
841
- </ul>
1993
+
1994
+ <span id="type=-instance_method"></span>
1995
+ <div class="method_details ">
1996
+ <h3 class="signature " id="type-instance_method">
1997
+
1998
+ - (<tt>Symbol</tt>) <strong>type</strong>
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+ </h3><div class="docstring">
2005
+ <div class="discussion">
2006
+ <p>The type of request to match. Default: <code>:A</code>. @see .create</p>
2007
+
2008
+
2009
+ </div>
2010
+ </div>
2011
+ <div class="tags">
2012
+
2013
+ <p class="tag_title">Returns:</p>
2014
+ <ul class="return">
2015
+
2016
+ <li>
2017
+
2018
+
2019
+ <span class='type'>(<tt>Symbol</tt>)</span>
2020
+
2021
+
2022
+
2023
+ &mdash;
2024
+ <div class='inline'><p>The type of request to match. Default: <code>:A</code>. @see .create</p>
2025
+ </div>
2026
+
2027
+ </li>
2028
+
2029
+ </ul>
842
2030
 
843
2031
  </div><table class="source_code">
844
2032
  <tr>
@@ -846,15 +2034,301 @@
846
2034
  <pre class="lines">
847
2035
 
848
2036
 
849
- 16
850
- 17
851
- 18</pre>
2037
+ 20
2038
+ 21
2039
+ 22
2040
+ 23
2041
+ 24
2042
+ 25
2043
+ 26
2044
+ 27
2045
+ 28
2046
+ 29
2047
+ 30
2048
+ 31
2049
+ 32
2050
+ 33
2051
+ 34
2052
+ 35
2053
+ 36
2054
+ 37
2055
+ 38
2056
+ 39
2057
+ 40
2058
+ 41
2059
+ 42
2060
+ 43
2061
+ 44
2062
+ 45
2063
+ 46
2064
+ 47
2065
+ 48
2066
+ 49
2067
+ 50
2068
+ 51
2069
+ 52
2070
+ 53
2071
+ 54
2072
+ 55
2073
+ 56
2074
+ 57
2075
+ 58
2076
+ 59
2077
+ 60
2078
+ 61
2079
+ 62
2080
+ 63
2081
+ 64
2082
+ 65
2083
+ 66
2084
+ 67
2085
+ 68
2086
+ 69
2087
+ 70
2088
+ 71
2089
+ 72
2090
+ 73
2091
+ 74
2092
+ 75
2093
+ 76
2094
+ 77
2095
+ 78
2096
+ 79
2097
+ 80
2098
+ 81
2099
+ 82
2100
+ 83
2101
+ 84
2102
+ 85
2103
+ 86
2104
+ 87
2105
+ 88
2106
+ 89
2107
+ 90
2108
+ 91
2109
+ 92
2110
+ 93
2111
+ 94
2112
+ 95
2113
+ 96
2114
+ 97
2115
+ 98
2116
+ 99
2117
+ 100
2118
+ 101
2119
+ 102
2120
+ 103
2121
+ 104
2122
+ 105
2123
+ 106
2124
+ 107
2125
+ 108
2126
+ 109
2127
+ 110
2128
+ 111
2129
+ 112
2130
+ 113
2131
+ 114
2132
+ 115
2133
+ 116
2134
+ 117
2135
+ 118
2136
+ 119
2137
+ 120
2138
+ 121
2139
+ 122
2140
+ 123
2141
+ 124
2142
+ 125
2143
+ 126
2144
+ 127
2145
+ 128
2146
+ 129
2147
+ 130
2148
+ 131
2149
+ 132
2150
+ 133
2151
+ 134
2152
+ 135
2153
+ 136
2154
+ 137
2155
+ 138
2156
+ 139
2157
+ 140
2158
+ 141
2159
+ 142
2160
+ 143
2161
+ 144
2162
+ 145
2163
+ 146
2164
+ 147
2165
+ 148
2166
+ 149
2167
+ 150
2168
+ 151
2169
+ 152
2170
+ 153
2171
+ 154
2172
+ 155
2173
+ 156
2174
+ 157
2175
+ 158
2176
+ 159
2177
+ 160
2178
+ 161
2179
+ 162
2180
+ 163
2181
+ 164
2182
+ 165</pre>
852
2183
  </td>
853
2184
  <td>
854
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 16</span>
2185
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
2186
+
2187
+ <span class='kw'>class</span> <span class='const'>Rule</span>
2188
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
2189
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
2190
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
2191
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
2192
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
2193
+
2194
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
2195
+
2196
+ <span class='comment'># Creates a new rule.
2197
+ </span> <span class='comment'>#
2198
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
2199
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
2200
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
2201
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
2202
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
2203
+ </span> <span class='comment'># @see .create
2204
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2205
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
2206
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
2207
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2208
+ <span class='id identifier rubyid_validate_rule'>validate_rule</span>
2209
+ <span class='kw'>end</span>
2210
+
2211
+ <span class='comment'># Returns the resource class(es) for the current rule.
2212
+ </span> <span class='comment'>#
2213
+ </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
2214
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
2215
+ <span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
2216
+ <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
2217
+ <span class='kw'>end</span>
2218
+
2219
+ <span class='comment'># Checks if the rule is a regexp.
2220
+ </span> <span class='comment'>#
2221
+ </span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
2222
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
2223
+ <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
2224
+ <span class='kw'>end</span>
855
2225
 
856
- <span class='kw'>def</span> <span class='id identifier rubyid_type'>type</span>
857
- <span class='ivar'>@type</span>
2226
+ <span class='comment'># Checks if the rule is a regexp.
2227
+ </span> <span class='comment'>#
2228
+ </span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
2229
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
2230
+ <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
2231
+ <span class='kw'>end</span>
2232
+
2233
+ <span class='comment'># Matches a hostname to the rule.
2234
+ </span> <span class='comment'>#
2235
+ </span> <span class='comment'># @param hostname [String] The hostname to match.
2236
+ </span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
2237
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
2238
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
2239
+ <span class='kw'>end</span>
2240
+
2241
+ <span class='comment'># Creates a new rule.
2242
+ </span> <span class='comment'>#
2243
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
2244
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
2245
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
2246
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
2247
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
2248
+ </span> <span class='comment'># @return [Rule] The new rule.
2249
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2250
+ <span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
2251
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2252
+ <span class='kw'>end</span>
2253
+
2254
+ <span class='comment'># Converts a class to the correspondent symbol.
2255
+ </span> <span class='comment'>#
2256
+ </span> <span class='comment'># @param klass [Class] The class to convert.
2257
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
2258
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
2259
+ <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
2260
+ <span class='kw'>end</span>
2261
+
2262
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
2263
+ </span> <span class='comment'>#
2264
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
2265
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
2266
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
2267
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
2268
+ <span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
2269
+
2270
+ <span class='kw'>begin</span>
2271
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
2272
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
2273
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
2274
+ <span class='kw'>end</span>
2275
+ <span class='kw'>end</span>
2276
+
2277
+ <span class='id identifier rubyid_private'>private</span>
2278
+ <span class='comment'># Setups a new rule.
2279
+ </span> <span class='comment'>#
2280
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
2281
+ </span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
2282
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
2283
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
2284
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
2285
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2286
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
2287
+ <span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
2288
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
2289
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
2290
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
2291
+ <span class='kw'>end</span>
2292
+
2293
+ <span class='comment'># Validates a newly created rule.
2294
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
2295
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
2296
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
2297
+ <span class='kw'>end</span>
2298
+
2299
+ <span class='comment'># Setups a new rule.
2300
+ </span> <span class='comment'>#
2301
+ </span> <span class='comment'># @param rv [Rule] The rule that is been created.
2302
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
2303
+ </span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
2304
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
2305
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
2306
+ </span> <span class='comment'># @return [Rule] The new rule.
2307
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2308
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
2309
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
2310
+
2311
+ <span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
2312
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
2313
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
2314
+ <span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
2315
+ </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span>
2316
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
2317
+ <span class='kw'>end</span>
2318
+
2319
+ <span class='id identifier rubyid_rv'>rv</span>
2320
+ <span class='kw'>end</span>
2321
+
2322
+ <span class='comment'># Validate options for a new rule creation.
2323
+ </span> <span class='comment'>#
2324
+ </span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
2325
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
2326
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
2327
+ </span> <span class='comment'># @param localizer [Localizer] A localizer object.
2328
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
2329
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
2330
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
2331
+ <span class='kw'>end</span>
858
2332
  <span class='kw'>end</span></pre>
859
2333
  </td>
860
2334
  </tr>
@@ -871,7 +2345,7 @@
871
2345
  <div class="method_details first">
872
2346
  <h3 class="signature first" id="create-class_method">
873
2347
 
874
- + (<tt>Object</tt>) <strong>create</strong>(match, reply_or_type = nil, type = nil, options = {}, &amp;block)
2348
+ + (<tt><span class='object_link'><a href="" title="DevDNSd::Rule (class)">Rule</a></span></tt>) <strong>create</strong>(match, reply_or_type = nil, type = nil, options = {}, &amp;block)
875
2349
 
876
2350
 
877
2351
 
@@ -971,16 +2445,20 @@
971
2445
 
972
2446
  </ul>
973
2447
 
974
- <p class="tag_title">Raises:</p>
975
- <ul class="raise">
2448
+ <p class="tag_title">Returns:</p>
2449
+ <ul class="return">
976
2450
 
977
2451
  <li>
978
2452
 
979
2453
 
980
- <span class='type'>(<tt><span class='object_link'><a href="Errors/InvalidRule.html" title="DevDNSd::Errors::InvalidRule (class)">DevDNSd::Errors::InvalidRule</a></span></tt>)</span>
2454
+ <span class='type'>(<tt><span class='object_link'><a href="" title="DevDNSd::Rule (class)">Rule</a></span></tt>)</span>
981
2455
 
982
2456
 
983
2457
 
2458
+ &mdash;
2459
+ <div class='inline'><p>The new rule.</p>
2460
+ </div>
2461
+
984
2462
  </li>
985
2463
 
986
2464
  </ul>
@@ -991,45 +2469,17 @@
991
2469
  <pre class="lines">
992
2470
 
993
2471
 
994
- 89
995
- 90
996
- 91
997
- 92
998
- 93
999
- 94
1000
- 95
1001
- 96
1002
- 97
1003
- 98
1004
- 99
1005
- 100
1006
- 101
1007
- 102
1008
- 103
1009
- 104
1010
- 105
1011
- 106</pre>
2472
+ 82
2473
+ 83
2474
+ 84
2475
+ 85</pre>
1012
2476
  </td>
1013
2477
  <td>
1014
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 89</span>
2478
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 82</span>
1015
2479
 
1016
2480
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1017
- <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>You must specify at least a rule and a host (also via a block). Optionally you can add a record type (default: A) and the options.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1018
- <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>You can only use hashs for options.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
1019
-
1020
- <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span>
1021
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1022
-
1023
- <span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
1024
- </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1025
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
1026
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1027
- <span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
1028
- </span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span>
1029
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
1030
- <span class='kw'>end</span>
1031
-
1032
- <span class='id identifier rubyid_rv'>rv</span>
2481
+ <span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
2482
+ <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1033
2483
  <span class='kw'>end</span></pre>
1034
2484
  </td>
1035
2485
  </tr>
@@ -1097,12 +2547,12 @@
1097
2547
  <pre class="lines">
1098
2548
 
1099
2549
 
1100
- 112
1101
- 113
1102
- 114</pre>
2550
+ 91
2551
+ 92
2552
+ 93</pre>
1103
2553
  </td>
1104
2554
  <td>
1105
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 112</span>
2555
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 91</span>
1106
2556
 
1107
2557
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
1108
2558
  <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
@@ -1115,7 +2565,7 @@
1115
2565
  <div class="method_details ">
1116
2566
  <h3 class="signature " id="symbol_to_resource_class-class_method">
1117
2567
 
1118
- + (<tt>Symbol</tt>) <strong>symbol_to_resource_class</strong>(symbol)
2568
+ + (<tt>Symbol</tt>) <strong>symbol_to_resource_class</strong>(symbol, locale = nil)
1119
2569
 
1120
2570
 
1121
2571
 
@@ -1147,6 +2597,23 @@
1147
2597
 
1148
2598
  </li>
1149
2599
 
2600
+ <li>
2601
+
2602
+ <span class='name'>locale</span>
2603
+
2604
+
2605
+ <span class='type'>(<tt>Symbol</tt>)</span>
2606
+
2607
+
2608
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
2609
+
2610
+
2611
+ &mdash;
2612
+ <div class='inline'><p>The locale to use for the messages.</p>
2613
+ </div>
2614
+
2615
+ </li>
2616
+
1150
2617
  </ul>
1151
2618
 
1152
2619
  <p class="tag_title">Returns:</p>
@@ -1173,26 +2640,26 @@
1173
2640
  <pre class="lines">
1174
2641
 
1175
2642
 
1176
- 120
1177
- 121
1178
- 122
1179
- 123
1180
- 124
1181
- 125
1182
- 126
1183
- 127
1184
- 128</pre>
2643
+ 100
2644
+ 101
2645
+ 102
2646
+ 103
2647
+ 104
2648
+ 105
2649
+ 106
2650
+ 107
2651
+ 108</pre>
1185
2652
  </td>
1186
2653
  <td>
1187
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 120</span>
2654
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 100</span>
1188
2655
 
1189
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span>
2656
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1190
2657
  <span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
1191
2658
 
1192
2659
  <span class='kw'>begin</span>
1193
2660
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
1194
2661
  <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
1195
- <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Invalid resource class </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
2662
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
1196
2663
  <span class='kw'>end</span>
1197
2664
  <span class='kw'>end</span></pre>
1198
2665
  </td>
@@ -1248,15 +2715,15 @@
1248
2715
  <pre class="lines">
1249
2716
 
1250
2717
 
1251
- 70
1252
- 71
1253
- 72</pre>
2718
+ 62
2719
+ 63
2720
+ 64</pre>
1254
2721
  </td>
1255
2722
  <td>
1256
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 70</span>
2723
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 62</span>
1257
2724
 
1258
2725
  <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
1259
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
2726
+ <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
1260
2727
  <span class='kw'>end</span></pre>
1261
2728
  </td>
1262
2729
  </tr>
@@ -1305,15 +2772,15 @@
1305
2772
  <pre class="lines">
1306
2773
 
1307
2774
 
1308
- 63
1309
- 64
1310
- 65</pre>
2775
+ 55
2776
+ 56
2777
+ 57</pre>
1311
2778
  </td>
1312
2779
  <td>
1313
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 63</span>
2780
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 55</span>
1314
2781
 
1315
2782
  <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
1316
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
2783
+ <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
1317
2784
  <span class='kw'>end</span></pre>
1318
2785
  </td>
1319
2786
  </tr>
@@ -1381,15 +2848,15 @@
1381
2848
  <pre class="lines">
1382
2849
 
1383
2850
 
1384
- 78
1385
- 79
1386
- 80</pre>
2851
+ 70
2852
+ 71
2853
+ 72</pre>
1387
2854
  </td>
1388
2855
  <td>
1389
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 78</span>
2856
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 70</span>
1390
2857
 
1391
2858
  <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
1392
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
2859
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
1393
2860
  <span class='kw'>end</span></pre>
1394
2861
  </td>
1395
2862
  </tr>
@@ -1438,16 +2905,16 @@
1438
2905
  <pre class="lines">
1439
2906
 
1440
2907
 
1441
- 55
1442
- 56
1443
- 57
1444
- 58</pre>
2908
+ 47
2909
+ 48
2910
+ 49
2911
+ 50</pre>
1445
2912
  </td>
1446
2913
  <td>
1447
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 55</span>
2914
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 47</span>
1448
2915
 
1449
2916
  <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
1450
- <span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
2917
+ <span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
1451
2918
  <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
1452
2919
  <span class='kw'>end</span></pre>
1453
2920
  </td>
@@ -1460,9 +2927,9 @@
1460
2927
  </div>
1461
2928
 
1462
2929
  <div id="footer">
1463
- Generated on Mon Oct 22 09:34:23 2012 by
2930
+ Generated on Sun Feb 10 13:20:33 2013 by
1464
2931
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1465
- 0.8.2.1 (ruby-1.9.2).
2932
+ 0.8.4.1 (ruby-1.9.3).
1466
2933
  </div>
1467
2934
 
1468
2935
  </body>