devdnsd 3.1.2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -2
  3. data/.rubocop.yml +82 -0
  4. data/.travis-gemfile +4 -10
  5. data/.travis.yml +11 -5
  6. data/CHANGELOG.md +11 -0
  7. data/Gemfile +9 -8
  8. data/README.md +4 -5
  9. data/Rakefile +22 -6
  10. data/bin/devdnsd +42 -36
  11. data/config/devdnsd_config.sample +11 -11
  12. data/devdnsd.gemspec +7 -6
  13. data/doc/DevDNSd.html +6 -6
  14. data/doc/DevDNSd/{ApplicationMethods/Aliases.html → Aliases.html} +96 -100
  15. data/doc/DevDNSd/Application.html +2170 -1084
  16. data/doc/DevDNSd/Configuration.html +63 -33
  17. data/doc/DevDNSd/Errors.html +3 -3
  18. data/doc/DevDNSd/Errors/InvalidRule.html +3 -3
  19. data/doc/DevDNSd/{ApplicationMethods/System.html → OSX.html} +116 -489
  20. data/doc/DevDNSd/Rule.html +448 -749
  21. data/doc/DevDNSd/{ApplicationMethods/Server.html → Server.html} +77 -73
  22. data/doc/DevDNSd/System.html +895 -0
  23. data/doc/DevDNSd/Version.html +6 -6
  24. data/doc/_index.html +28 -27
  25. data/doc/class_list.html +6 -2
  26. data/doc/file.README.html +8 -9
  27. data/doc/file_list.html +5 -1
  28. data/doc/frames.html +1 -1
  29. data/doc/index.html +8 -9
  30. data/doc/js/full_list.js +4 -1
  31. data/doc/method_list.html +106 -84
  32. data/doc/top-level-namespace.html +3 -3
  33. data/lib/devdnsd.rb +10 -8
  34. data/lib/devdnsd/aliases.rb +171 -0
  35. data/lib/devdnsd/application.rb +93 -704
  36. data/lib/devdnsd/configuration.rb +20 -11
  37. data/lib/devdnsd/errors.rb +1 -1
  38. data/lib/devdnsd/osx.rb +217 -0
  39. data/lib/devdnsd/rule.rb +65 -94
  40. data/lib/devdnsd/server.rb +118 -0
  41. data/lib/devdnsd/system.rb +102 -0
  42. data/lib/devdnsd/version.rb +3 -3
  43. data/locales/en.yml +17 -16
  44. data/locales/it.yml +17 -16
  45. data/spec/devdnsd/application_spec.rb +188 -184
  46. data/spec/devdnsd/configuration_spec.rb +2 -2
  47. data/spec/devdnsd/rule_spec.rb +33 -34
  48. data/spec/resolver_helper.rb +10 -27
  49. data/spec/spec_helper.rb +21 -7
  50. metadata +36 -21
  51. data/doc/DevDNSd/ApplicationMethods.html +0 -125
  52. data/doc/DevDNSd/ApplicationMethods/System/ClassMethods.html +0 -538
  53. data/spec/coverage_helper.rb +0 -20
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: DevDNSd::Rule
8
8
 
9
- &mdash; Documentation by YARD 0.8.7.4
9
+ &mdash; Documentation by YARD 0.8.7.6
10
10
 
11
11
  </title>
12
12
 
@@ -90,15 +90,11 @@
90
90
 
91
91
 
92
92
 
93
- <dt class="r2">Includes:</dt>
94
- <dd class="r2">Lazier::I18n</dd>
95
-
96
-
97
93
 
98
94
 
99
95
 
100
- <dt class="r1 last">Defined in:</dt>
101
- <dd class="r1 last">lib/devdnsd/rule.rb</dd>
96
+ <dt class="r2 last">Defined in:</dt>
97
+ <dd class="r2 last">lib/devdnsd/rule.rb</dd>
102
98
 
103
99
  </dl>
104
100
  <div class="clear"></div>
@@ -266,7 +262,7 @@
266
262
  <li class="public ">
267
263
  <span class="summary_signature">
268
264
 
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>
265
+ <a href="#create-class_method" title="create (class method)">+ (Rule) <strong>create</strong>(match: /.+/, reply: &quot;127.0.0.1&quot;, type: :A, options: {}, &amp;block) </a>
270
266
 
271
267
 
272
268
 
@@ -344,10 +340,12 @@
344
340
  <li class="public ">
345
341
  <span class="summary_signature">
346
342
 
347
- <a href="#has_block%3F-instance_method" title="#has_block? (instance method)">- (Boolean) <strong>has_block?</strong> </a>
343
+ <a href="#block%3F-instance_method" title="#block? (instance method)">- (Boolean) <strong>block?</strong> </a>
348
344
 
349
345
 
350
346
 
347
+ (also: #has_block?)
348
+
351
349
  </span>
352
350
 
353
351
 
@@ -367,7 +365,7 @@
367
365
  <li class="public ">
368
366
  <span class="summary_signature">
369
367
 
370
- <a href="#initialize-instance_method" title="#initialize (instance method)">- (Rule) <strong>initialize</strong>(match = /.+/, reply = &quot;127.0.0.1&quot;, type = :A, options = {}, &amp;block) </a>
368
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Rule) <strong>initialize</strong>(match: /.+/, reply: &quot;127.0.0.1&quot;, type: :A, options: {}, &amp;block) </a>
371
369
 
372
370
 
373
371
 
@@ -392,7 +390,7 @@
392
390
  <li class="public ">
393
391
  <span class="summary_signature">
394
392
 
395
- <a href="#is_regexp%3F-instance_method" title="#is_regexp? (instance method)">- (Boolean) <strong>is_regexp?</strong> </a>
393
+ <a href="#match_host-instance_method" title="#match_host (instance method)">- (MatchData|Boolean|Nil) <strong>match_host</strong>(hostname) </a>
396
394
 
397
395
 
398
396
 
@@ -406,7 +404,7 @@
406
404
 
407
405
 
408
406
 
409
- <span class="summary_desc"><div class='inline'><p>Checks if the rule is a regexp.</p>
407
+ <span class="summary_desc"><div class='inline'><p>Matches a hostname to the rule.</p>
410
408
  </div></span>
