summaryrefslogtreecommitdiff
path: root/src/GF/Text/Russian.hs
blob: dd8751848400163614807ff046a169e7d1843881 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
----------------------------------------------------------------------
-- |
-- 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