ReplaceUmlaut-0.1.5.3: src/Lib/OneMDfile.hs
-----------------------------------------------------------------------------
-- Module : Convert umlaut written as ae, oe or ue into ä, ö and ü
-- in a txt file
-----------------------------------------------------------------------------
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE OverloadedStrings #-}
module Lib.OneMDfile -- (openMain, htf_thisModuelsTests)
where
import UniformBase
import Lib.ProcWord
import Lib.FileHandling
import Lib.ProcTextFile
-- import Lib.ProcPandocDatei
-- import MdDocHandling
-- for pandoc testing
-- import Uniform.Pandoc
-- import qualified Text.Pandoc as P
-- import qualified Text.Pandoc.Walk as PW
-- import qualified Data.Text as T
-- import Wave.MD2doc
-- newExtension :: Extension
-- newExtension = Extension "new" :: Extension
-- mdFile = makeTyped extMD
-- ^ filetype to read text in lines
-- procMd3 :: Bool -> [Text]-> Path Abs File -> ErrIO ()
-- procMd3 debug erl2 fn = do
-- -- erl2 <- readErlaubt fnErl
-- procMd1 debug erl2 fn
-- -- ls :: MarkdownText <- read8 fn markdownFileType
-- putIOwords ["procMd3 done ", "fn", showT fn]
-- ls2 <- unPandocM (changeUmlautInPandoc True erl2 (ls))
-- if debug
-- then do
-- let fnnew = makeAbsFile (toFilePath fn <> "NEW")
-- putIOwords ["procMd result in new", showT fnnew]
-- write8 fnnew markdownFileType ls2
-- putIOwords ["procMd result in new written", showT ls2, "fn", showT fnnew]
-- else do
-- let fnrename = fn <.> bakExtension :: Path Abs File
-- renameOneFile (fn <.> extMD) fnrename
-- putIOwords ["procMd renamed to bak", showT fnrename]
-- write8 fn markdownFileType ls2
-- when debug $ putIOwords ["procMd done", showT ls2]
procMd1 :: Bool -> [Text] -> Path Abs File -> ErrIO Bool
-- ^ replace umlaut in a markdown file and report if any change
-- it is known that the file is german text and should be processed
-- conversion unless it is an permitted group
-- in a file with extension txt
-- the original file is renamed to bak and the
-- corrected version written to the original filename
-- except when debug flag is set
-- then the new file is written to NEW
-- and the original file is not changed
-- debug true gives new file
-- returns False if something has changed
procMd1 debug erl2 fn = do
when debug $ putIOwords ["\n procMD1 "
, "\tfile to process", showT fn
, "\terl2", showT erl2
]
res <- procTextFile debug erl2 fn
when debug $ putIOwords ["\n procMD1 done. Changes", showT res]
return res
-- md1 <- read8 fn mdFile
-- dr@(Docrep yam1 pan1) <- readMarkdown2docrep md
-- if "ngerman" /= dyLang yam1
-- then do
-- when debug $ putIOwords ["\n procMD1 ", "not german"]
-- return dr
-- else do
-- when debug $ putIOwords ["\n procMD1 ", "german"]
-- return dr
-- let f1 = mdDocRead . unlines' $ f0 :: MdDoc1 -- definition in MdDocHandling
-- when debug $ putIOwords ["procMD1 yamlHeader", showT . yamlHeader1 $ f1]
-- let german = mdocIsGerman f1 -- check requires pandoc?
-- if german then do
-- -- let f2 = updateMdDoc2 (procMdTxt erl2) (procMdTxt erl2) f1
-- -- newfn <- changeExtensionBakOrNew debug fn -- not debug?
-- -- let f3 = mdDocWrite f2
-- let f3 = map (procLine2 erl2) f0 -- process the full file
-- writeWithBak debug fn mdFile f3
-- when True $ putIOwords ["\n procMd1 ", showT fn, "german file umlaut changed with backup"]
-- else
-- when debug $ putIOwords ["\n procMd1 ", showT fn, "not german file"]
-- when debug $ putIOwords ["\n procMD1 ", showT fn, "file done with backup"]
-- return ()
-- data Markdown = Markdown Text deriving (Show, Read, Eq, Ord)
-- ^ just for marking md files
-- mdFile :: TypedFile5 Text Markdown
-- mdExtension :: Extension
-- mdExtension = Extension "md" :: Extension
-- procMdTxt2 :: [Text] -> Text -> Text
-- -- change all umlaut in text
-- -- preserve leading blanks of line, or tabs, but not mixture of these
-- procMdTxt2 erl2 t = concat' [ld,t2]
-- where
-- t2 = unlines' . map (procLine erl2) . lines' $ t1
-- (ld, t1) = case mb1 t of
-- Nothing -> case mb2 t of
-- Nothing -> ("", t)
-- Just (lead2, _, t02) -> (lead2,t02)
-- Just (lead, _, t0) -> (lead,t0)
-- mb1 tx = T.commonPrefixes " " tx
-- mb2 ty = T.commonPrefixes "\t\t\t\t\t\t\t" ty