Module: Tins::FileBinary
- Defined in:
- lib/tins/file_binary.rb
Defined Under Namespace
Modules: ClassMethods, Constants
Class Attribute Summary collapse
-
.default_options ⇒ Object
Default options can be queried/set via this hash.
Class Method Summary collapse
Instance Method Summary collapse
-
#ascii?(options = {}) ⇒ Boolean
Returns true if FileBinary#binary? returns false, false if FileBinary#binary? returns true, and nil otherwise.
-
#binary?(options = {}) ⇒ Boolean
Returns true if this file is considered to be binary, false if it is not considered to be binary, and nil if it was empty.
Class Attribute Details
.default_options ⇒ Object
Default options can be queried/set via this hash.
17 18 19 |
# File 'lib/tins/file_binary.rb', line 17 def @default_options end |
Class Method Details
.included(modul) ⇒ Object
60 61 62 63 64 65 |
# File 'lib/tins/file_binary.rb', line 60 def self.included(modul) modul.instance_eval do extend ClassMethods end super end |
Instance Method Details
#ascii?(options = {}) ⇒ Boolean
Returns true if FileBinary#binary? returns false, false if FileBinary#binary? returns true, and nil otherwise. For an explanation of options
, see FileBinary#binary?.
53 54 55 56 57 58 |
# File 'lib/tins/file_binary.rb', line 53 def ascii?( = {}) case binary?() when true then false when false then true end end |
#binary?(options = {}) ⇒ Boolean
Returns true if this file is considered to be binary, false if it is not considered to be binary, and nil if it was empty.
A file is considered to be binary if the percentage of zeros exceeds options[:percentage_zeros]
or the percentage of binary bytes (8-th bit is 1) exceeds options[:percentage_binary]
in the buffer of size options[:buffer_size]
that is checked (beginning from offset options[:offset]
). If an option isn’t given the one from FileBinary.default_options is used instead.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/tins/file_binary.rb', line 35 def binary?( = {}) = FileBinary..merge() old_pos = tell seek [:offset], Constants::SEEK_SET data = read [:buffer_size] !data or data.empty? and return nil data_size = data.size data.count(Constants::ZERO_RE).to_f / data_size > [:percentage_zeros] / 100.0 and return true data.count(Constants::BINARY_RE).to_f / data_size > [:percentage_binary] / 100.0 ensure old_pos and seek old_pos, Constants::SEEK_SET end |