class Net::LDAP::Dataset
Attributes
comments[R]
Public Class Methods
new()
click to toggle source
# File lib/net/ldap/dataset.rb, line 76 def initialize @comments = [] end
read_ldif(io)
click to toggle source
# File lib/net/ldap/dataset.rb, line 39 def Dataset::read_ldif io ds = Dataset.new line = io.gets && chomp dn = nil while line io.gets and chomp if $_ =~ /^[\s]+/ line << " " << $' else nextline = $_ 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
Public Instance Methods
to_ldif() { |line| ... }
click to toggle source
# File lib/net/ldap/dataset.rb, line 81 def to_ldif ary = [] ary += (@comments || []) keys.sort.each {|dn| ary << "dn: #{dn}" self[dn].keys.map {|sym| sym.to_s}.sort.each {|attr| self[dn][attr.intern].each {|val| ary << "#{attr}: #{val}" } } ary << "" } block_given? and ary.each {|line| yield line} ary end