def context_from_signature(*signature, &block)
      if block_given?
        block
      else
        context = signature.shift
        context.is_a?(Proc) && signature.empty? ? context : nil
      end
    end
def context_from_signature(*signature, &block)
      if block_given?
        block
      else
        context = signature.shift
        context.is_a?(Proc) && signature.empty? ? context : nil
      end
    end
Returns the block or proc that serves as a context for an element
 definition. Consider the following element definitions:

    ul   :facts, id: 'fact-list'
    span :fact, -> { facts.span(class: 'site-item')}

 Here the second element definition provides a proc that contains a
 context for another element definition. That leads to the following
 construction being sent to the browser:

    @browser.ul(id: 'fact-list').span(class: 'site-item')