module Tins::FileBinary

def self.included(modul)

def self.included(modul)
  modul.instance_eval do
    extend ClassMethods
  end
  super
end

def ascii?(options = {})

+options+, see FileBinary#binary?.
FileBinary#binary? returns true, and nil otherwise. For an explanation of
Returns true if FileBinary#binary? returns false, false if
def ascii?(options = {})
  case binary?(options)
  when true   then false
  when false  then true
  end
end

def binary?(options = {})

from FileBinary.default_options is used instead.
from offset options[:offset]). If an option isn't given the one
buffer of size options[:buffer_size] that is checked (beginning
(8-th bit is 1) exceeds options[:percentage_binary] in the
options[:percentage_zeros] or the percentage of binary bytes
A file is considered to be binary if the percentage of zeros exceeds

considered to be binary, and nil if it was empty.
Returns true if this file is considered to be binary, false if it is not
def binary?(options = {})
  options = FileBinary.default_options.merge(options)
  old_pos = tell
  seek options[:offset], Constants::SEEK_SET
  data = read options[:buffer_size]
  !data or data.empty? and return nil
  data_size = data.size
  data.count(Constants::ZERO_RE).to_f / data_size >
    options[:percentage_zeros] / 100.0 and return true
  data.count(Constants::BINARY_RE).to_f / data_size >
    options[:percentage_binary] / 100.0
ensure
  old_pos and seek old_pos, Constants::SEEK_SET
end