module Ronn.Argument
( HasArgument (..)
, addArgument
)
where
import Prelude
import Data.String (IsString (..))
import Data.Text (Text)
import Ronn.AST
class HasArgument a where
getArgument :: a -> Maybe String
addArgument :: HasArgument a => Text -> a -> Part -> Part
addArgument :: forall a. HasArgument a => Text -> a -> Part -> Part
addArgument Text
sep a
a Part
p = case a -> Maybe String
forall a. HasArgument a => a -> Maybe String
getArgument a
a of
Maybe String
Nothing -> Part
p
Just String
arg -> [Part] -> Part
forall a. Monoid a => [a] -> a
mconcat [Part
p, Text -> Part
Raw Text
sep, Part -> Part
Variable (Part -> Part) -> Part -> Part
forall a b. (a -> b) -> a -> b
$ String -> Part
forall a. IsString a => String -> a
fromString String
arg]