def initialize( *args, &block )
@options = args.last.is_a?(Hash) ? args.pop : {}
if [String, Pathname].include?(args.last.class)
@options[:filename] = args.pop unless @options[:filename]
end
reset!
self.formatter = Yell.__fetch__(@options, :format, :formatter)
self.level = Yell.__fetch__(@options, :level, :default => 0)
self.name = Yell.__fetch__(@options, :name)
self.trace = Yell.__fetch__(@options, :trace, :default => :error)
self.silence(*Yell.__fetch__(@options, :silence, :default => []))
extract!(*Yell.__fetch__(@options, :adapters, :default => []))
self.adapter(args.pop) if args.any?
block.arity > 0 ? block.call(self) : instance_eval(&block) if block_given?
self.adapter(:file) if adapters.empty?
end