summaryrefslogtreecommitdiff
path: root/src/GF/Text/Greek.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/GF/Text/Greek.hs')
-rw-r--r--src/GF/Text/Greek.hs172
1 files changed, 0 insertions, 172 deletions
diff --git a/src/GF/Text/Greek.hs b/src/GF/Text/Greek.hs
deleted file mode 100644
index 6b9361a29..000000000
--- a/src/GF/Text/Greek.hs
+++ /dev/null
@@ -1,172 +0,0 @@
-----------------------------------------------------------------------
--- |
--- Module : Greek
--- Maintainer : (Maintainer)
--- Stability : (stable)
--- Portability : (portable)
---
--- > CVS $Date: 2005/04/21 16:23:37 $
--- > CVS $Author: bringert $
--- > CVS $Revision: 1.5 $
---
--- (Description of the module)
------------------------------------------------------------------------------
-
-module GF.Text.Greek (mkGreek) where
-
-mkGreek :: String -> String
-mkGreek = unwords . (map mkGreekWord) . mkGravis . words
-
---- TODO : optimize character formation by factorizing the case expressions
-
-type GreekChar = Char
-
-mkGreekWord :: String -> [GreekChar]
-mkGreekWord = map (toEnum . mkGreekChar) . mkGreekSpec
-
-mkGravis :: [String] -> [String]
-mkGravis [] = []
-mkGravis [w] = [w]
-mkGravis (w1:w2:ws)
- | stressed w2 = mkG w1 : mkGravis (w2:ws)
- | otherwise = w1 : w2 : mkGravis ws
- where
- stressed w = any (`elem` "'~`") w
- mkG :: String -> String
- mkG w = let (w1,w2) = span (/='\'') w in
- case w2 of
- '\'':v:cs | not (any isVowel cs) -> w1 ++ "`" ++ [v] ++ cs
- '\'':'!':v:cs | not (any isVowel cs) -> w1 ++ "`!" ++ [v] ++ cs
- _ -> w
- isVowel c = elem c "aehiouw"
-
-mkGreekSpec :: String -> [(Char,Int)]
-mkGreekSpec str = case str of
- [] -> []
- '(' :'\'': '!' : c : cs -> (c,25) : mkGreekSpec cs
- '(' :'~' : '!' : c : cs -> (c,27) : mkGreekSpec cs
- '(' :'`' : '!' : c : cs -> (c,23) : mkGreekSpec cs
- '(' : '!' : c : cs -> (c,21) : mkGreekSpec cs
- ')' :'\'': '!' : c : cs -> (c,24) : mkGreekSpec cs
- ')' :'~' : '!' : c : cs -> (c,26) : mkGreekSpec cs
- ')' :'`' : '!' : c : cs -> (c,22) : mkGreekSpec cs
- ')' : '!' : c : cs -> (c,20) : mkGreekSpec cs
- '\'': '!' : c : cs -> (c,30) : mkGreekSpec cs
- '~' : '!' : c : cs -> (c,31) : mkGreekSpec cs
- '`' : '!' : c : cs -> (c,32) : mkGreekSpec cs
- '!' : c : cs -> (c,33) : mkGreekSpec cs
- '(' :'\'': c : cs -> (c,5) : mkGreekSpec cs
- '(' :'~' : c : cs -> (c,7) : mkGreekSpec cs
- '(' :'`' : c : cs -> (c,3) : mkGreekSpec cs
- '(' : c : cs -> (c,1) : mkGreekSpec cs
- ')' :'\'': c : cs -> (c,4) : mkGreekSpec cs
- ')' :'~' : c : cs -> (c,6) : mkGreekSpec cs
- ')' :'`' : c : cs -> (c,2) : mkGreekSpec cs
- ')' : c : cs -> (c,0) : mkGreekSpec cs
- '\'': c : cs -> (c,10) : mkGreekSpec cs
- '~' : c : cs -> (c,11) : mkGreekSpec cs
- '`' : c : cs -> (c,12) : mkGreekSpec cs
- c : cs -> (c,-1) : mkGreekSpec cs
-
-mkGreekChar (c,-1) = case lookup c cc of Just c' -> c' ; _ -> fromEnum c
- where
- cc = zip "abgdezhqiklmnxoprjstyfcuw" allGreekMin
-mkGreekChar (c,n) = case (c,n) of
- ('a',10) -> 0x03ac
- ('a',11) -> 0x1fb6
- ('a',12) -> 0x1f70
- ('a',30) -> 0x1fb4
- ('a',31) -> 0x1fb7
- ('a',32) -> 0x1fb2
- ('a',33) -> 0x1fb3
- ('a',n) | n >19 -> 0x1f80 + n - 20
- ('a',n) -> 0x1f00 + n
- ('e',10) -> 0x03ad -- '
--- ('e',11) -> 0x1fb6 -- ~ can't happen
- ('e',12) -> 0x1f72 -- `
- ('e',n) -> 0x1f10 + n
- ('h',10) -> 0x03ae -- '
- ('h',11) -> 0x1fc6 -- ~
- ('h',12) -> 0x1f74 -- `
-
- ('h',30) -> 0x1fc4
- ('h',31) -> 0x1fc7
- ('h',32) -> 0x1fc2
- ('h',33) -> 0x1fc3
- ('h',n) | n >19 -> 0x1f90 + n - 20
-
- ('h',n) -> 0x1f20 + n
- ('i',10) -> 0x03af -- '
- ('i',11) -> 0x1fd6 -- ~
- ('i',12) -> 0x1f76 -- `
- ('i',n) -> 0x1f30 + n
- ('o',10) -> 0x03cc -- '
--- ('o',11) -> 0x1fb6 -- ~ can't happen
- ('o',12) -> 0x1f78 -- `
- ('o',n) -> 0x1f40 + n
- ('y',10) -> 0x03cd -- '
- ('y',11) -> 0x1fe6 -- ~
- ('y',12) -> 0x1f7a -- `
- ('y',n) -> 0x1f50 + n
- ('w',10) -> 0x03ce -- '
- ('w',11) -> 0x1ff6 -- ~
- ('w',12) -> 0x1f7c -- `
-
- ('w',30) -> 0x1ff4
- ('w',31) -> 0x1ff7
- ('w',32) -> 0x1ff2
- ('w',33) -> 0x1ff3
- ('w',n) | n >19 -> 0x1fa0 + n - 20
-
- ('w',n) -> 0x1f60 + n
- ('r',1) -> 0x1fe5
- _ -> mkGreekChar (c,-1) --- should not happen
-
-allGreekMin :: [Int]
-allGreekMin = [0x03b1 .. 0x03c9]
-
-
-{-
-encoding of Greek writing. Those hard to guess are marked with ---
-
- maj min
-A a Alpha 0391 03b1
-B b Beta 0392 03b2
-G g Gamma 0393 03b3
-D d Delta 0394 03b4
-E e Epsilon 0395 03b5
-Z z Zeta 0396 03b6
-H h Eta --- 0397 03b7
-Q q Theta --- 0398 03b8
-I i Iota 0399 03b9
-K k Kappa 039a 03ba
-L l Lambda 039b 03bb
-M m My 039c 03bc
-N n Ny 039d 03bd
-X x Xi 039e 03be
-O o Omikron 039f 03bf
-P p Pi 03a0 03c0
-R r Rho 03a1 03c1
- j Sigma --- 03c2
-S s Sigma 03a3 03c3
-T t Tau 03a4 03c4
-Y y Ypsilon 03a5 03c5
-F f Phi 03a6 03c6
-C c Khi --- 03a7 03c7
-U u Psi 03a8 03c8
-W w Omega --- 03a9 03c9
-
-( spiritus asper
-) spiritus lenis
-! iota subscriptum
-
-' acutus
-~ circumflexus
-` gravis
-
--}
-
-
-
-
-