encode.rb 882 Bytes
# Patch Strings to enable detect_encoding! on views
require 'charlock_holmes/string'
module Gitlab
  module Encode 
    extend self

    def utf8 message
      return nil unless message

      detect = CharlockHolmes::EncodingDetector.detect(message) rescue {}

      # It's better to default to UTF-8 as sometimes it's wrongly detected as another charset
      if detect[:encoding] && detect[:confidence] == 100
        CharlockHolmes::Converter.convert(message, detect[:encoding], 'UTF-8')
      else
        message
      end.force_encoding("utf-8")

    # Prevent app from crash cause of 
    # encoding errors
    rescue
      "--broken encoding: #{encoding}"
    end

    def detect_encoding message
      return nil unless message

      hash = CharlockHolmes::EncodingDetector.detect(message) rescue {}
      return hash[:encoding] ? hash[:encoding] : nil
    end
  end
end