# File lib/net/ldap/dataset.rb, line 38 def self.read_ldif io ds = Dataset.new io = IOFilter.new(io) line = io.gets dn = nil while line new_line = io.gets if new_line =~ /^[\s]+/ line << " " << $' else nextline = new_line if line =~ /^\#/ ds.comments << line elsif line =~ /^dn:[\s]*/i dn = $' ds[dn] = Hash.new {|k,v| k[v] = []} elsif line.length == 0 dn = nil elsif line =~ /^([^:]+):([\:]?)[\s]*/ # $1 is the attribute name # $2 is a colon iff the attr-value is base-64 encoded # $' is the attr-value # Avoid the Base64 class because not all Ruby versions have it. attrvalue = ($2 == ":") ? $'.unpack('m').shift : $' ds[dn][$1.downcase.intern] << attrvalue end line = nextline end end ds end