class Covered::Policy::Autoload

def call(*args)

def call(*args)
	self.new.call(*args)
end

def initialize(name)

def initialize(name)
	@name = name
end

def new

def new
	begin
		klass = Covered.const_get(@name)
	rescue NameError
		require_relative(snake_case(@name))
	end
	
	klass = Covered.const_get(@name)
	
	return klass.new
end

def snake_case(name)

def snake_case(name)
	name.gsub(/(.+)(?=[A-Z\z])/){$1 + '_'}.downcase
end

def to_s

def to_s
	"\#<#{self.class} loading #{@name}>"
end