Added a method_missing implementation which allows callers

to access attributes simply by giving their name.
This commit is contained in:
blackhedd 2006-05-04 12:19:41 +00:00
parent 271c685a67
commit c7df586c9f

View file

@ -60,6 +60,11 @@ class LDAP
# Class Net::LDAP::Entry provides convenience methods for dealing # Class Net::LDAP::Entry provides convenience methods for dealing
# with LDAP entries. # with LDAP entries.
# #
#--
# 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 class Entry
# This constructor is not generally called by user code. # This constructor is not generally called by user code.
@ -76,7 +81,7 @@ class LDAP
#-- #--
# We have to deal with this one as we do []= # We have to deal with this one as we do with []=
# because this one and not the other one gets called # because this one and not the other one gets called
# in formulations like entry["CN"] << cn. # in formulations like entry["CN"] << cn.
# #
@ -112,6 +117,16 @@ class LDAP
alias_method :each_attribute, :each alias_method :each_attribute, :each
def method_missing *args, &block # :nodoc:
s = args[0].to_s.downcase.intern
if attribute_names.include?(s)
self[s]
else
raise NoMethodError.new( "undefined method '#{s}'" )
end
end
end # class Entry end # class Entry