def validate_data! options, block
data = options[:data]
filename = options[:file]
raise ArgumentError, 'data passed multiple ways' if
[data, filename, block].compact.size > 1
return if block and block.arity == 1
return if filename.kind_of?(String)
return if data.kind_of?(String)
return if data.kind_of?(Pathname)
if data.respond_to?(:read) and
data.method(:read).arity != 0 and
data.respond_to?(:eof?) then
return true
end
raise ArgumentError, 'data must be provided as a String, ' +
'Pathname, file path, or an object that responds to #read and #eof?'
end