class Contacts::Outlook

Public Class Methods

new(file) click to toggle source
# File lib/contacts/outlook.rb, line 6
def initialize(file)
  @contact_file = Array.new
  file = file.respond_to?(:read) ? file.read : file
  file.each_line do |line|
    @contact_file << CSV.parse(line)[0]
  end
  @full_name = false
  @header_indexes = Hash.new
  @header_indexes[:email_address] = Array.new

  headers = @contact_file[0]

  @contact_file = @contact_file[1, @contact_file.length]

  headers.each_with_index do |header, i|
    if header.match(/^Name$/)
      @full_name = true
      @header_indexes[:full_name] = i
    elsif header.match(/^First Name/)
      @header_indexes[:first_name] = i
    elsif header.match(/^Last Name/)
      @header_indexes[:last_name] = i
    elsif header.match(/E-mail/)
      @header_indexes[:email_address] << i
    end
  end
end

Public Instance Methods

contacts() click to toggle source
# File lib/contacts/outlook.rb, line 34
def contacts

  contacts = Array.new

  @contact_file.each_with_index do |line, i|
    contacts[i] = Array.new unless contacts[i]
    if(@full_name)
      contacts[i][0] = line[@header_indexes[:full_name]]
    else
      contacts[i][0] = "#{line[@header_indexes[:first_name]]} #{line[@header_indexes[:last_name]]}"
    end
    @header_indexes[:email_address].each do |index|
      if line[index] && !contacts[i][1]
        contacts[i][1] = line[index]
      end
    end
  end

  contacts
end