Class: TabTools::Anonymizer

Inherits:
Object
  • Object
show all
Defined in:
lib/tabtools/utilities/anonymizer.rb

Constant Summary collapse

@@anonymousText =
<<ANONTEXT
    Lorem ipsum dolor sit amet consectetur adipiscing elit Mauris urna erat volutpat a ullamcorper sit amet 
    convallis quis dui Ut sem erat euismod in iaculis id tincidunt aliquam magna Vivamus lobortis eu erat in feugiat 
    Vestibulum fermentum dictum fermentum Class aptent taciti sociosqu ad litora torquent per conubia nostra 
    per inceptos himenaeos Ut quis rutrum mi Mauris sit amet cursus nisi Suspendisse accumsan leo ac lobortis egestas 
    sapien eros mattis lorem eu posuere mi justo in nunc Sed felis ligula egestas vel nulla sed egestas lobortis justo
    Donec quis interdum velit Proin felis arcu vestibulum non augue nec ultricies pulvinar velit Nunc ac libero velit 
    Aenean bibendum varius nisi ut molestie Nam tempus nec lacus eget malesuada Donec et accumsan dolor et ullamcorper ante 
    Etiam quis consectetur leo Suspendisse mattis sagittis imperdiet Phasellus facilisis eget justo ac mollis 
    Phasellus eleifend tortor est sit amet venenatis enim fringilla id Vestibulum rutrum tempus tortor ac volutpat 
    Nullam non imperdiet lorem Cras tincidunt porttitor condimentum Pellentesque tincidunt magna id aliquet interdum augue 
    nisl convallis enim volutpat mollis urna metus et lacus Donec tortor sapien ultrices sit amet blandit quis gravida ut 
    massa Mauris mauris lacus pretium sit amet risus quis blandit viverra lorem Nunc fringilla elit a elementum gravida 
    Duis vel sodales elit eget tempor leo Quisque in semper nisl Fusce eget risus sollicitudin molestie diam et tincidunt 
    sem Curabitur accumsan pretium interdum Suspendisse semper enim ac augue hendrerit vel sollicitudin diam mollis 
    Curabitur lacinia ante nec eros maximus a vehicula velit aliquet In ullamcorper nec ante eu dictum Proin mi enim 
    malesuada ut ornare sit amet maximus commodo ipsum Nullam venenatis purus non sollicitudin sollicitudin augue 
    augue euismod lorem ut hendrerit velit neque sed nibh Class aptent taciti sociosqu ad litora torquent per conubia 
    nostra per inceptos himenaeos Proin ac elementum nisl
ANONTEXT

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAnonymizer

Returns a new instance of Anonymizer.



36
37
38
39
40
41
42
43
44
# File 'lib/tabtools/utilities/anonymizer.rb', line 36

def initialize
  @anonWords = @@anonymousText.gsub(/\n/,' ').split
  @coded = {}
  @low   = 0
  @limit = @anonWords.length-1
  @rand  = Random.new
  @minWords = 2
  @maxWords = 4
end

Instance Attribute Details

#anonWords(value) ⇒ Object (readonly)

Returns the value of attribute anonWords.



7
8
9
# File 'lib/tabtools/utilities/anonymizer.rb', line 7

def anonWords
  @anonWords
end

#fieldObject

Returns the value of attribute field.



8
9
10
# File 'lib/tabtools/utilities/anonymizer.rb', line 8

def field
  @field
end

#highObject (readonly)

Returns the value of attribute high.



7
8
9
# File 'lib/tabtools/utilities/anonymizer.rb', line 7

def high
  @high
end

#inputObject

Returns the value of attribute input.



8
9
10
# File 'lib/tabtools/utilities/anonymizer.rb', line 8

def input
  @input
end

#lowObject (readonly)

Returns the value of attribute low.



7
8
9
# File 'lib/tabtools/utilities/anonymizer.rb', line 7

def low
  @low
end

#outputObject

Returns the value of attribute output.



8
9
10
# File 'lib/tabtools/utilities/anonymizer.rb', line 8

def output
  @output
end

Instance Method Details

#anonymize(input, fields, output) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/tabtools/utilities/anonymizer.rb', line 46

def anonymize(input, fields,  output)
  puts "Anonymizing %-25s  to  %-25s  - %s " % [input, output, fields.inspect]
  raise 'The input file must be specified' if input.nil?
  raise 'The input file must exist'        unless File.exist?(input)
  raise 'The field(s) to anonymize must be provided as a String or an array of Strings' unless fields.instance_of?(String) || fields.instance_of?(Array)
  @input    = input
  @output   = output
  @anonVals = {}
  csvFields = CSV.open(@input, &:readline) 
  output    = CSV.open(@output,'w')
  output << csvFields
  fields = [fields] if fields.is_a? String
  CSV.foreach('input.csv', :headers => true) do |row|
    fields.each do |field|
      row[field] = anonWords(row[field]) unless row[field].nil?
    end
    output << row
  end
end

#codeValue(value) ⇒ Object



76
77
78
79
80
81
# File 'lib/tabtools/utilities/anonymizer.rb', line 76

def codeValue value
  if @codedWords[value].nil?
    @codedWords[value] = anonWords
  end
  @codedWords[value]
end