summaryrefslogtreecommitdiff
path: root/examples/phrasebook/Clone.hs
diff options
context:
space:
mode:
authorJohn J. Camilleri <john@digitalgrammars.com>2018-07-04 10:09:58 +0200
committerJohn J. Camilleri <john@digitalgrammars.com>2018-07-04 10:09:58 +0200
commitc6f4edaea5f1074ba682fac5d711016f0136998f (patch)
treebb49b8bac2e3cafd3c1f997115bf5bb841554eab /examples/phrasebook/Clone.hs
parent00476ae38687fb7d33081130822cbd4e8f34cfd3 (diff)
Remove examples directory; these now live in gf-contrib
All changes have been reflected in the gf-contrib repository: https://github.com/GrammaticalFramework/gf-contrib Now, for WebSetup to build the example grammars, one must have gf-contrib cloned in the same top-level directory as GF. When this isn't the case, WebSetup displays a notice without failing.
Diffstat (limited to 'examples/phrasebook/Clone.hs')
-rw-r--r--examples/phrasebook/Clone.hs65
1 files changed, 0 insertions, 65 deletions
diff --git a/examples/phrasebook/Clone.hs b/examples/phrasebook/Clone.hs
deleted file mode 100644
index 4619c13ed..000000000
--- a/examples/phrasebook/Clone.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-module Main where
-
-import Control.Monad
-import Data.Maybe
-import Data.Char
-import System.Cmd
-import System.Directory
-import System.Environment
-import System.Exit
-
-
--- To clone a project from one language to another:
---
--- 1. for each Module in 'modules', copy ModuleFROM to ModuleTO
--- 2. in each ModuleTO, replace substrings FROM by TO, if not prefixes of an Ident
--- 3. in each ModuleTO in 'specifics', comment out every line in the body, except
--- those whose first word is in 'commons'.
---
--- Syntax: runghc Clone FROM TO
--- Example: runhugs Clone Swe Nor
-
--- The following lines are for the phrasebook project, and can be changed
--- to fit other projects.
-
-modules = "Phrasebook":"Sentences":specifics
-specifics = ["Words","Greetings"]
-commons = ["Apple","Beer","Bread","Fish","Milk","Salt","Water","Wine",
- "Bad","Cold","Good","Warm","AHasChildren"]
-
-
-main = do
- from:to:_ <- getArgs
- mapM_ (clone from to) modules
-
-clone from to pref = do
- s <- readFile (pref ++ from ++ ".gf")
- writeFile (pref ++ to ++ ".gf") (commentIf (isSpecific pref) (replaceLang from to s))
-
-isSpecific = flip elem specifics
-
-replaceLang s1 s2 = repl where
- repl s = case s of
- c:cs -> case splitAt lgs s of
- (pre,c:rest) | pre == s1 && elem c " \n\t,:=(){}.-[];" -> s2 ++ [c] ++ repl rest
- _ -> c : repl cs
- _ -> s
- lgs = 3 -- length s1
-
--- the file name has the form p....pLLL.gf, i.e. 3-letter lang name, suffix .gf
-getLangName fi =
- let (nal,ferp) = splitAt 3 (drop 3 (reverse fi)) in
- (reverse ferp,reverse nal)
-
-commentIf c = if c then (unlines . commentBody . lines) else id
-
-commentBody ss = header ++ map comment body ++ ["}"] where
- (header,body) = break (isJment . words) ss
- isJment ws = case ws of
- k:_ | elem k ["flags","lin","lincat","oper","param"] -> True
- _ -> False
- comment l = case l of
- _ | take 2 l == "--" -> l -- already commented
- _ | all isSpace l -> l -- empty line
- _ | elem (head (words l)) commons -> l -- in 'commons'
- _ -> "--" ++ l