class Covered::Policy

def cache!

def cache!
	@output = Cache.new(@output)
end

def call(*args)

def call(*args)
	@reports.each do |report|
		report.call(self, *args)
	end
end

def capture

def capture
	@capture ||= Capture.new(@output)
end

def disable

def disable
	capture.disable
end

def enable

def enable
	capture.enable
end

def freeze

def freeze
	return self if frozen?
	
	capture
	@reports.freeze
	
	super
end

def include(*args)

def include(*args)
	@output = Include.new(@output, *args)
end

def initialize

def initialize
	super(Files.new)
	
	@reports = []
end

def only(*args)

def only(*args)
	@output = Only.new(@output, *args)
end

def persist!

def persist!
	@output = Persist.new(@output)
end

def reports!(coverage = ENV['COVERAGE'])

def reports!(coverage = ENV['COVERAGE'])
	if coverage
		names = coverage.split(',')
		
		names.each do |name|
			begin
				klass = Covered.const_get(name)
				@reports << klass.new
			rescue NameError
				@reports << Autoload.new(name)
			end
		end
	else
		@reports << Covered::BriefSummary.new
	end
end

def root(*args)

def root(*args)
	@output = Root.new(@output, *args)
end

def skip(*args)

def skip(*args)
	@output = Skip.new(@output, *args)
end

def source(*args)

def source(*args)
	@output = Source.new(@output, *args)
end