summaryrefslogtreecommitdiffstats
path: root/src/Much/Utils.hs
diff options
context:
space:
mode:
authorKierán Meinhardt <kieran.meinhardt@gmail.com>2020-09-23 17:44:40 +0200
committerKierán Meinhardt <kieran.meinhardt@gmail.com>2020-09-23 17:44:40 +0200
commit8e92e6e11d2b3b0bfb5ac9d68f347219493e6380 (patch)
tree6484ca42d85ca89475e922f7b45039c116ebbf97 /src/Much/Utils.hs
parent6a6ad3aecd53ffd89101a0dee2b4ea576d4964d4 (diff)
split into library + executables
Diffstat (limited to 'src/Much/Utils.hs')
-rw-r--r--src/Much/Utils.hs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/Much/Utils.hs b/src/Much/Utils.hs
new file mode 100644
index 0000000..80615fc
--- /dev/null
+++ b/src/Much/Utils.hs
@@ -0,0 +1,28 @@
+module Much.Utils where
+
+import Control.Exception
+import System.Directory
+import System.IO
+
+
+withTempFile :: FilePath -> String -> ((FilePath, Handle) -> IO a) -> IO a
+withTempFile tmpdir template =
+ bracket (openTempFile tmpdir template) (removeFile . fst)
+
+
+mintercalate :: Monoid b => b -> [b] -> b
+mintercalate c (h:t) = foldl (\acc x -> acc <> c <> x) h t
+mintercalate _ [] = mempty
+
+
+padl :: Int -> a -> [a] -> [a]
+padl n c s =
+ if length s < n
+ then padl n c (c:s)
+ else s
+
+padr :: Int -> a -> [a] -> [a]
+padr n c s =
+ if length s < n
+ then padr n c (s ++ [c])
+ else s