Class: Cranium::Transformation::DuplicationIndex

Inherits:
Object
  • Object
show all
Defined in:
lib/cranium/transformation/duplication_index.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*fields) ⇒ DuplicationIndex

Returns a new instance of DuplicationIndex.



13
14
15
16
# File 'lib/cranium/transformation/duplication_index.rb', line 13

def initialize(*fields)
  @fields = fields
  @fingerprints = Set.new
end

Class Method Details

.[](*fields) ⇒ Object

Raises:

  • (ArgumentError)


5
6
7
8
9
# File 'lib/cranium/transformation/duplication_index.rb', line 5

def self.[](*fields)
  raise ArgumentError, "Cannot build duplication index for empty fieldset" if fields.empty?
  @instances ||= {}
  @instances[fields] ||= new(*fields)
end

Instance Method Details

#duplicate?(record) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
24
25
26
27
28
29
# File 'lib/cranium/transformation/duplication_index.rb', line 20

def duplicate?(record)
  fingerprint = take_fingerprint(record)

  if @fingerprints.include? fingerprint
    true
  else
    @fingerprints.add fingerprint
    false
  end
end