on master help sign in
javascript: better unicode support
e854962raichoo
src/IRTS/CodegenJavaScript.hs+7−4
@@ -495,13 +495,16 @@ translateChar ch
495 | '\\' <- ch = "\\\\"
495 | '\\' <- ch = "\\\\"
496 | '\"' <- ch = "\\\""
496 | '\"' <- ch = "\\\""
497 | '\'' <- ch = "\\\'"
497 | '\'' <- ch = "\\\'"
498+ | ch `elem` asciiTab = "\\u" ++ fill (showHex (ord ch) "")
498− | ch `elem` asciiTab = "\\u00" ++ fill (showHex (ord ch) "")
499+ | ord ch > 255 = "\\u" ++ fill (showHex (ord ch) "")
499 | otherwise = [ch]
500 | otherwise = [ch]
500 where
501 where
501 fill :: String -> String
502 fill :: String -> String
502− fill s = if length s == 1
503+ fill s = case length s of
504+ 1 -> "000" ++ s
505+ 2 -> "00" ++ s
503− then '0' : s
506+ 3 -> "0" ++ s
504− else s
507+ _ -> s
505
508
506 asciiTab =
509 asciiTab =
507 ['\NUL', '\SOH', '\STX', '\ETX', '\EOT', '\ENQ', '\ACK', '\BEL',
510 ['\NUL', '\SOH', '\STX', '\ETX', '\EOT', '\ENQ', '\ACK', '\BEL',