Parent

Net::LDAP::Dataset

Attributes

comments[R]

Public Class Methods

new() click to toggle source
    # File lib/net/ldap/dataset.rb, line 76
76:       def initialize
77:         @comments = []
78:       end
read_ldif(io) click to toggle source
    # File lib/net/ldap/dataset.rb, line 38
38:       def self.read_ldif io
39:         ds = Dataset.new
40:         io = IOFilter.new(io)
41: 
42:         line = io.gets
43:         dn = nil
44: 
45:         while line
46:           new_line = io.gets
47:           if new_line =~ /^[\s]+/
48:             line << " " << $'
49:           else
50:             nextline = new_line
51: 
52:             if line =~ /^\#/
53:               ds.comments << line
54:             elsif line =~ /^dn:[\s]*/
55:               dn = $'
56:               ds[dn] = Hash.new {|k,v| k[v] = []}
57:             elsif line.length == 0
58:               dn = nil
59:             elsif line =~ /^([^:]+):([\:]?)[\s]*/
60:               # $1 is the attribute name
61:               # $2 is a colon iff the attr-value is base-64 encoded
62:               # $' is the attr-value
63:               # Avoid the Base64 class because not all Ruby versions have it.
64:               attrvalue = ($2 == ":") ? $'.unpack('m').shift : $'
65:               ds[dn][$1.downcase.intern] << attrvalue
66:             end
67: 
68:             line = nextline
69:           end
70:         end
71: 
72:         ds
73:       end

Public Instance Methods

to_ldif() click to toggle source
    # File lib/net/ldap/dataset.rb, line 81
81:       def to_ldif
82:         ary = []
83:         ary += (@comments || [])
84:         keys.sort.each do |dn|
85:           ary << "dn: #{dn}"
86: 
87:           self[dn].keys.map {|sym| sym.to_s}.sort.each do |attr|
88:             self[dn][attr.intern].each {|val| ary << "#{attr}: #{val}" }
89:           end
90: 
91:           ary << ""
92:         end
93:         block_given? and ary.each {|line| yield line}
94:         ary
95:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.