rendered paste bodyrequire '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').sub(/\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').sub(/\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