def warn(*args)
first = args.shift
if first.is_a? Class and first <= StructuredWarnings::Base
warning = first
message = args.shift
elsif first.is_a? StructuredWarnings::Base
warning = first.class
message = first.message
else
warning =
if caller.shift.include? 'lib/structured_warnings/kernel.rb'
StructuredWarnings::StandardWarning
else
StructuredWarnings::BuiltInWarning
end
message = first.to_s
end
return super unless args.empty?
if warning.active?
output = StructuredWarnings.warner.format(warning, message, caller(1))
super(output) unless output.nil? or output.to_s.empty?
end
end