Sha256: 06a38bb415dcb89c127c7ea1e9753eba1c15da2d7f0cb9a1dd220746a432b61f

Contents?: true

Size: 622 Bytes

Versions: 5

Compression:

Stored size: 622 Bytes

Contents

module Temple
  module Filters
    # Try to encode input string
    #
    # @api public
    class Encoding < Parser
      define_options :encoding => 'utf-8'

      def call(s)
        if options[:encoding] && s.respond_to?(:encoding)
          old_enc = s.encoding
          s = s.dup if s.frozen?
          s.force_encoding(options[:encoding])
          # Fall back to old encoding if new encoding is invalid
          unless s.valid_encoding?
            s.force_encoding(old_enc)
            s.force_encoding(::Encoding::BINARY) unless s.valid_encoding?
          end
        end
        s
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
temple-0.6.10 lib/temple/filters/encoding.rb
temple-0.6.9 lib/temple/filters/encoding.rb
temple-0.6.8 lib/temple/filters/encoding.rb
temple-0.6.7 lib/temple/filters/encoding.rb
temple-0.6.6 lib/temple/filters/encoding.rb