411
409
 
412
410
  </li>
@@ -415,10 +413,12 @@
415
413
  <li class="public ">
416
414
  <span class="summary_signature">
417
415
 
418
- <a href="#match_host-instance_method" title="#match_host (instance method)">- (MatchData|Boolean|Nil) <strong>match_host</strong>(hostname) </a>
416
+ <a href="#regexp%3F-instance_method" title="#regexp? (instance method)">- (Boolean) <strong>regexp?</strong> </a>
419
417
 
420
418
 
421
419
 
420
+ (also: #is_regexp?)
421
+
422
422
  </span>
423
423
 
424
424
 
@@ -429,7 +429,7 @@
429
429
 
430
430
 
431
431
 
432
- <span class="summary_desc"><div class='inline'><p>Matches a hostname to the rule.</p>
432
+ <span class="summary_desc"><div class='inline'><p>Checks if the rule is a regexp.</p>
433
433
  </div></span>
434
434
 
435
435
  </li>
@@ -461,14 +461,13 @@
461
461
  </ul>
462
462
 
463
463
 
464
-
465
- <div id="constructor_details" class="method_details_list">
464
+ <div id="constructor_details" class="method_details_list">
466
465
  <h2>Constructor Details</h2>
467
466
 
468
467
  <div class="method_details first">
469
468
  <h3 class="signature first" id="initialize-instance_method">
470
469
 
471
- - (<tt><span class='object_link'><a href="" title="DevDNSd::Rule (class)">Rule</a></span></tt>) <strong>initialize</strong>(match = /.+/, reply = &quot;127.0.0.1&quot;, type = :A, options = {}, &amp;block)
470
+ - (<tt><span class='object_link'><a href="" title="DevDNSd::Rule (class)">Rule</a></span></tt>) <strong>initialize</strong>(match: /.+/, reply: &quot;127.0.0.1&quot;, type: :A, options: {}, &amp;block)
472
471
 
473
472
 
474
473
 
@@ -493,8 +492,6 @@
493
492
  <span class='type'>(<tt>String|Regexp</tt>)</span>
494
493
 
495
494
 
496
- <em class="default">(defaults to: <tt>/.+/</tt>)</em>
497
-
498
495
 
499
496
  &mdash;
500
497
  <div class='inline'><p>The pattern to match.</p>
@@ -507,14 +504,12 @@
507
504
  <span class='name'>reply</span>
508
505
 
509
506
 
510
- <span class='type'>(<tt>String</tt>)</span>
511
-
507
+ <span class='type'>(<tt>String|Symbol</tt>)</span>
512
508
 
513
- <em class="default">(defaults to: <tt>&quot;127.0.0.1&quot;</tt>)</em>
514
509
 
515
510
 
516
511
  &mdash;
517
- <div class='inline'><p>The IP or hostname to reply back to the client.</p>
512
+ <div class='inline'><p>The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.</p>
518
513
  </div>
519
514
 
520
515
  </li>
@@ -527,8 +522,6 @@
527
522
  <span class='type'>(<tt>Symbol</tt>)</span>
528
523
 
529
524
 
530
- <em class="default">(defaults to: <tt>:A</tt>)</em>
531
-
532
525
 
533
526
  &mdash;
534
527
  <div class='inline'><p>The type of request to match.</p>
@@ -544,8 +537,6 @@
544
537
  <span class='type'>(<tt>Hash</tt>)</span>
545
538
 
546
539
 
547
- <em class="default">(defaults to: <tt>{}</tt>)</em>
548
-
549
540
 
550
541
  &mdash;
551
542
  <div class='inline'><p>A list of options for the request.</p>
@@ -584,19 +575,15 @@
584
575
  <pre class="lines">
585
576
 
586
577
 
587
- 37
588
- 38
589
- 39
590
- 40
591
- 41
592
- 42</pre>
578
+ 74
579
+ 75
580
+ 76
581
+ 77</pre>
593
582
  </td>
594
583
  <td>
595
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 37</span>
584
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 74</span>
596
585
 
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>
598
- <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>
586
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
600
587
  <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
588
  <span class='id identifier rubyid_validate_rule'>validate_rule</span>
602
589
  <span class='kw'>end</span></pre>
@@ -770,36 +757,7 @@
770
757
  133
771
758
  134
772
759
  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>
760
+ 136</pre>
803
761
  </td>
804
762
  <td>
805
763
  <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
@@ -811,19 +769,54 @@
811
769
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
812
770
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
813
771
 
814
- <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
772
+ <span class='comment'># Class methods
773
+ </span> <span class='kw'>class</span> <span class='op'>&lt;&lt;</span> <span class='kw'>self</span>
774
+ <span class='comment'># Creates a new rule.
775
+ </span> <span class='comment'>#
776
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
777
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
778
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
779
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
780
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
781
+ </span> <span class='comment'># @return [Rule] The new rule.
782
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
783
+ <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>match:</span> <span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='label'>reply:</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='label'>options:</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
784
+ <span class='kw'>end</span>
785
+
786
+ <span class='comment'># Converts a class to the correspondent symbol.
787
+ </span> <span class='comment'>#
788
+ </span> <span class='comment'># @param klass [Class] The class to convert.
789
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
790
+ </span> <span class='kw'>def</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>
791
+ <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>
792
+ <span class='kw'>end</span>
793
+
794
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
795
+ </span> <span class='comment'>#
796
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
797
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
798
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
799
+ </span> <span class='kw'>def</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>
800
+ <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>
801
+
802
+ <span class='kw'>begin</span>
803
+ <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='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
804
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
805
+ <span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
806
+ <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='comma'>,</span> <span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_resource'>rule_invalid_resource</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span>
807
+ <span class='kw'>end</span>
808
+ <span class='kw'>end</span>
809
+ <span class='kw'>end</span>
815
810
 
816
811
  <span class='comment'># Creates a new rule.
817
812
  </span> <span class='comment'>#
818
813
  </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.
814
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
820
815
  </span> <span class='comment'># @param type [Symbol] The type of request to match.
821
816
  </span> <span class='comment'># @param options [Hash] A list of options for the request.
822
817
  </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
823
818
  </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='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>
819
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
827
820
  <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
821
  <span class='id identifier rubyid_validate_rule'>validate_rule</span>
829
822
  <span class='kw'>end</span>
@@ -832,123 +825,59 @@
832
825
  </span> <span class='comment'>#
833
826
  </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
834
827
  </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='lparen'>(</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</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>
828
+ <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='lparen'>(</span><span class='label'>no_duplicates:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>compact:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>flatten:</span> <span class='kw'>true</span><span class='rparen'>)</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>
836
829
  <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
830
  <span class='kw'>end</span>
838
831
 
839
832
  <span class='comment'># Checks if the rule is a regexp.
840
833
  </span> <span class='comment'>#
841
834
  </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>
835
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_regexp?'>regexp?</span>
843
836
  <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
837
  <span class='kw'>end</span>
838
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:is_regexp?</span><span class='comma'>,</span> <span class='symbol'>:regexp?</span>
845
839
 
846
840
  <span class='comment'># Checks if the rule is a regexp.
847
841
  </span> <span class='comment'>#
848
842
  </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>
843
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_block?'>block?</span>
850
844
  <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
851
845
  <span class='kw'>end</span>
846
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:has_block?</span><span class='comma'>,</span> <span class='symbol'>:block?</span>
852
847
 
853
848
  <span class='comment'># Matches a hostname to the rule.
854
849
  </span> <span class='comment'>#
855
850
  </span> <span class='comment'># @param hostname [String] The hostname to match.
856
851
  </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
852
  </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='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='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>
853
+ <span class='id identifier rubyid_regexp?'>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>
872
854
  <span class='kw'>end</span>
873
855
 
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>
856
+ <span class='id identifier rubyid_private'>private</span>
881
857
 
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='embexpr_end'>}</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>
858
+ <span class='comment'># :nodoc:
859
+ </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>
860
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
896
861
 
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>
862
+ <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='comment'># reply acts like a type, type is ignored
863
+ </span> <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>
864
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
865
+ <span class='kw'>else</span> <span class='comment'># reply acts like a reply
866
+ </span> <span class='ivar'>@reply</span> <span class='op'>=</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>
907
867
  <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
868
  <span class='kw'>end</span>
912
869
 
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='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='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>
870
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
871
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
872
+ <span class='id identifier rubyid_locale'>locale</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='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='symbol'>:en</span>
873
+ <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
874
+ <span class='kw'>end</span>
941
875
 
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>
876
+ <span class='comment'># Validates a newly created rule.
877
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
878
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</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>
879
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span> <span class='kw'>unless</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>
880
+ <span class='kw'>end</span>
952
881
  <span class='kw'>end</span></pre>
953
882
  </td>
954
883
  </tr>
@@ -1115,36 +1044,7 @@
1115
1044
  133
1116
1045
  134
1117
1046
  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>
1047
+ 136</pre>
1148
1048
  </td>
1149
1049
  <td>
1150
1050
  <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
@@ -1156,19 +1056,54 @@
1156
1056
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
1157
1057
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
1158
1058
 
1159
- <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
1059
+ <span class='comment'># Class methods
1060
+ </span> <span class='kw'>class</span> <span class='op'>&lt;&lt;</span> <span class='kw'>self</span>
1061
+ <span class='comment'># Creates a new rule.
1062
+ </span> <span class='comment'>#
1063
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1064
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
1065
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1066
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1067
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1068
+ </span> <span class='comment'># @return [Rule] The new rule.
1069
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
1070
+ <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>match:</span> <span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='label'>reply:</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='label'>options:</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1071
+ <span class='kw'>end</span>
1072
+
1073
+ <span class='comment'># Converts a class to the correspondent symbol.
1074
+ </span> <span class='comment'>#
1075
+ </span> <span class='comment'># @param klass [Class] The class to convert.
1076
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
1077
+ </span> <span class='kw'>def</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>
1078
+ <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>
1079
+ <span class='kw'>end</span>
1080
+
1081
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
1082
+ </span> <span class='comment'>#
1083
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
1084
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
1085
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
1086
+ </span> <span class='kw'>def</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>
1087
+ <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>
1088
+
1089
+ <span class='kw'>begin</span>
1090
+ <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='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
1091
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
1092
+ <span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
1093
+ <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='comma'>,</span> <span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_resource'>rule_invalid_resource</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span>
1094
+ <span class='kw'>end</span>
1095
+ <span class='kw'>end</span>
1096
+ <span class='kw'>end</span>
1160
1097
 
1161
1098
  <span class='comment'># Creates a new rule.
1162
1099
  </span> <span class='comment'>#
1163
1100
  </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.
1101
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
1165
1102
  </span> <span class='comment'># @param type [Symbol] The type of request to match.
1166
1103
  </span> <span class='comment'># @param options [Hash] A list of options for the request.
1167
1104
  </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1168
1105
  </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='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>
1106
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
1172
1107
  <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
1108
  <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1174
1109
  <span class='kw'>end</span>
@@ -1177,123 +1112,59 @@
1177
1112
  </span> <span class='comment'>#
1178
1113
  </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
1179
1114
  </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='lparen'>(</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</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>
1115
+ <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='lparen'>(</span><span class='label'>no_duplicates:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>compact:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>flatten:</span> <span class='kw'>true</span><span class='rparen'>)</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>
1181
1116
  <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
1117
  <span class='kw'>end</span>
1183
1118
 
1184
1119
  <span class='comment'># Checks if the rule is a regexp.
1185
1120
  </span> <span class='comment'>#
1186
1121
  </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>
1122
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_regexp?'>regexp?</span>
1188
1123
  <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
1124
  <span class='kw'>end</span>
1125
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:is_regexp?</span><span class='comma'>,</span> <span class='symbol'>:regexp?</span>
1190
1126
 
1191
1127
  <span class='comment'># Checks if the rule is a regexp.
1192
1128
  </span> <span class='comment'>#
1193
1129
  </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>
1130
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_block?'>block?</span>
1195
1131
  <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
1196
1132
  <span class='kw'>end</span>
1133
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:has_block?</span><span class='comma'>,</span> <span class='symbol'>:block?</span>
1197
1134
 
1198
1135
  <span class='comment'># Matches a hostname to the rule.
1199
1136
  </span> <span class='comment'>#
1200
1137
  </span> <span class='comment'># @param hostname [String] The hostname to match.
1201
1138
  </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
1139
  </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='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>
1140
+ <span class='id identifier rubyid_regexp?'>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
1141
  <span class='kw'>end</span>
1205
1142
 
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='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>
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>
1143
+ <span class='id identifier rubyid_private'>private</span>
1226
1144
 
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='embexpr_end'>}</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>
1145
+ <span class='comment'># :nodoc:
1146
+ </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>
1147
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
1241
1148
 
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>
1149
+ <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='comment'># reply acts like a type, type is ignored
1150
+ </span> <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>
1151
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
1152
+ <span class='kw'>else</span> <span class='comment'># reply acts like a reply
1153
+ </span> <span class='ivar'>@reply</span> <span class='op'>=</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>
1252
1154
  <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='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='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
1155
  <span class='kw'>end</span>
1263
1156
 
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>
1157
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1158
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1159
+ <span class='id identifier rubyid_locale'>locale</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='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='symbol'>:en</span>
1160
+ <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
1161
+ <span class='kw'>end</span>
1286
1162
 
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>
1163
+ <span class='comment'># Validates a newly created rule.
1164
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1165
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</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>
1166
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span> <span class='kw'>unless</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>
1167
+ <span class='kw'>end</span>
1297
1168
  <span class='kw'>end</span></pre>
1298
1169
  </td>
1299
1170
  </tr>
@@ -1460,36 +1331,7 @@
1460
1331
  133
1461
1332
  134
1462
1333
  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>
1334
+ 136</pre>
1493
1335
  </td>
1494
1336
  <td>
1495
1337
  <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
@@ -1501,19 +1343,54 @@
1501
1343
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
1502
1344
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
1503
1345
 
1504
- <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
1346
+ <span class='comment'># Class methods
1347
+ </span> <span class='kw'>class</span> <span class='op'>&lt;&lt;</span> <span class='kw'>self</span>
1348
+ <span class='comment'># Creates a new rule.
1349
+ </span> <span class='comment'>#
1350
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1351
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
1352
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1353
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1354
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1355
+ </span> <span class='comment'># @return [Rule] The new rule.
1356
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
1357
+ <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>match:</span> <span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='label'>reply:</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='label'>options:</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1358
+ <span class='kw'>end</span>
1359
+
1360
+ <span class='comment'># Converts a class to the correspondent symbol.
1361
+ </span> <span class='comment'>#
1362
+ </span> <span class='comment'># @param klass [Class] The class to convert.
1363
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
1364
+ </span> <span class='kw'>def</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>
1365
+ <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>
1366
+ <span class='kw'>end</span>
1367
+
1368
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
1369
+ </span> <span class='comment'>#
1370
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
1371
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
1372
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
1373
+ </span> <span class='kw'>def</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>
1374
+ <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>
1375
+
1376
+ <span class='kw'>begin</span>
1377
+ <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='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
1378
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
1379
+ <span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
1380
+ <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='comma'>,</span> <span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_resource'>rule_invalid_resource</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span>
1381
+ <span class='kw'>end</span>
1382
+ <span class='kw'>end</span>
1383
+ <span class='kw'>end</span>
1505
1384
 
1506
1385
  <span class='comment'># Creates a new rule.
1507
1386
  </span> <span class='comment'>#
1508
1387
  </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.
1388
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
1510
1389
  </span> <span class='comment'># @param type [Symbol] The type of request to match.
1511
1390
  </span> <span class='comment'># @param options [Hash] A list of options for the request.
1512
1391
  </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1513
1392
  </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='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>
1393
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
1517
1394
  <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
1395
  <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1519
1396
  <span class='kw'>end</span>
@@ -1522,123 +1399,59 @@
1522
1399
  </span> <span class='comment'>#
1523
1400
  </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
1524
1401
  </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='lparen'>(</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</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>
1402
+ <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='lparen'>(</span><span class='label'>no_duplicates:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>compact:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>flatten:</span> <span class='kw'>true</span><span class='rparen'>)</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>
1526
1403
  <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
1404
  <span class='kw'>end</span>
1528
1405
 
1529
1406
  <span class='comment'># Checks if the rule is a regexp.
1530
1407
  </span> <span class='comment'>#
1531
1408
  </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>
1409
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_regexp?'>regexp?</span>
1533
1410
  <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
1411
  <span class='kw'>end</span>
1412
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:is_regexp?</span><span class='comma'>,</span> <span class='symbol'>:regexp?</span>
1535
1413
 
1536
1414
  <span class='comment'># Checks if the rule is a regexp.
1537
1415
  </span> <span class='comment'>#
1538
1416
  </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>
1417
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_block?'>block?</span>
1540
1418
  <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
1541
1419
  <span class='kw'>end</span>
1420
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:has_block?</span><span class='comma'>,</span> <span class='symbol'>:block?</span>
1542
1421
 
1543
1422
  <span class='comment'># Matches a hostname to the rule.
1544
1423
  </span> <span class='comment'>#
1545
1424
  </span> <span class='comment'># @param hostname [String] The hostname to match.
1546
1425
  </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
1426
  </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='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>
1427
+ <span class='id identifier rubyid_regexp?'>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
1428
  <span class='kw'>end</span>
1550
1429
 
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='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>
1430
+ <span class='id identifier rubyid_private'>private</span>
1571
1431
 
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='embexpr_end'>}</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>
1432
+ <span class='comment'># :nodoc:
1433
+ </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>
1434
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
1586
1435
 
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>
1436
+ <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='comment'># reply acts like a type, type is ignored
1437
+ </span> <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>
1438
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
1439
+ <span class='kw'>else</span> <span class='comment'># reply acts like a reply
1440
+ </span> <span class='ivar'>@reply</span> <span class='op'>=</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>
1597
1441
  <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='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='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
1442
  <span class='kw'>end</span>
1608
1443
 
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>
1444
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1445
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1446
+ <span class='id identifier rubyid_locale'>locale</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='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='symbol'>:en</span>
1447
+ <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
1448
+ <span class='kw'>end</span>
1631
1449
 
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>
1450
+ <span class='comment'># Validates a newly created rule.
1451
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1452
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</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>
1453
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span> <span class='kw'>unless</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>
1454
+ <span class='kw'>end</span>
1642
1455
  <span class='kw'>end</span></pre>
1643
1456
  </td>
1644
1457
  </tr>
@@ -1805,36 +1618,7 @@
1805
1618
  133
1806
1619
  134
1807
1620
  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>
1621
+ 136</pre>
1838
1622
  </td>
1839
1623
  <td>
1840
1624
  <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
@@ -1846,19 +1630,54 @@
1846
1630
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
1847
1631
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
1848
1632
 
1849
- <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
1633
+ <span class='comment'># Class methods
1634
+ </span> <span class='kw'>class</span> <span class='op'>&lt;&lt;</span> <span class='kw'>self</span>
1635
+ <span class='comment'># Creates a new rule.
1636
+ </span> <span class='comment'>#
1637
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1638
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
1639
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1640
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1641
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1642
+ </span> <span class='comment'># @return [Rule] The new rule.
1643
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
1644
+ <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>match:</span> <span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='label'>reply:</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='label'>options:</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1645
+ <span class='kw'>end</span>
1646
+
1647
+ <span class='comment'># Converts a class to the correspondent symbol.
1648
+ </span> <span class='comment'>#
1649
+ </span> <span class='comment'># @param klass [Class] The class to convert.
1650
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
1651
+ </span> <span class='kw'>def</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>
1652
+ <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>
1653
+ <span class='kw'>end</span>
1654
+
1655
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
1656
+ </span> <span class='comment'>#
1657
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
1658
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
1659
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
1660
+ </span> <span class='kw'>def</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>
1661
+ <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>
1662
+
1663
+ <span class='kw'>begin</span>
1664
+ <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='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
1665
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
1666
+ <span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
1667
+ <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='comma'>,</span> <span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_resource'>rule_invalid_resource</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span>
1668
+ <span class='kw'>end</span>
1669
+ <span class='kw'>end</span>
1670
+ <span class='kw'>end</span>
1850
1671
 
1851
1672
  <span class='comment'># Creates a new rule.
1852
1673
  </span> <span class='comment'>#
1853
1674
  </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.
1675
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
1855
1676
  </span> <span class='comment'># @param type [Symbol] The type of request to match.
1856
1677
  </span> <span class='comment'># @param options [Hash] A list of options for the request.
1857
1678
  </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1858
1679
  </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='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>
1680
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
1862
1681
  <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
1682
  <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1864
1683
  <span class='kw'>end</span>
@@ -1867,123 +1686,59 @@
1867
1686
  </span> <span class='comment'>#
1868
1687
  </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
1869
1688
  </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='lparen'>(</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</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>
1689
+ <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='lparen'>(</span><span class='label'>no_duplicates:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>compact:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>flatten:</span> <span class='kw'>true</span><span class='rparen'>)</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>
1871
1690
  <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
1691
  <span class='kw'>end</span>
1873
1692
 
1874
1693
  <span class='comment'># Checks if the rule is a regexp.
1875
1694
  </span> <span class='comment'>#
1876
1695
  </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>
1696
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_regexp?'>regexp?</span>
1878
1697
  <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
1698
  <span class='kw'>end</span>
1699
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:is_regexp?</span><span class='comma'>,</span> <span class='symbol'>:regexp?</span>
1880
1700
 
1881
1701
  <span class='comment'># Checks if the rule is a regexp.
1882
1702
  </span> <span class='comment'>#
1883
1703
  </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>
1704
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_block?'>block?</span>
1885
1705
  <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
1886
1706
  <span class='kw'>end</span>
1707
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:has_block?</span><span class='comma'>,</span> <span class='symbol'>:block?</span>
1887
1708
 
1888
1709
  <span class='comment'># Matches a hostname to the rule.
1889
1710
  </span> <span class='comment'>#
1890
1711
  </span> <span class='comment'># @param hostname [String] The hostname to match.
1891
1712
  </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
1713
  </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='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>
1714
+ <span class='id identifier rubyid_regexp?'>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
1715
  <span class='kw'>end</span>
1895
1716
 
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='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>
1717
+ <span class='id identifier rubyid_private'>private</span>
1916
1718
 
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='embexpr_end'>}</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>
1719
+ <span class='comment'># :nodoc:
1720
+ </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>
1721
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
1931
1722
 
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>
1723
+ <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='comment'># reply acts like a type, type is ignored
1724
+ </span> <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>
1725
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
1726
+ <span class='kw'>else</span> <span class='comment'># reply acts like a reply
1727
+ </span> <span class='ivar'>@reply</span> <span class='op'>=</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>
1942
1728
  <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='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='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
1729
  <span class='kw'>end</span>
1953
1730
 
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>
1731
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
1732
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1733
+ <span class='id identifier rubyid_locale'>locale</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='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='symbol'>:en</span>
1734
+ <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
1735
+ <span class='kw'>end</span>
1976
1736
 
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>
1737
+ <span class='comment'># Validates a newly created rule.
1738
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
1739
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</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>
1740
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span> <span class='kw'>unless</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>
1741
+ <span class='kw'>end</span>
1987
1742
  <span class='kw'>end</span></pre>
1988
1743
  </td>
1989
1744
  </tr>
@@ -2150,36 +1905,7 @@
2150
1905
  133
2151
1906
  134
2152
1907
  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>
1908
+ 136</pre>
2183
1909
  </td>
2184
1910
  <td>
2185
1911
  <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
@@ -2191,19 +1917,54 @@
2191
1917
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
2192
1918
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
2193
1919
 
2194
- <span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
1920
+ <span class='comment'># Class methods
1921
+ </span> <span class='kw'>class</span> <span class='op'>&lt;&lt;</span> <span class='kw'>self</span>
1922
+ <span class='comment'># Creates a new rule.
1923
+ </span> <span class='comment'>#
1924
+ </span> <span class='comment'># @param match [String|Regexp] The pattern to match.
1925
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
1926
+ </span> <span class='comment'># @param type [Symbol] The type of request to match.
1927
+ </span> <span class='comment'># @param options [Hash] A list of options for the request.
1928
+ </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
1929
+ </span> <span class='comment'># @return [Rule] The new rule.
1930
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
1931
+ <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>match:</span> <span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='label'>reply:</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='label'>options:</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1932
+ <span class='kw'>end</span>
1933
+
1934
+ <span class='comment'># Converts a class to the correspondent symbol.
1935
+ </span> <span class='comment'>#
1936
+ </span> <span class='comment'># @param klass [Class] The class to convert.
1937
+ </span> <span class='comment'># @return [Symbol] The symbol representation of the class.
1938
+ </span> <span class='kw'>def</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>
1939
+ <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>
1940
+ <span class='kw'>end</span>
1941
+
1942
+ <span class='comment'># Converts a symbol to the correspondent DNS resource class.
1943
+ </span> <span class='comment'>#
1944
+ </span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
1945
+ </span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
1946
+ </span> <span class='comment'># @return [Symbol] The class associated to the symbol.
1947
+ </span> <span class='kw'>def</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>
1948
+ <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>
1949
+
1950
+ <span class='kw'>begin</span>
1951
+ <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='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
1952
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
1953
+ <span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
1954
+ <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='comma'>,</span> <span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_resource'>rule_invalid_resource</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span>
1955
+ <span class='kw'>end</span>
1956
+ <span class='kw'>end</span>
1957
+ <span class='kw'>end</span>
2195
1958
 
2196
1959
  <span class='comment'># Creates a new rule.
2197
1960
  </span> <span class='comment'>#
2198
1961
  </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.
1962
+ </span> <span class='comment'># @param reply [String|Symbol] The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.
2200
1963
  </span> <span class='comment'># @param type [Symbol] The type of request to match.
2201
1964
  </span> <span class='comment'># @param options [Hash] A list of options for the request.
2202
1965
  </span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
2203
1966
  </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='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>
1967
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
2207
1968
  <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
1969
  <span class='id identifier rubyid_validate_rule'>validate_rule</span>
2209
1970
  <span class='kw'>end</span>
@@ -2212,123 +1973,59 @@
2212
1973
  </span> <span class='comment'>#
2213
1974
  </span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
2214
1975
  </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='lparen'>(</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</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>
1976
+ <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='lparen'>(</span><span class='label'>no_duplicates:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>compact:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>flatten:</span> <span class='kw'>true</span><span class='rparen'>)</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>
2216
1977
  <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
1978
  <span class='kw'>end</span>
2218
1979
 
2219
1980
  <span class='comment'># Checks if the rule is a regexp.
2220
1981
  </span> <span class='comment'>#
2221
1982
  </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>
1983
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_regexp?'>regexp?</span>
2223
1984
  <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
1985
  <span class='kw'>end</span>
1986
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:is_regexp?</span><span class='comma'>,</span> <span class='symbol'>:regexp?</span>
2225
1987
 
2226
1988
  <span class='comment'># Checks if the rule is a regexp.
2227
1989
  </span> <span class='comment'>#
2228
1990
  </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>
1991
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_block?'>block?</span>
2230
1992
  <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
2231
1993
  <span class='kw'>end</span>
1994
+ <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:has_block?</span><span class='comma'>,</span> <span class='symbol'>:block?</span>
2232
1995
 
2233
1996
  <span class='comment'># Matches a hostname to the rule.
2234
1997
  </span> <span class='comment'>#
2235
1998
  </span> <span class='comment'># @param hostname [String] The hostname to match.
2236
1999
  </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
2000
  </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='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>
2001
+ <span class='id identifier rubyid_regexp?'>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
2002
  <span class='kw'>end</span>
2240
2003
 
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='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>
2004
+ <span class='id identifier rubyid_private'>private</span>
2253
2005
 
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>
2006
+ <span class='comment'># :nodoc:
2007
+ </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>
2008
+ <span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
2261
2009
 
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='embexpr_end'>}</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>
2010
+ <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='comment'># reply acts like a type, type is ignored
2011
+ </span> <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>
2012
+ <span class='ivar'>@reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
2013
+ <span class='kw'>else</span> <span class='comment'># reply acts like a reply
2014
+ </span> <span class='ivar'>@reply</span> <span class='op'>=</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>
2287
2015
  <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
2016
  <span class='kw'>end</span>
2292
2017
 
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='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='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>
2018
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
2019
+ <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
2020
+ <span class='id identifier rubyid_locale'>locale</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='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='symbol'>:en</span>
2021
+ <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
2022
+ <span class='kw'>end</span>
2321
2023
 
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>
2024
+ <span class='comment'># Validates a newly created rule.
2025
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
2026
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</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>
2027
+ <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='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span> <span class='kw'>unless</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>
2028
+ <span class='kw'>end</span>
2332
2029
  <span class='kw'>end</span></pre>
2333
2030
  </td>
2334
2031
  </tr>
@@ -2345,7 +2042,7 @@
2345
2042
  <div class="method_details first">
2346
2043
  <h3 class="signature first" id="create-class_method">
2347
2044
 
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)
2045
+ + (<tt><span class='object_link'><a href="" title="DevDNSd::Rule (class)">Rule</a></span></tt>) <strong>create</strong>(match: /.+/, reply: &quot;127.0.0.1&quot;, type: :A, options: {}, &amp;block)
2349
2046
 
