summaryrefslogtreecommitdiffstats
path: root/src/utils.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.hs')
-rw-r--r--src/utils.hs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/utils.hs b/src/utils.hs
index 252804f..96f5fcb 100644
--- a/src/utils.hs
+++ b/src/utils.hs
@@ -2,6 +2,8 @@ module Utils where
import Control.Monad.Except
import qualified Data.Bifunctor as B
+import Data.Text (Text)
+import qualified Data.Text as T
(.>) = flip (.)
@@ -51,3 +53,14 @@ safeBreak' _ ex _ [] = throwError ex
safeBreak' cond ex acc lst@(x : xs)
| cond x = pure (reverse acc, lst)
| otherwise = safeBreak' cond ex (x : acc) xs
+
+fmt :: String -> [String] -> String
+fmt str values = T.unpack $ fmt' (T.pack str) (map T.pack values)
+
+fmt' :: Text -> [Text] -> Text
+fmt' text [] = text
+fmt' text (v : rest) =
+ let pattern = T.pack "%%"
+ (front, back) = T.breakOn pattern text
+ res = T.concat [front, v, T.drop (T.length pattern) back]
+ in fmt' res rest