class FindDupeImages::Serializer

Attributes

processed_image_data[R]

Public Class Methods

new(processed_image_data = nil) click to toggle source
# File lib/find_dupe_images/serializer.rb, line 6
def initialize(processed_image_data = nil)
  @processed_image_data   = processed_image_data
  @serialize_filename     = 'serialized.marshal'
  @seperator              = "---_---"
end

Public Instance Methods

deserialize() click to toggle source
# File lib/find_dupe_images/serializer.rb, line 19
def deserialize
  $/          = @seperator
  hexdigests  = {}
  hits        = {}

  return hits unless File.exist?(serialize_to_file)

  File.open(serialize_to_file, 'r').each do |object|
    o = Marshal::load(object.chomp)
    if hexdigests.has_key?(o.hexdigest)
      hits[o.hexdigest] = "#{o.file_name} is a duplicate of #{hexdigests[o.hexdigest].join(' and ')}"
    end
    if hexdigests[o.hexdigest].is_a?(Array)
      hexdigests[o.hexdigest] << o.file_name
    else
      hexdigests[o.hexdigest] = [o.file_name]
    end
  end

  hits
end
remove_marshal_file() click to toggle source
# File lib/find_dupe_images/serializer.rb, line 41
def remove_marshal_file
  File.unlink(serialize_to_file) if File.file?(serialize_to_file)
end
serialize() click to toggle source
# File lib/find_dupe_images/serializer.rb, line 12
def serialize
  File.open(serialize_to_file, 'a') do |file|
    file.print Marshal::dump(@processed_image_data)
    file.print @seperator
  end
end

Private Instance Methods

serialize_to_file() click to toggle source
# File lib/find_dupe_images/serializer.rb, line 47
def serialize_to_file
  Pathname.new([File.expand_path('../../', __FILE__), @serialize_filename].join(''))
end