# File lib/termtter/system_extensions/windows.rb, line 59
def print(str)
  str.to_s.gsub("\xef\xbd\x9e", "\xe3\x80\x9c").split(/(\e\[\d*[a-zA-Z])/).each do |token|
    case token
    when /\e\[(\d+)m/
      color = $1.to_i > 90 ? ($1.to_i % 60) : $1.to_i
      $wSetConsoleTextAttribute.call $hStdOut, $colorMap[color].to_i
    when /\e\[\d*[a-zA-Z]/
      # do nothing
    else
      loop do
        begin
          STDOUT.print $iconv_u8_to_sj.iconv(token)
          break
        rescue Iconv::Failure
          STDOUT.print "#{$!.success}?"
          token = $!.failed[1..-1]
        end
      end
    end
  end
  $wSetConsoleTextAttribute.call $hStdOut, $oldColor
  $iconv_u8_to_sj.iconv(nil)
end