2350
2047
 
2351
2048
 
@@ -2379,17 +2076,15 @@
2379
2076
 
2380
2077
  <li>
2381
2078
 
2382
- <span class='name'>reply_or_type</span>
2079
+ <span class='name'>reply</span>
2383
2080
 
2384
2081
 
2385
2082
  <span class='type'>(<tt>String|Symbol</tt>)</span>
2386
2083
 
2387
2084
 
2388
- <em class="default">(defaults to: <tt>nil</tt>)</em>
2389
-
2390
2085
 
2391
2086
  &mdash;
2392
- <div class='inline'><p>The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).</p>
2087
+ <div class='inline'><p>The IP or hostname to reply back to the client. It can be omitted (and it will be ignored) if a block is provided.</p>
2393
2088
  </div>
2394
2089
 
2395
2090
  </li>
@@ -2402,11 +2097,9 @@
2402
2097
  <span class='type'>(<tt>Symbol</tt>)</span>
2403
2098
 
2404
2099
 
2405
- <em class="default">(defaults to: <tt>nil</tt>)</em>
2406
-
2407
2100
 
2408
2101
  &mdash;
2409
- <div class='inline'><p>The type of request to match. This is ignored if a block is provided.</p>
2102
+ <div class='inline'><p>The type of request to match.</p>
2410
2103
  </div>
