From b1402e8bd6a68a891b00a214d6cf184d66defe19 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 22 Sep 2003 13:16:55 +0000 Subject: Founding the newly structured GF2.0 cvs archive. --- src/GF/Text/Russian.hs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/GF/Text/Russian.hs (limited to 'src/GF/Text/Russian.hs') diff --git a/src/GF/Text/Russian.hs b/src/GF/Text/Russian.hs new file mode 100644 index 000000000..07605a83a --- /dev/null +++ b/src/GF/Text/Russian.hs @@ -0,0 +1,31 @@ +module Russian where + +-- an ad hoc ASCII encoding. Delimiters: /_ _/ +mkRussian :: String -> String +mkRussian = unwords . (map mkRussianWord) . words + +-- the KOI8 encoding, incomplete. Delimiters: /* */ +mkRusKOI8 :: String -> String +mkRusKOI8 = unwords . (map mkRussianKOI8) . words + +type RussianChar = Char + +mkRussianWord :: String -> [RussianChar] +mkRussianWord = map (mkRussianChar allRussianCodes) + +mkRussianKOI8 :: String -> [RussianChar] +mkRussianKOI8 = map (mkRussianChar allRussianKOI8) + +mkRussianChar chars c = case lookup c cc of Just c' -> c' ; _ -> c + where + cc = zip chars allRussian + +allRussianCodes = + "ÅåABVGDEXZIJKLMNOPRSTUFHCQW£}!*ÖYÄabvgdexzijklmnoprstufhcqw#01'öyä" +allRussianKOI8 = + "^@áâ÷çäåöúéêëìíîïðòóôõæèãþûýøùÿüàñÁÂ×ÇÄÅÖÚÉÊËÌÍÎÏÐÒÓÔÕÆÈÃÞÛÝØÙßÜÀÑ" + +allRussian :: String +allRussian = (map toEnum (0x0401:0x0451:[0x0410 .. 0x044f])) -- Ëë in odd places + + -- cgit v1.2.3