Class: Pack::Compressor

Inherits:
Object
  • Object
show all
Defined in:
lib/pack/compressor.rb

Constant Summary collapse

OBJECT_SIZE =
50..0x20000000
MAX_DEPTH =
50
WINDOW_SIZE =
8

Instance Method Summary collapse

Constructor Details

#initialize(database, progress) ⇒ Compressor

Returns a new instance of Compressor.



11
12
13
14
15
16
# File 'lib/pack/compressor.rb', line 11

def initialize(database, progress)
  @database = database
  @window   = Window.new(WINDOW_SIZE)
  @progress = progress
  @objects  = []
end

Instance Method Details

#add(entry) ⇒ Object



18
19
20
21
# File 'lib/pack/compressor.rb', line 18

def add(entry)
  return unless OBJECT_SIZE.include?(entry.size)
  @objects.push(entry)
end

#build_deltasObject



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/pack/compressor.rb', line 23

def build_deltas
  @progress&.start("Compressing objects", @objects.size)

  @objects.sort! { |a, b| b.sort_key <=> a.sort_key }

  @objects.each do |entry|
    build_delta(entry)
    @progress&.tick
  end
  @progress&.stop
end