Class: Net::LDAP::Dataset
- Inherits:
-
Hash
- Object
- Hash
- Net::LDAP::Dataset
- Defined in:
- lib/net/ldap/dataset.rb
Instance Attribute Summary collapse
-
#comments ⇒ Object
readonly
Returns the value of attribute comments.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize ⇒ Dataset
constructor
A new instance of Dataset.
- #to_ldif ⇒ Object
Constructor Details
permalink #initialize ⇒ Dataset
Returns a new instance of Dataset.
76 77 78 |
# File 'lib/net/ldap/dataset.rb', line 76 def initialize @comments = [] end |
Instance Attribute Details
permalink #comments ⇒ Object (readonly)
Returns the value of attribute comments.
36 37 38 |
# File 'lib/net/ldap/dataset.rb', line 36 def comments @comments end |
Class Method Details
permalink .read_ldif(io) ⇒ Object
[View source]
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# 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 |
Instance Method Details
permalink #to_ldif ⇒ Object
[View source]
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# 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 |