content: ----------------------------------------------------------------------
  -- |
  -- Maintainer  : AR
  -- Stability   : (stable)
  -- Portability : (portable)
  --
  -- > CVS $Date: 2005/05/12 10:03:34 $ 
  -- > CVS $Author: aarne $
  -- > CVS $Revision: 1.9 $
  --
  -- Compile @HelpFile.hs@ from the text file @HelpFile@.
  -----------------------------------------------------------------------------
  
  module Main (main) where
  
  main = do
    s <- readFile "HelpFile"
    let s' = mkHsFile (lines s)
    writeFile "GF/Shell/HelpFile.hs" s'
  
  mkHsFile ss =
    helpHeader ++
    "module GF.Shell.HelpFile where\n\n" ++
    "import GF.Data.Operations\n\n" ++
    "txtHelpFileSummary =\n" ++
    "  unlines $ map (concat . take 1 . lines) $ paragraphs txtHelpFile\n\n" ++
    "txtHelpCommand c =\n" ++ 
    "  case lookup c [(takeWhile (/=',') p,p) | p <- paragraphs txtHelpFile] of\n" ++
    "    Just s -> s\n" ++
    "    _ -> \"Command not found.\"\n\n" ++
    "txtHelpFile =\n" ++
    unlines (map mkOne ss) ++
    "  []"
  
  mkOne s = "  \"" ++ pref s ++ (escs s) ++ "\" ++"
   where 
     pref (' ':_) = "\\n"
     pref _ = "\\n" ---
     escs [] = []
     escs (c:cs) | elem c "\"\\" = '\\':c:escs cs
                 | fromEnum c > 127 = "\\" ++show (fromEnum c)++escs cs
     escs (c:cs) = c:escs cs
  
  helpHeader = unlines [
    "----------------------------------------------------------------------",
    "-- |",
    "-- Module      : GF.Shell.HelpFile",
    "-- Maintainer  : Aarne Ranta",
    "-- Stability   : (stable)",
    "-- Portability : (portable)",
    "--",
    "-- > CVS $Date: 2005/05/12 10:03:34 $", 
    "-- > CVS $Author: aarne $",
    "-- > CVS $Revision: 1.9 $",
    "--",
    "-- Help on shell commands. Generated from HelpFile by 'make help'.",
    "-- PLEASE DON'T EDIT THIS FILE.",
    "-----------------------------------------------------------------------------",
    "",
    ""
    ]