2411
2104
 
2412
2105
  </li>
@@ -2419,8 +2112,6 @@
2419
2112
  <span class='type'>(<tt>Hash</tt>)</span>
2420
2113
 
2421
2114
 
2422
- <em class="default">(defaults to: <tt>{}</tt>)</em>
2423
-
2424
2115
 
2425
2116
  &mdash;
2426
2117
  <div class='inline'><p>A list of options for the request.</p>
@@ -2438,7 +2129,7 @@
2438
2129
 
2439
2130
 
2440
2131
  &mdash;
2441
- <div class='inline'><p>An optional block to compute the reply instead of using the <code>reply_or_type</code> parameter. In this case <code>reply_or_type</code> is used for the type of the request and <code>type</code> is ignored.</p>
2132
+ <div class='inline'><p>An optional block to compute the reply instead of using the <code>reply</code> parameter.</p>
2442
2133
  </div>
2443
2134
 
2444
2135
  </li>
@@ -2469,17 +2160,15 @@
2469
2160
  <pre class="lines">
2470
2161
 
2471
2162
 
2472
- 82
2473
- 83
2474
- 84
2475
- 85</pre>
2163
+ 37
2164
+ 38
2165
+ 39</pre>
2476
2166
  </td>
2477
2167
  <td>
2478
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 82</span>
2168
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 37</span>
2479
2169
 
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>
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='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>
2170
+ <span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='label'>match:</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='label'>reply:</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='label'>type:</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='label'>options:</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>
2171
+ <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>match:</span> <span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='label'>reply:</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='label'>options:</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2483
2172
  <span class='kw'>end</span></pre>
