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]/
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