summaryrefslogtreecommitdiff
path: root/examples/slowApp/MkApp.hs
blob: e53392feb2c21ff75d7d69beabee828e74912ed2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
-- update the import list of every language
-- although possibly some extra definitions at the end
-- the new files are produced in ./tmp/
-- usage: runghc MkApp.hs

langs = words "Bul Cat Chi Dut Eng Fin Fre Ger Hin Ita Spa Swe"
appCnc lang = "App" ++ lang ++ ".gf"

appAbs = "App.gf"

main = do
  imports <- readFile appAbs >>= return . getImports
  mapM_ (\f -> readFile f >>= writeFile ("tmp/" ++ f) . (putImports imports)) (map appCnc langs)

getImports = takeWhile (/= ']') . tail . dropWhile (/='[')

putImports i s = 
  let
    (s1,_:s2) = span (/='[') s
    (_,   s3) = span (/=']') s2
  in s1 ++ "[" ++ i ++ extra s3

extra s = unlines (init (lines s) ++ extraLines ++ ["}"])

extraLines = -- [] -- default: no extra

  [
  "",
  "ComplV2V v np vp = mkVP v np vp ;",
  "ComplV2A v np vp = mkVP v np vp ;",
  "ComplV2Q v np vp = mkVP v np vp ;",
  "ComplV2S v np vp = mkVP v np vp ;",
  "ComplV3  v np vp = mkVP v np vp ;",
  ""
  ]