2484
2173
  </td>
2485
2174
  </tr>
@@ -2547,14 +2236,14 @@
2547
2236
  <pre class="lines">
2548
2237
 
2549
2238
 
2550
- 91
2551
- 92
2552
- 93</pre>
2239
+ 45
2240
+ 46
2241
+ 47</pre>
2553
2242
  </td>
2554
2243
  <td>
2555
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 91</span>
2244
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 45</span>
2556
2245
 
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>
2246
+ <span class='kw'>def</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>
2558
2247
  <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>
2559
2248
  <span class='kw'>end</span></pre>
2560
2249
  </td>
@@ -2640,26 +2329,28 @@
2640
2329
  <pre class="lines">
2641
2330
 
2642
2331
 
2643
- 100
2644
- 101
2645
- 102
2646
- 103
2647
- 104
2648
- 105
2649
- 106
2650
- 107
2651
- 108</pre>
2332
+ 54
2333
+ 55
2334
+ 56
2335
+ 57
2336
+ 58
2337
+ 59
2338
+ 60
2339
+ 61
2340
+ 62
2341
+ 63</pre>
2652
2342
  </td>
2653
2343
  <td>
2654
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 100</span>
2344
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 54</span>
2655
2345
 
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>
2346
+ <span class='kw'>def</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>
2657
2347
  <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>
