This library provides a very simple format string syntax with named identifiers based on text and attoparsec.
Syntax for identifiers is ${variable-name}.
Please note that it is whitespace sentitive, meaning ${var] references the variable "var" whereas ${ var} referenced the varaible " var".
The rendering is agnostic to the data structure you use to keep the identifiers.
The formatting function expects simply a function Text -> Maybe Text
There is currently no escaping mechanism, meaning $ parses to "$" but there is no way to get a literal ${.
let formatStr = "A string with ${var} and ${var2}"
let identMap = [("var", "something"), ("var2", "something else")] :: HashMap Text Text
format' formatStr (lookup identMap)
-- A string with something and something else