Files
gf-core/src-3.0/GF/Text/LatinASupplement.hs

70 lines
2.6 KiB
Haskell

----------------------------------------------------------------------
-- |
-- Module : LatinASupplement
-- Maintainer : (Maintainer)
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/04/21 16:23:39 $
-- > CVS $Author: bringert $
-- > CVS $Revision: 1.5 $
--
-- (Description of the module)
-----------------------------------------------------------------------------
module GF.Text.LatinASupplement (mkLatinASupplement) where
mkLatinASupplement :: String -> String
mkLatinASupplement = mkLatinASupplementWord
mkLatinASupplementWord :: String -> String
mkLatinASupplementWord str = case str of
[] -> []
'<' : cs -> '<' : spoolMarkup cs
-- Romanian & partly Turkish
's' : ',' : cs -> toEnum 0x015f : mkLatinASupplementWord cs
'a' : '%' : cs -> toEnum 0x0103 : mkLatinASupplementWord cs
-- Slavic and more
'c' : '^' : cs -> toEnum 0x010d : mkLatinASupplementWord cs
's' : '^' : cs -> toEnum 0x0161 : mkLatinASupplementWord cs
'c' : '\'' : cs -> toEnum 0x0107 : mkLatinASupplementWord cs
'z' : '^' : cs -> toEnum 0x017e : mkLatinASupplementWord cs
-- Turkish
'g' : '%' : cs -> toEnum 0x011f : mkLatinASupplementWord cs
'I' : cs -> toEnum 0x0131 : mkLatinASupplementWord cs
'c' : ',' : cs -> toEnum 0x00e7 : mkLatinASupplementWord cs
-- Polish
'e' : ',' : cs -> toEnum 0x0119 : mkLatinASupplementWord cs
'a' : ',' : cs -> toEnum 0x0105 : mkLatinASupplementWord cs
'l' : '/' : cs -> toEnum 0x0142 : mkLatinASupplementWord cs
'z' : '.' : cs -> toEnum 0x017c : mkLatinASupplementWord cs
'n' : '\'' : cs -> toEnum 0x0144 : mkLatinASupplementWord cs
's' : '\'' : cs -> toEnum 0x015b : mkLatinASupplementWord cs
-- 'c' : '\'' : cs -> toEnum 0x0107 : mkLatinASupplementWord cs
-- Hungarian
'o' : '%' : cs -> toEnum 0x0151 : mkLatinASupplementWord cs
'u' : '%' : cs -> toEnum 0x0171 : mkLatinASupplementWord cs
-- Mongolian
'j' : '^' : cs -> toEnum 0x0135 : mkLatinASupplementWord cs
-- Khowar (actually in Combining diacritical marks not Latin-A Suppl.)
'o' : '.' : cs -> 'o' : (toEnum 0x0323 : mkLatinASupplementWord cs)
-- Length bars over vowels e.g korean
'a' : ':' : cs -> toEnum 0x0101 : mkLatinASupplementWord cs
'e' : ':' : cs -> toEnum 0x0113 : mkLatinASupplementWord cs
'i' : ':' : cs -> toEnum 0x012b : mkLatinASupplementWord cs
'o' : ':' : cs -> toEnum 0x014d : mkLatinASupplementWord cs
'u' : ':' : cs -> toEnum 0x016b : mkLatinASupplementWord cs
-- Default
c : cs -> c : mkLatinASupplementWord cs
spoolMarkup :: String -> String
spoolMarkup s = case s of
[] -> [] -- Shouldn't happen
'>' : cs -> '>' : mkLatinASupplementWord cs
c1 : cs -> c1 : spoolMarkup cs