2658
2348
 
2659
2349
  <span class='kw'>begin</span>
2660
2350
  <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='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
2661
2351
  <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</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>
2352
+ <span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_locale'>locale</span><span class='comma'>,</span> <span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>devdnsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</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>
2353
+ <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='comma'>,</span> <span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_resource'>rule_invalid_resource</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span>
2663
2354
  <span class='kw'>end</span>
2664
2355
  <span class='kw'>end</span></pre>
2665
2356
  </td>
@@ -2674,12 +2365,16 @@
2674
2365
 
2675
2366
 
2676
2367
  <div class="method_details first">
2677
- <h3 class="signature first" id="has_block?-instance_method">
2368
+ <h3 class="signature first" id="block?-instance_method">
2678
2369
 
2679
- - (<tt>Boolean</tt>) <strong>has_block?</strong>
2370
+ - (<tt>Boolean</tt>) <strong>block?</strong>
2680
2371
 
2681
2372
 
2682
2373
 
2374
+ <span class="aliases">Also known as:
2375
+ <span class="names"><span id='has_block?-instance_method'>has_block?</span></span>
2376
+ </span>
2377
+
2683
2378
 
2684
2379
 
2685
2380
  </h3><div class="docstring">
@@ -2715,14 +2410,14 @@
2715
2410
  <pre class="lines">
