module Spec::Example::SharedExampleGroup::ClassMethods

def already_registered?(new_example_group)

def already_registered?(new_example_group)
  existing_example_group = find(new_example_group.description)
  return false unless existing_example_group
  return true if new_example_group.equal?(existing_example_group)
  return true if expanded_path(new_example_group) == expanded_path(existing_example_group)
  raise ArgumentError.new("Shared Example '#{existing_example_group.description}' already exists")
end

def clear

def clear
  shared_example_groups.clear
end

def count

def count
  shared_example_groups.length
end

def expanded_path(example_group)

def expanded_path(example_group)
  File.expand_path(example_group.location)
end

def find(example_group_description)

def find(example_group_description)
  shared_example_groups.find {|b| b.description == example_group_description}
end

def include?(group)

def include?(group)
  shared_example_groups.include?(group)
end

def register(*args, &block)

def register(*args, &block)
  new_example_group = new(*args, &block)
  shared_example_groups << new_example_group unless already_registered?(new_example_group)
  new_example_group
end

def shared_example_groups

def shared_example_groups
  @shared_example_groups ||= []
end