hsenv-0.3: src/Util/Template.hs
module Util.Template ( substs
) where
import Data.List (isPrefixOf)
-- Simple templating system
-- most of the existing tools are either too complicated
-- or use $ (or even ${}) chars for variables, which is unfortunate
-- for use with [ba]sh templates.
type Substitution = (String, String)
-- substitute all occurences of FROM to TO
subst :: Substitution -> String -> String
subst _ [] = []
subst phi@(from, to) input@(x:xs)
| from `isPrefixOf` input = to ++ subst phi (drop (length from) input)
| otherwise = x:subst phi xs
-- multi version of subst
substs :: [Substitution] -> String -> String
substs phis str = foldr subst str phis