headroom-0.2.2.0: src/Headroom/Template.hs
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-|
Module : Headroom.Template
Description : Generic representation of supported template type
Copyright : (c) 2019-2020 Vaclav Svejcar
License : BSD-3-Clause
Maintainer : vaclav.svejcar@gmail.com
Stability : experimental
Portability : POSIX
Module providing generic representation of supported template type, using
the 'Template' /type class/.
-}
module Headroom.Template where
import RIO
-- | Type class representing generic license header template support.
class Template t where
-- | Returns list of supported file extensions for this template type.
templateExtensions :: NonEmpty Text -- ^ list of supported file extensions
-- | Parses template from given raw text.
parseTemplate :: MonadThrow m
=> Maybe Text -- ^ name of the template (optional)
-> Text -- ^ raw template text
-> m t -- ^ parsed template
-- | Renders parsed template and replaces all variables with actual values.
renderTemplate :: MonadThrow m
=> HashMap Text Text -- ^ values of variables to replace
-> t -- ^ parsed template to render
-> m Text -- ^ rendered template text