title: Can Cucumber hooks differentiate tags
body: <p>Ruby 2. I have an API realised as a module.  It defines a class as simply as</p>
  
  <pre><code>class Foo
    include API
  end
  </code></pre>
  
  <p>but it's also used to extend another module <em>via</em></p>
  
  <pre><code>module Bar
    class &lt;&lt; self
      include API
    end
  end
  </code></pre>
  
  <p>I want to test the behaviour both of an instance of Foo (<em>e.g.</em>, <code>Foo.new.</code><em>methname</em>) but also the module functions (<em>e.g.</em>, <code>Bar.</code><em>methname</em>).</p>
  
  <p>One of my <code>Before</code> hooks defines <code>@exemplar</code> as the default object against tests should be applied.  So, the question: how can my <code>Before</code> hook tell whether it should use <code>@exemplar = Bar</code> or <code>@exemplar = Foo.new</code> ?</p>
  
  <p>Alternatively, after playing with tags a bit, let me try a different approach.  If a scenario is tagged with <code>@a</code> and <code>@b</code>, and I have <code>Around('@a')</code> and <code>Around('@b')</code> hooks, and cucumber is invoked with <code>-t @a</code>, <em>both</em> hooks get invoked.  Is there a way the hook code can tell</p>
  
  <ol>
  <li>What the <code>Around('...')</code> argument is (<em>i.e.</em>, the value of the <code>'...'</code>), and</li>
  <li>What tags are actually in the set being applied?</li>
  </ol>
  
  <p><em>I.e.</em>, is there any way the <code>Around('@b')</code> hook can tell that it's for the <code>@b</code> tag expression, <em>and</em> that <code>@b</code> is <strong>not</strong> in the list of tags being applied?</p>
  
  <p>Thanks!</p>