# File lib/sasl/base.rb, line 41 def SASL.new(mechanisms, preferences) best_mechanism = if preferences.want_anonymous? && mechanisms.include?('ANONYMOUS') 'ANONYMOUS' elsif preferences.has_password? if mechanisms.include?('DIGEST-MD5') 'DIGEST-MD5' elsif preferences.allow_plaintext? 'PLAIN' else raise UnknownMechanism.new(mechanisms) end else raise UnknownMechanism.new(mechanisms) end new_mechanism(best_mechanism, preferences) end