18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/tamper/existence_pack.rb', line 18
def encode(guid)
guid_diff = guid.to_i - @last_guid
guid_diff += 1 if @current_chunk.empty? && @output.empty? && guid.to_i > 0
if guid_diff == 1 || guid.to_i == 0 @current_chunk << '1'
@run_counter += 1
elsif guid_diff <= 0 raise ArgumentError, "Error: data was not sorted by GUID (got #{@last_guid}, then #{guid})!"
elsif guid_diff > 40 dump_keep(@current_chunk, @run_counter)
@output += control_code(:skip, guid_diff - 1)
@current_chunk = '1'
@run_counter = 1
else if @run_counter > 40 dump_keep(@current_chunk, @run_counter)
@current_chunk = ''
@run_counter = 0
end
@current_chunk += ('0' * (guid_diff - 1))
@current_chunk << '1'
@run_counter = 1
end
@last_guid = guid.to_i
end
|