[project @ 2001-08-22 12:24:41 by simonmar]
[ghc-hetmet.git] / ghc / tests / programs / andy_cherry / PrintTEX.lhs
diff --git a/ghc/tests/programs/andy_cherry/PrintTEX.lhs b/ghc/tests/programs/andy_cherry/PrintTEX.lhs
deleted file mode 100644 (file)
index 31d632d..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-> module PrintTEX (texPrinter) where
-
-> import GenUtils
-> import DataTypes
-> import Array -- 1.3
-> import Char -- 1.3
-
-This is the driver that prints a file suitable for input into latex.
-
-print_TeX_move :: String -> MoveNumber -> 
-
-1. turn [Quantum] -> [[Quantum]]
-
-> splitUpQuantum :: [Quantum] -> [[Quantum]]
-> splitUpQuantum q = splitUpQuantums q []
->   where
->      splitUpQuantums [] [] = []
->      splitUpQuantums [] mvs = [reverse mvs]
->      splitUpQuantums (mv@(QuantumMove _ _ _ _):rest) mvs
->              = splitUpQuantums rest (mv:mvs)
->      splitUpQuantums (mv@(QuantumNAG _):rest) mvs
->              = splitUpQuantums rest mvs
->      splitUpQuantums (x:xs) [] = [x] : splitUpQuantums xs []
->      splitUpQuantums (x:xs) mvs 
->              = [reverse mvs,[x]] ++ splitUpQuantums xs []
-
-> type TeXState = 
->      (Bool,          -- if Top level !
->      Board,          -- current board
->      MoveNumber)     -- the Current Move Number
-
-> printTeXQuantums :: TeXState -> [Quantum] -> [String]
-> printTeXQuantums ps
->      = concat . fst . mapAccumL printTeXQuantum ps . splitUpQuantum
-
-> printTeXQuantum :: TeXState -> [Quantum] -> ([String],TeXState)
-> printTeXQuantum state@(_,board,_) [QuantumComment ["\004"]] = 
->      (mkTeXBoard board,state)
-> printTeXQuantum state@(_,board,_) [QuantumComment (('\004':comm):comms)] = 
->      (mkTeXBoard board ++ formatText 70 (parseSquiggles (comm:comms)),state)
-> printTeXQuantum state [QuantumComment comms] = 
->      (formatText 70 (parseSquiggles comms),state)
-> printTeXQuantum (pnt,brd,mv) [QuantumAnalysis anal] =
->      (printTeXQuantums (False,err,decMove mv) anal,(pnt,brd,mv))
->   where err = error "Syntax error using ^D"
-> printTeXQuantum state@(_,board,_) [QuantumResult str] = 
->      (mkTeXBoard board ++ [printTeXResult (mkResult str)],state)
-> printTeXQuantum state mvs@(QuantumMove _ _ _ _:_) =
->      printTeXMoves state mvs
-> printTeXQuantum _ _ = error "PANIC: strange Quantum"
-
-
-> parseSquiggles = map parseSquiggle
-> parseSquiggle ('<':'s':'a':'w':'>':r) = "\\wbetter{}" ++ r
-> parseSquiggle ('<':'a':'w':'>':r)     = "\\wupperhand{}" ++ r
-> parseSquiggle ('<':'w':'a':'w':'>':r) = "\\wdecisive{}" ++ r
-> parseSquiggle ('<':'s':'a':'b':'>':r) = "\\bbetter{}" ++ r
-> parseSquiggle ('<':'a':'b':'>':r)     = "\\bupperhand{}" ++ r
-> parseSquiggle ('<':'w':'a':'b':'>':r) = "\\bdecisive{}" ++ r
-> parseSquiggle wd = wd
-
-
-> printTeXResult :: Result -> String
-> printTeXResult Win     = "$1\\!-\\!0$"
-> printTeXResult Loss    = "$0\\!-\\!1$"
-> printTeXResult Draw    = "${1 \\over 2}\\!-\\!{1 \\over 2}$"
-> printTeXResult Unknown = "$*$"
-
-> printTeXMoves (tl,_,mv) mvs 
->      = ([text],(True,brd,incMove last_mv_num))
->    where
->      aux_mvs = zip3 mvs (iterate incMove mv) (False:repeat True)
-
->      (QuantumMove _ _ _ brd,last_mv_num,_) = last aux_mvs
->      text = initText tl
->          ++ concat (fst (mapAccumL (pntMove tl) (mv,False) mvs))
->          ++ endText tl 
-
->      initText False = 
->           case mv of
->              MoveNumber i Black -> "|" ++ show i ++ "\\ldots~"
->              _ -> "|"
->      initText True = 
->              "\\begin{center}|\n" ++
->              "{\\bf" ++
->              "\\begin{tabular}{rp{50pt}p{50pt}}\n" ++
->           case mv of
->              MoveNumber i Black -> show i ++ " & \\ldots"
->              _ -> ""
-
->      endText True = case getMoveColour last_mv_num of
->              White -> "&\\\\\n\\end{tabular}}|\n\\end{center}"
->              Black -> "\\end{tabular}}|\n\\end{center}"
->      endText False =  "|"
-
-Use zip here !
-
->      pntMove True (mv@(MoveNumber i White),bl) move
->              = (show i ++ " & " 
->              ++ printableMove move,
->                (incMove mv,True))
->      pntMove True (mv@(MoveNumber i Black),bl) move
->              = (" & " ++ printableMove move ++ "\\\\\n",
->                (incMove mv,True))
->      pntMove False (mv@(MoveNumber i White),bl) move
->              = ((if bl then "; " else "") ++ show i ++ ".~"
->                      ++ printableMove move,
->                (incMove mv,True))
->      pntMove False (mv@(MoveNumber i Black),bl) move
->              = ((if bl then ", " else "") ++ printableMove move,
->                (incMove mv,True))
-
-> printableMove :: Quantum -> String
-> printableMove (QuantumMove move ch an _) = map fn move ++ rest
->    where
->      fn 'x' = '*'
->      fn 'O' = '0'
->      fn c   = c
->      rest = case ch of
->              "#" -> an ++ " mate"
->              _   -> ch ++ an
-
-> mkTeXBoard :: Board -> [String]
-> mkTeXBoard (Board arr _ _) = 
->      ["\n\\board"] ++
->      ["{" ++ [ fn ((x-y) `rem` 2 == 0) (arr ! (x,y)) | x <- [1..8]] ++ "}" 
->                      | y <- reverse [1..8]] ++
->      ["$$\\showboard$$"]
->  where
->      fn _ (WhitesSq p) = head (userFormat p)
->      fn _ (BlacksSq p) = toLower (head (userFormat p))
->      fn True VacantSq = '*'
->      fn False VacantSq = ' '
-
-> printTeXGame :: RealGame -> [String]
-> printTeXGame (Game tags qu) = [
->      "\\clearpage",
->      "\\begin{center}",
->      "\\fbox{\\fbox{\\large\\begin{tabular}{l}",
->      ("Game " ++ gameno ++ " \\hspace{.3 in} " 
->              ++ date 
->              ++ " \\hspace{.3 in} " 
->              ++ result 
->              ++ "\\\\"),
->      "\\hline" ++ (if null opening then "" else "\n" ++ opening ++ "\\\\"),
->      "\\raisebox{2.5pt}[11pt]{\\framebox[11pt]{\\rule{0pt}{4.25pt}}} "
->              ++ white ++ "\\\\",
->      "\\rule[-1pt]{11pt}{11pt} "++ black ++ "\\\\",
->      site,
->      "\\end{tabular}}}",
->      "\\end{center}"] ++
->      (printTeXQuantums (True,startBoard,initMoveNumber) qu)
->   where
->      (date,site,game_no,res,white,black,opening) = getHeaderInfo tags
->      gameno = case game_no of
->                Nothing -> ""
->                Just n -> show n
->      result = printTeXResult res
-
-> texPrinter :: [RealGame] -> String
-> texPrinter games = 
->         texHeader 
->      ++ (unlines(concat(map printTeXGame games)))
->      ++ texFooter
-
-> texHeader =
->      "\\documentstyle[twocolumn,a4wide,chess]{article}\n" ++
->      "\\textwidth 7.0 in\n" ++
->      "\\textheight 63\\baselineskip\n" ++
->      "\\columnsep .4 in\n" ++
->      "\\columnseprule .5 pt\n" ++
->      "\\topmargin -0.5 in\n" ++
->      "\\headheight 0 pt\n" ++
->      "\\headsep 0 pt\n" ++
->      "\\oddsidemargin -0.3 in\n" ++
->      "\\font\\sc=cmcsc10\n\\pagestyle{empty}\n" ++
->      "\\begin{document}\n\\thispagestyle{empty}\n\n"
-
-> texFooter = "\n\\end{document}\n"
-
-