From f74d2e3928b683d25da19d0bb868ef97c6466295 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 27 Dec 2006 14:05:21 +0000 Subject: [PATCH] update release procedule; start Thai transliteration --- src/GF/Text/Thai.hs | 120 +++++++++++++++++++++++++++++++++++++++++++ src/ReleaseProcedure | 11 ++-- 2 files changed, 124 insertions(+), 7 deletions(-) create mode 100644 src/GF/Text/Thai.hs diff --git a/src/GF/Text/Thai.hs b/src/GF/Text/Thai.hs new file mode 100644 index 000000000..8e344cc06 --- /dev/null +++ b/src/GF/Text/Thai.hs @@ -0,0 +1,120 @@ +---------------------------------------------------------------------- +-- | +-- Module : Thai +-- Maintainer : (Maintainer) +-- Stability : (experimental) +-- Portability : (portable) +-- +-- +-- Thai transliteration and other alphabet information. +----------------------------------------------------------------------------- + +-- AR 27/12/2006. Execute test2 to see the transliteration table. + +module GF.Text.Thai (mkThai) where + +import qualified Data.Map as Map +import Data.Char + +-- for testing +import GF.Text.UTF8 +import Data.List + + +mkThai :: String -> String +mkThai = unwords . map mkThaiWord . words + +type ThaiChar = Char + +mkThaiWord :: String -> [ThaiChar] +mkThaiWord = map (toEnum . mkThaiChar) . unchar + +mkThaiChar :: String -> Int +mkThaiChar c = maybe 0 id $ Map.lookup c thaiMap + +thaiMap :: Map.Map String Int +thaiMap = Map.fromList $ zip allThaiTrans allThaiCodes + + +-- each character is either [letter] or [letter+nonletter] + +unchar :: String -> [String] +unchar s = case s of + c:d:cs + | isAlpha d -> [c] : unchar (d:cs) + | otherwise -> [c,d] : unchar cs + [_] -> [s] + _ -> [] + +allThaiTrans :: [String] +allThaiTrans = words $ + "- k k1 - k2 - k3 g c c1 c2 s c3 y d t " ++ + "t1 t2 t3 n d' t' t4 t5 t6 n b p p1 f p2 f' " ++ + "p3 m y' r - l - w s' r' s- h l' O h' - " ++ + "a a. a: a+ i i: v v: u u: - - - - - - " ++ + "e e: o: a% a& " + +allThaiCodes :: [Int] +allThaiCodes = [0x0e00 .. 0x0e7f] + + +-- to test + +test1 = testThai "k2wa:mrak" +test2 = putStrLn $ thaiTable +test3 = do + writeFile "thai.html" "
"
+  appendFile "thai.html" thaiTable
+  appendFile "thai.html" "
" + + +testThai :: String -> IO () +testThai s = do + putStrLn $ encodeUTF8 $ mkThai s + putStrLn $ unwords $ map mkThaiPron $ words s + +mkThaiPron = concat . render . unchar where + render s = case s of + [c] -> maybe c return (Map.lookup c thaiFinalMap): [] + c:cs -> pronThai c : render cs + _ -> [] + +thaiFinalMap = Map.fromList $ zip allThaiTrans finals + + +thaiTable :: String +thaiTable = unlines [ + hex c ++ "\t" ++ + encodeUTF8 (showThai s) ++ "\t" ++ + s ++ "\t" ++ + pronThai s ++ "\t" ++ + [f] ++ "\t" ++ + [q] + | + (c,q,f,s) <- zip4 allThaiCodes heights finals allThaiTrans + ] + +showThai s = case s of + "-" -> "-" +--- v:_ | elem v "ivu" -> map (toEnum . mkThaiChar) ["O",s] + _ -> [toEnum $ mkThaiChar s] + +pronThai s = case s of + [c,p] + | isDigit p -> c:"h" + | p==':' -> c:[c] + | elem p "%&" -> c:"y" + | p=='+' -> c:"m" + | otherwise -> [c] + "O" -> "" + _ -> s + +hex = map hx . reverse . digs where + digs 0 = [0] + digs n = n `mod` 16 : digs (n `div` 16) + hx d = "0123456789ABCDEF" !! d + +heights :: String +finals :: String +heights = " MHHLLLLMHLLLLMMHLLLMMHLLLMMHHLLLLLL-L-LHHHHLML " +finals = " kkkkkkgt-tt-ntttttntttttnpp--pppmyn-n-wttt-n-- " diff --git a/src/ReleaseProcedure b/src/ReleaseProcedure index d47539f3a..c04f2a065 100644 --- a/src/ReleaseProcedure +++ b/src/ReleaseProcedure @@ -115,6 +115,8 @@ buildarchtranslate: i686: i586 18. Add new GF package release to SourceForge: + - https://sourceforge.net/projects/gf-tools + - Project page -> Admin -> File releases -> Add release (for the GF package) @@ -143,14 +145,9 @@ buildarchtranslate: i686: i586 figured out how to make noarch rpms from the same spec as arch-specific ones) -20. (Only if releasing a new grammars distribution) - Add new GF-grammars release. Repeat the steps above, but with - GF-grammars: - - - Add files and set properties: - - * grammar tarball -> Platform independent/Source .gz +20. Mail to gf-tools-users@lists.sourceforge.net 21. Update website. 22. Party! +