2716
2411
 
2717
2412
 
2718
- 62
2719
- 63
2720
- 64</pre>
2413
+ 98
2414
+ 99
2415
+ 100</pre>
2721
2416
  </td>
2722
2417
  <td>
2723
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 62</span>
2418
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 98</span>
2724
2419
 
2725
- <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
2420
+ <span class='kw'>def</span> <span class='id identifier rubyid_block?'>block?</span>
2726
2421
  <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
2727
2422
  <span class='kw'>end</span></pre>
2728
2423
  </td>
@@ -2731,9 +2426,9 @@
2731
2426
  </div>
2732
2427
 
2733
2428
  <div class="method_details ">
2734
- <h3 class="signature " id="is_regexp?-instance_method">
2429
+ <h3 class="signature " id="match_host-instance_method">
2735
2430
 
2736
- - (<tt>Boolean</tt>) <strong>is_regexp?</strong>
2431
+ - (<tt>MatchData|Boolean|Nil</tt>) <strong>match_host</strong>(hostname)
2737
2432
 
2738
2433
 
2739
2434
 
@@ -2741,25 +2436,44 @@
2741
2436
 
2742
2437
  </h3><div class="docstring">
2743
2438
  <div class="discussion">
2744
- <p>Checks if the rule is a regexp.</p>
2439
+ <p>Matches a hostname to the rule.</p>
2745
2440
 
2746
2441
 
2747
2442
  </div>
2748
2443
  </div>
2749
2444
  <div class="tags">
2445
+ <p class="tag_title">Parameters:</p>
2446
+ <ul class="param">
2750
2447
 
