From 6c057015cd3b649eee365d04fe3de2f29d7abb2c Mon Sep 17 00:00:00 2001 From: Alice BRENON <alice.brenon@ens-lyon.fr> Date: Thu, 7 Sep 2023 18:47:28 +0200 Subject: [PATCH] Take linearize out into a module for reuse --- lib/Text/Filter/Linearize.hs | 16 ++++++++++++++++ scripts/linearize.hs | 19 ++++--------------- 2 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 lib/Text/Filter/Linearize.hs diff --git a/lib/Text/Filter/Linearize.hs b/lib/Text/Filter/Linearize.hs new file mode 100644 index 0000000..3f0c40d --- /dev/null +++ b/lib/Text/Filter/Linearize.hs @@ -0,0 +1,16 @@ +module Text.Filter.Linearize + ( linearize ) where + +import Data.Char (isUpper, isLower) + +linearize :: Bool -> String -> String +linearize _ "" = "" +linearize b ('¬':'\n':s) = linearize b s +linearize b ('\n':'\n':s) = "\n\n" ++ linearize b s +linearize True ('.':'\n':c0:c1:c2:s) + | isUpper c0 && isLower c1 && isLower c2 = ".\n\n" ++ c0:c1:c2:linearize True s +linearize b ('.':'\n':'—':s) = ".\n\n—" ++ linearize b s +linearize b ('\n':s) = ' ' : linearize b s +linearize b ('-':'\n':c:s) + | isUpper c = '-' : c : linearize b s +linearize b (c:s) = c : linearize b s diff --git a/scripts/linearize.hs b/scripts/linearize.hs index f5501a2..c0b029f 100755 --- a/scripts/linearize.hs +++ b/scripts/linearize.hs @@ -1,24 +1,13 @@ #!/usr/bin/env -S runhaskell --ghc-arg="-Wall" --ghc-arg="-i lib" -import Data.Char (isUpper, isLower) import System.Environment (getArgs) import System.Script (syntax) import Text.Filter (xargs) - -linearize :: String -> String -linearize "" = "" -linearize ('¬':'\n':s) = linearize s -linearize ('\n':'\n':s) = "\n\n" ++ linearize s -linearize ('.':'\n':c0:c1:c2:s) - | isUpper c0 && isLower c1 && isLower c2 = ".\n\n" ++ c0:c1:c2:linearize s -linearize ('.':'\n':'—':s) = ".\n\n—" ++ linearize s -linearize ('\n':s) = ' ' : linearize s -linearize ('-':'\n':c:s) - | isUpper c = '-' : c : linearize s -linearize (c:s) = c : linearize s +import Text.Filter.Linearize (linearize) main :: IO () main = getArgs >>= cli where - cli [target] = xargs (pure.linearize) target - cli _ = syntax "TARGET_DIR" + cli [inferParagraphs, target] = + xargs (pure.linearize (inferParagraphs == "Y")) target + cli _ = syntax "[Y|N] TARGET_DIR" -- GitLab