Module: IMW::CompressedFiles::Compressible
- Defined in:
- lib/imw/compressed_files/compressible.rb
Overview
Defines methods for compressing a file. The default compression program is defined in IMW::COMPRESSION_SETTINGS though a particular resource can change the values in its compression_settings
hash.
Instance Attribute Summary collapse
-
#compression_settings ⇒ Hash
Defines the compression settings used for this resource.
Instance Method Summary collapse
-
#compress(options = {}) ⇒ IMW::Resource
Compress this resource without overwriting it.
-
#compress! ⇒ IMW::Resource
Compress this resource in place, overwriting it.
-
#is_compressible? ⇒ true
Is this file compressible?.
Instance Attribute Details
#compression_settings ⇒ Hash
Defines the compression settings used for this resource. :program
defines the name of the command-line program to use, :compress
gives the flags to use when compressing, and :extension
gives the extension (without the ‘.’) added by the program after compressing.
23 24 25 |
# File 'lib/imw/compressed_files/compressible.rb', line 23 def compression_settings @compression_settings end |
Instance Method Details
#compress(options = {}) ⇒ IMW::Resource
Compress this resource without overwriting it.
FIXME The implementation is a little stupid as the file is needlessly copied.
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/imw/compressed_files/compressible.rb', line 62 def compress ={} should_exist!("Cannot compress.") begin copy = cp(path + '.imw_copy') compressed_file = compress! copy.mv(path) compressed_file ensure copy.mv(path) if copy.exist? end end |
#compress! ⇒ IMW::Resource
Compress this resource in place, overwriting it.
This resource’s compression_settings
method is used to determine the method of compression.
50 51 52 53 54 |
# File 'lib/imw/compressed_files/compressible.rb', line 50 def compress! should_exist!("Cannot compress.") IMW.system(*[compression_settings[:program], compression_settings[:compress], path]) IMW.open(File.join(dirname,basename + "." + compression_settings[:extension])) end |
#is_compressible? ⇒ true
Is this file compressible?
28 29 30 |
# File 'lib/imw/compressed_files/compressible.rb', line 28 def is_compressible? true end |