All pastes #519980 Raw Edit

CSV to LDIF

public ruby v1 · immutable
#519980 ·published 2007-05-29 20:25 UTC
rendered paste body
require 'faster_csv'csv = FasterCSV.read("addresses.csv")csv.shiftfields = ['cn',          'mail',          'gn',          'postalAddress',          'l',          'st',          'postalCode',          'telephoneNumber',          'facsimileTelephoneNumber',          'mobile',          'physicalDeliveryOfficeName']type = [0, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2]def needsEncoding(element)  return false unless element != nil  element.each_byte {|x| return true if (x>127 or [0,10,13].include?(x)) }  return true if [' ', ':', '<'].include?(element[0])  return falseendcsv.each do |row|  flag = [0, 0, 0]  if needsEncoding(row[0]) then    print "dn:: " + ["cn=%s, dc=example, dc=com" % row[0]].pack('m').gsub(/\n/,'$  else    print "dn: cn=%s, dc=example, dc=com" % row[0]  end  puts  for i in 0..(fields.length-1)    unless row[i]=="" then      if needsEncoding(row[i]) then        print "%s:: %s" % [fields[i], [row[i]].pack('m').gsub(/\n/,'')]      else        print "%s: %s" % [fields[i], row[i]]      end      puts      flag[type[i]] = 1    end  end  puts "objectClass: top"  puts "objectClass: person" if flag[0]==1  puts "objectClass: inetOrgPerson" if flag[1]==1  puts "objectClass: organizationalPerson" if flag[2]==1  putsend