diff --git a/lib/src/MkLang.hs b/lib/src/MkLang.hs new file mode 100644 index 000000000..f53613993 --- /dev/null +++ b/lib/src/MkLang.hs @@ -0,0 +1,48 @@ +module Main where + +-- Prepare a new resource directory. Usage: +-- 1. $ cp german/*.gf dutch/ +-- 2. $ cd dutch/ +-- 3. $ runghc ../MkLang.hs Ger Dut +-- AR 6/11/2009 + +import System +import List + +main = do + xx <- getArgs + change xx + +change xx = case xx of + from:to:_ -> do + system "ls *.gf > files.tmp" + files <- readFile "files.tmp" >>= return . lines + mapM_ (changeFileName from to) files + system "ls *.gf > files.tmp" + files <- readFile "files.tmp" >>= return . lines + mapM_ (changeIdents from to) files + mapM_ commentOut files + comment -> do + files <- readFile "files.tmp" >>= return . lines + mapM_ commentOut files + +changeFileName from to file = system $ "mv " ++ file ++ " " ++ to_file where + to_file = take (length file - 3 - length from) (takeWhile (/='.') file) ++ to ++ ".gf" + +changeIdents from to = changeInFile changes + where + lg = length from + changes s = case s of + c:cs + | take lg s == from -> to ++ changes (drop lg s) + | otherwise -> c : changes cs + _ -> s + +commentOut = changeInFile comm where + comm s = let (hd,tl) = break (=='{') s in + hd ++ "\n{\n" ++ unlines ["--" ++ l | l <- lines tl] ++ "\n}\n" + +changeInFile ch file = do + s <- readFile file + writeFile "gf.tmp" (ch s) + system $ "mv gf.tmp " ++ file