forked from GitHub/gf-core
46 lines
1.3 KiB
Haskell
46 lines
1.3 KiB
Haskell
----------------------------------------------------------------------
|
|
-- |
|
|
-- Module : Russian
|
|
-- Maintainer : (Maintainer)
|
|
-- Stability : (stable)
|
|
-- Portability : (portable)
|
|
--
|
|
-- > CVS $Date: 2005/02/18 19:21:15 $
|
|
-- > CVS $Author: peb $
|
|
-- > CVS $Revision: 1.4 $
|
|
--
|
|
-- (Description of the module)
|
|
-----------------------------------------------------------------------------
|
|
|
|
module Russian (mkRussian, mkRusKOI8) 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
|
|
|
|
|