module Eightball

Public Instance Methods

eightball(replacement_string = '?') click to toggle source
# File lib/eightball.rb, line 5
def eightball(replacement_string = '?')
  string = self
  string = string.force_encoding(Encoding::UTF_8) if not_utf8?
  string = reencode(string, replacement_string)
  string = drop_bom(string)
  string
end

Private Instance Methods

drop_bom(string) click to toggle source
# File lib/eightball.rb, line 25
def drop_bom(string)
  string.sub(/^\xEF\xBB\xBF/, '')
end
not_utf8?() click to toggle source
# File lib/eightball.rb, line 15
def not_utf8?
  !self.valid_encoding? || self.encoding != Encoding::UTF_8
end
reencode(string, replacement_string) click to toggle source
# File lib/eightball.rb, line 19
def reencode(string, replacement_string)
  string = string.encode(Encoding::UTF_16, :invalid => :replace, :undef => :replace, :replace => replacement_string)
  string = string.encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace, :replace => replacement_string)
  string
end