2448
+ <li>
2449
+
2450
+ <span class='name'>hostname</span>
2451
+
2452
+
2453
+ <span class='type'>(<tt>String</tt>)</span>
2454
+
2455
+
2456
+
2457
+ &mdash;
2458
+ <div class='inline'><p>The hostname to match.</p>
2459
+ </div>
2460
+
2461
+ </li>
2462
+
2463
+ </ul>
2464
+
2751
2465
  <p class="tag_title">Returns:</p>
2752
2466
  <ul class="return">
2753
2467
 
2754
2468
  <li>
2755
2469
 
2756
2470
 
2757
- <span class='type'>(<tt>Boolean</tt>)</span>
2471
+ <span class='type'>(<tt>MatchData|Boolean|Nil</tt>)</span>
2758
2472
 
2759
2473
 
2760
2474
 
2761
2475
  &mdash;
2762
- <div class='inline'><p><code>true</code> if the rule is a Regexp, <code>false</code> otherwise.</p>
2476
+ <div class='inline'><p>Return <code>true</code> or MatchData (if the pattern is a regexp) if the rule matches, <code>false</code> or <code>nil</code> otherwise.</p>
2763
2477
  </div>
2764
2478
 
2765
2479
  </li>
@@ -2772,15 +2486,15 @@
2772
2486
  <pre class="lines">
2773
2487
 
2774
2488
 
2775
- 55
2776
- 56
2777
- 57</pre>
2489
+ 107
2490
+ 108
2491
+ 109</pre>
2778
2492
  </td>
2779
2493
  <td>
2780
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 55</span>
2494
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 107</span>
2781
2495
 
2782
- <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</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>
2496
+ <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>
2497
+ <span class='id identifier rubyid_regexp?'>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>
2784
2498
  <span class='kw'>end</span></pre>
2785
2499
  </td>
2786
2500
  </tr>
@@ -2788,54 +2502,39 @@
2788
2502
  </div>
2789
2503
 
2790
2504
  <div class="method_details ">
2791
- <h3 class="signature " id="match_host-instance_method">
2505
+ <h3 class="signature " id="regexp?-instance_method">
2792
2506
 
2793
- - (<tt>MatchData|Boolean|Nil</tt>) <strong>match_host</strong>(hostname)
2507
+ - (<tt>Boolean</tt>) <strong>regexp?</strong>
2794
2508
 
2795
2509
 
2796
2510
 
2511
+ <span class="aliases">Also known as:
2512
+ <span class="names"><span id='is_regexp?-instance_method'>is_regexp?</span></span>
2513
+ </span>
2514
+
2797
2515
 
2798
2516
 
2799
2517
  </h3><div class="docstring">
2800
2518
  <div class="discussion">
2801
- <p>Matches a hostname to the rule.</p>
2519
+ <p>Checks if the rule is a regexp.</p>
2802
2520
 
2803
2521
 
2804
2522
  </div>
2805
2523
  </div>
2806
2524
  <div class="tags">
2807
- <p class="tag_title">Parameters:</p>
2808
- <ul class="param">
2809
-
2810
- <li>
2811
-
2812
- <span class='name'>hostname</span>
2813
-
2814
-
2815
- <span class='type'>(<tt>String</tt>)</span>
2816
-
2817
-
2818
-
2819
- &mdash;
2820
- <div class='inline'><p>The hostname to match.</p>
2821
- </div>
2822
-
2823
- </li>
2824
2525
 
2825
- </ul>
2826
-
2827
2526
  <p class="tag_title">Returns:</p>
2828
2527
  <ul class="return">
2829
2528
 
2830
2529
  <li>
2831
2530
 
2832
2531
 
2833
- <span class='type'>(<tt>MatchData|Boolean|Nil</tt>)</span>
2532
+ <span class='type'>(<tt>Boolean</tt>)</span>
2834
2533
 
2835
2534
 
2836
2535
 
2837
2536
  &mdash;
2838
- <div class='inline'><p>Return <code>true</code> or MatchData (if the pattern is a regexp) if the rule matches, <code>false</code> or <code>nil</code> otherwise.</p>
2537
+ <div class='inline'><p><code>true</code> if the rule is a Regexp, <code>false</code> otherwise.</p>
2839
2538
  </div>
2840
2539
 
2841
2540
  </li>
@@ -2848,15 +2547,15 @@
2848
2547
  <pre class="lines">
2849
2548
 
2850
2549
 
2851
- 70
2852
- 71
2853
- 72</pre>
2550
+ 90
2551
+ 91
2552
+ 92</pre>
2854
2553
  </td>
2855
2554
  <td>
2856
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 70</span>
2555
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 90</span>
2857
2556
 
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>
2859
- <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>
2557
+ <span class='kw'>def</span> <span class='id identifier rubyid_regexp?'>regexp?</span>
2558
+ <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>
2860
2559
  <span class='kw'>end</span></pre>
2861
2560
  </td>
2862
2561
  </tr>
@@ -2905,16 +2604,16 @@
2905
2604
  <pre class="lines">
2906
2605
 
2907
2606
 
2908
- 47
2909
- 48
2910
- 49
2911
- 50</pre>
2607
+ 82
2608
+ 83
2609
+ 84
2610
+ 85</pre>
2912
2611
  </td>
2913
2612
  <td>
2914
- <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 47</span>
2613
+ <pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 82</span>
2915
2614
 
2916
2615
  <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</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='lparen'>(</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</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>
2616
+ <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='lparen'>(</span><span class='label'>no_duplicates:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>compact:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>flatten:</span> <span class='kw'>true</span><span class='rparen'>)</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>
2918
2617
  <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>
2919
2618
  <span class='kw'>end</span></pre>
2920
2619
  </td>
@@ -2927,9 +2626,9 @@
2927
2626
  </div>
2928
2627
 
2929
2628
  <div id="footer">
2930
- Generated on Sat Mar 29 11:53:13 2014 by
2629
+ Generated on Wed Mar 30 19:23:43 2016 by
2931
2630
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2932
- 0.8.7.4 (ruby-2.1.0).
2631
+ 0.8.7.6 (ruby-2.3.0).
2933
2632
  </div>
2934
2633
 
2935
2634
  </body>