devdnsd 1.7.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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>