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

Instance Method Summary collapse

Instance Attribute Details

#compression_settingsHash

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.

Returns:



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.

Returns:



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/imw/compressed_files/compressible.rb', line 62

def compress options={}
  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.

Returns:



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?

Returns:

  • (true)


28
29
30
# File 'lib/imw/compressed_files/compressible.rb', line 28

def is_compressible?
  true
end