Class: Compression::Engine

Inherits:
Object
  • Object
show all
Defined in:
lib/compression/engine.rb

Constant Summary collapse

UnsupportedFileExtension =
Class.new(StandardError)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(strategy) ⇒ Engine

Returns a new instance of Engine.



22
23
24
# File 'lib/compression/engine.rb', line 22

def initialize(strategy)
  @strategy = strategy
end

Class Method Details

.default_strategiesObject



7
8
9
10
11
12
13
14
# File 'lib/compression/engine.rb', line 7

def self.default_strategies
  [
    Compression::Zip.new,
    Compression::Pipeline.new([Compression::Tar.new, Compression::Gzip.new]),
    Compression::Gzip.new,
    Compression::Tar.new,
  ]
end

.engine_for(filename, strategies: default_strategies) ⇒ Object



16
17
18
19
20
# File 'lib/compression/engine.rb', line 16

def self.engine_for(filename, strategies: default_strategies)
  strategy =
    strategies.detect(-> { raise UnsupportedFileExtension }) { |e| e.can_handle?(filename) }
  new(strategy)
end