mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-11 13:59:31 -06:00
49 lines
1.3 KiB
Haskell
49 lines
1.3 KiB
Haskell
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
|