module CucumberAnalytics::Nested

A mix-in module containing methods used by elements that are nested inside of other elements.

Attributes

parent_element[RW]

The parent object that contains self

Public Instance Methods

get_ancestor(ancestor_type) click to toggle source

Returns the ancestor of self that matches the given type.

# File lib/cucumber_analytics/nested.rb, line 13
def get_ancestor(ancestor_type)
  ancestor = self.parent_element
  target_type = {:directory => Directory,
                 :feature_file => FeatureFile,
                 :feature => Feature,
                 :test => TestElement,
                 :step => Step,
                 :table => Table,
                 :example => Example
  }[ancestor_type]

  raise(ArgumentError, "Unknown ancestor type '#{ancestor_type}'.") if target_type.nil?

  until ancestor.is_a?(target_type) || ancestor.nil?
    ancestor = ancestor.parent_element
  end

  ancestor
end