# class Mail::Encodings::TransferEncoding

### Constants

NAME
PRIORITY

### Public Class Methods

can_encode?(enc) click to toggle source

    # File lib/mail/encodings/transfer_encoding.rb, line 17
    def self.can_encode?(enc)
      can_transport? enc
    end

can_transport?(enc) click to toggle source

    # File lib/mail/encodings/transfer_encoding.rb, line 8
    def self.can_transport?(enc)
      enc = Encodings.get_name(enc)
      if Encodings.defined? enc
        Encodings.get_encoding(enc).new.is_a? self
      else
        false
      end
    end

compatible_input?(str) click to toggle source

    # File lib/mail/encodings/transfer_encoding.rb, line 25
    def self.compatible_input?(str)
      true
    end

cost(str) click to toggle source

    # File lib/mail/encodings/transfer_encoding.rb, line 21
    def self.cost(str)
      raise "Unimplemented"
    end

get_best_compatible(source_encoding, str) click to toggle source

    # File lib/mail/encodings/transfer_encoding.rb, line 33
    def self.get_best_compatible(source_encoding, str)
      if self.can_transport?(source_encoding) && self.compatible_input?(str)
        source_encoding
      else
        choices = Encodings.get_all.select do |enc|
          self.can_transport?(enc) && enc.can_encode?(source_encoding)
        end

        best = nil
        best_cost = nil

        choices.each do |enc|
          # If the current choice cannot be transported safely,
          # give priority to other choices but allow it to be used as a fallback.
          this_cost = enc.cost(str) if enc.compatible_input?(str)

          if !best_cost || (this_cost && this_cost < best_cost)
            best_cost = this_cost
            best = enc
          elsif this_cost == best_cost
            best = enc if enc::PRIORITY < best::PRIORITY
          end
        end

        best
      end
    end

to_s() click to toggle source

    # File lib/mail/encodings/transfer_encoding.rb, line 29
    def self.to_s
      self::NAME
    end

### Public Instance Methods

to_s() click to toggle source

    # File lib/mail/encodings/transfer_encoding.rb, line 61
    def to_s
      self.class.to_s
    end