lib/net/ldap/dataset.rb in net-ldap-0.0.5 vs lib/net/ldap/dataset.rb in net-ldap-0.1.0
- old
+ new
@@ -1,8 +1,5 @@
-# $Id$
-#
-#
#----------------------------------------------------------------------------
#
# Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
#
# Gmail: garbagecat10
@@ -20,89 +17,83 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
#---------------------------------------------------------------------------
-#
-#
-
-
-
module Net
-class LDAP
+ class LDAP
+ class Dataset < Hash
+ attr_reader :comments
-class Dataset < Hash
+ class IOFilter
+ def initialize(io)
+ @io = io
+ end
+ def gets
+ s = @io.gets
+ s.chomp if s
+ end
+ end
- attr_reader :comments
+ def self.read_ldif io
+ ds = Dataset.new
+ io = IOFilter.new(io)
+ line = io.gets
+ dn = nil
- def Dataset::read_ldif io
- ds = Dataset.new
+ while line
+ new_line = io.gets
+ if new_line =~ /^[\s]+/
+ line << " " << $'
+ else
+ nextline = new_line
- line = io.gets && chomp
- dn = nil
+ 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
- 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
+ line = nextline
+ end
end
- line = nextline
+ ds
end
- end
-
- ds
- end
- def initialize
- @comments = []
- end
+ def initialize
+ @comments = []
+ end
- def to_ldif
- ary = []
- ary += (@comments || [])
+ def to_ldif
+ ary = []
+ ary += (@comments || [])
+ keys.sort.each do |dn|
+ ary << "dn: #{dn}"
- keys.sort.each {|dn|
- ary << "dn: #{dn}"
+ self[dn].keys.map {|sym| sym.to_s}.sort.each do |attr|
+ self[dn][attr.intern].each {|val| ary << "#{attr}: #{val}" }
+ end
- self[dn].keys.map {|sym| sym.to_s}.sort.each {|attr|
- self[dn][attr.intern].each {|val|
- ary << "#{attr}: #{val}"
- }
- }
+ ary << ""
+ end
+ block_given? and ary.each {|line| yield line}
+ ary
+ end
- ary << ""
- }
-
- block_given? and ary.each {|line| yield line}
-
- ary
- end
-
-
-end # Dataset
-
-end # LDAP
-end # Net
-
-
+ end
+ end
+end