diff --git a/lib/net/ldap/core_ext/bignum.rb b/lib/net/ldap/core_ext/bignum.rb index c976a85..7eb8214 100644 --- a/lib/net/ldap/core_ext/bignum.rb +++ b/lib/net/ldap/core_ext/bignum.rb @@ -4,9 +4,9 @@ module Net module Bignum def to_ber - # NOTE: Array#pack's 'w' is a BER _compressed_ integer. We need uncompressed - # BER integers, so we're not using that. - # See also: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/228864 + # NOTE: Array#pack's 'w' is a BER _compressed_ integer. We need + # uncompressed BER integers, so we're not using that. See also: + # http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/228864 result = [] n = self diff --git a/lib/net/ldap/core_ext/fixnum.rb b/lib/net/ldap/core_ext/fixnum.rb index e8ba479..349ea87 100644 --- a/lib/net/ldap/core_ext/fixnum.rb +++ b/lib/net/ldap/core_ext/fixnum.rb @@ -36,23 +36,33 @@ module Net end #-- - # Called internally to BER-encode the length and content bytes of a Fixnum. - # The caller will prepend the tag byte. + # Called internally to BER-encode the length and content bytes of a + # Fixnum. The caller will prepend the tag byte. + # MAX_SIZE = 0.size def to_ber_internal + # CAUTION: Bit twiddling ahead. You might want to shield your eyes + # or something. + + # Looks for the first byte in the fixnum that is not all zeroes. It + # does this by masking one byte after another, checking the result + # for bits that are left on. size = MAX_SIZE while size>1 - break if (self & (0xff << (size-1)*8)) > 0 - size -= 1 + break if (self & (0xff << (size-1)*8)) > 0 + size -= 1 end - + + # Store the size of the fixnum in the result result = [size] + # Appends bytes to result, starting with higher orders first. + # Extraction of bytes is done by right shifting the original fixnum + # by an amount and then masking that with 0xff. while size>0 - # right shift size-1 bytes, mask with 0xff - result << ((self >> ((size-1)*8)) & 0xff) - - size -= 1 + # right shift size-1 bytes, mask with 0xff + result << ((self >> ((size-1)*8)) & 0xff) + size -= 1 end result.pack('C*') diff --git a/lib/net/ldap/entry.rb b/lib/net/ldap/entry.rb index 4282a38..cfeda0b 100644 --- a/lib/net/ldap/entry.rb +++ b/lib/net/ldap/entry.rb @@ -27,51 +27,49 @@ module Net class LDAP - # Objects of this class represent individual entries in an LDAP - # directory. User code generally does not instantiate this class. - # Net::LDAP#search provides objects of this class to user code, - # either as block parameters or as return values. + # Objects of this class represent individual entries in an LDAP directory. + # User code generally does not instantiate this class. Net::LDAP#search + # provides objects of this class to user code, either as block parameters or + # as return values. # - # In LDAP-land, an "entry" is a collection of attributes that are - # uniquely and globally identified by a DN ("Distinguished Name"). - # Attributes are identified by short, descriptive words or phrases. - # Although a directory is + # In LDAP-land, an "entry" is a collection of attributes that are uniquely + # and globally identified by a DN ("Distinguished Name"). Attributes are + # identified by short, descriptive words or phrases. Although a directory is # free to implement any attribute name, most of them follow rigorous - # standards so that the range of commonly-encountered attribute - # names is not large. + # standards so that the range of commonly-encountered attribute names is not + # large. # - # An attribute name is case-insensitive. Most directories also - # restrict the range of characters allowed in attribute names. - # To simplify handling attribute names, Net::LDAP::Entry - # internally converts them to a standard format. Therefore, the - # methods which take attribute names can take Strings or Symbols, - # and work correctly regardless of case or capitalization. + # An attribute name is case-insensitive. Most directories also restrict the + # range of characters allowed in attribute names. To simplify handling + # attribute names, Net::LDAP::Entry internally converts them to a standard + # format. Therefore, the methods which take attribute names can take Strings + # or Symbols, and work correctly regardless of case or capitalization. # - # An attribute consists of zero or more data items called - # values. An entry is the combination of a unique DN, a set of attribute - # names, and a (possibly-empty) array of values for each attribute. + # An attribute consists of zero or more data items called values. An + # entry is the combination of a unique DN, a set of attribute names, and a + # (possibly-empty) array of values for each attribute. # - # Class Net::LDAP::Entry provides convenience methods for dealing - # with LDAP entries. - # In addition to the methods documented below, you may access individual - # attributes of an entry simply by giving the attribute name as + # Class Net::LDAP::Entry provides convenience methods for dealing with LDAP + # entries. In addition to the methods documented below, you may access + # individual attributes of an entry simply by giving the attribute name as # the name of a method call. For example: - # ldap.search( ... ) do |entry| - # puts "Common name: #{entry.cn}" - # puts "Email addresses:" - # entry.mail.each {|ma| puts ma} - # end - # If you use this technique to access an attribute that is not present - # in a particular Entry object, a NoMethodError exception will be raised. + # + # ldap.search( ... ) do |entry| + # puts "Common name: #{entry.cn}" + # puts "Email addresses:" + # entry.mail.each {|ma| puts ma} + # end + # + # If you use this technique to access an attribute that is not present in a + # particular Entry object, a NoMethodError exception will be raised. # #-- - # Ugly problem to fix someday: We key off the internal hash with - # a canonical form of the attribute name: convert to a string, - # downcase, then take the symbol. Unfortunately we do this in - # at least three places. Should do it in ONE place. + # Ugly problem to fix someday: We key off the internal hash with a canonical + # form of the attribute name: convert to a string, downcase, then take the + # symbol. Unfortunately we do this in at least three places. Should do it in + # ONE place. + # class Entry - - # This constructor is not generally called by user code. #-- # Originally, myhash took a block so we wouldn't have to