module ProjectForge.ProjectTemplate where
import Data.Set (Set)
import Text.Mustache (Template)
data FileTemplate = MkFileTemplate {
FileTemplate -> FilePath
originalFilename :: !FilePath
, FileTemplate -> Template
fileNameTemplate :: !Template
, FileTemplate -> Template
fileContentsTemplate :: !Template
} deriving (FileTemplate -> FileTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FileTemplate -> FileTemplate -> Bool
$c/= :: FileTemplate -> FileTemplate -> Bool
== :: FileTemplate -> FileTemplate -> Bool
$c== :: FileTemplate -> FileTemplate -> Bool
Eq, Int -> FileTemplate -> ShowS
[FileTemplate] -> ShowS
FileTemplate -> FilePath
forall a.
(Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a
showList :: [FileTemplate] -> ShowS
$cshowList :: [FileTemplate] -> ShowS
show :: FileTemplate -> FilePath
$cshow :: FileTemplate -> FilePath
showsPrec :: Int -> FileTemplate -> ShowS
$cshowsPrec :: Int -> FileTemplate -> ShowS
Show, Eq FileTemplate
FileTemplate -> FileTemplate -> Bool
FileTemplate -> FileTemplate -> Ordering
FileTemplate -> FileTemplate -> FileTemplate
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: FileTemplate -> FileTemplate -> FileTemplate
$cmin :: FileTemplate -> FileTemplate -> FileTemplate
max :: FileTemplate -> FileTemplate -> FileTemplate
$cmax :: FileTemplate -> FileTemplate -> FileTemplate
>= :: FileTemplate -> FileTemplate -> Bool
$c>= :: FileTemplate -> FileTemplate -> Bool
> :: FileTemplate -> FileTemplate -> Bool
$c> :: FileTemplate -> FileTemplate -> Bool
<= :: FileTemplate -> FileTemplate -> Bool
$c<= :: FileTemplate -> FileTemplate -> Bool
< :: FileTemplate -> FileTemplate -> Bool
$c< :: FileTemplate -> FileTemplate -> Bool
compare :: FileTemplate -> FileTemplate -> Ordering
$ccompare :: FileTemplate -> FileTemplate -> Ordering
Ord)
newtype ProjectTemplate = MkProjectTemplate (Set FileTemplate)
deriving (ProjectTemplate -> ProjectTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ProjectTemplate -> ProjectTemplate -> Bool
$c/= :: ProjectTemplate -> ProjectTemplate -> Bool
== :: ProjectTemplate -> ProjectTemplate -> Bool
$c== :: ProjectTemplate -> ProjectTemplate -> Bool
Eq, Int -> ProjectTemplate -> ShowS
[ProjectTemplate] -> ShowS
ProjectTemplate -> FilePath
forall a.
(Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a
showList :: [ProjectTemplate] -> ShowS
$cshowList :: [ProjectTemplate] -> ShowS
show :: ProjectTemplate -> FilePath
$cshow :: ProjectTemplate -> FilePath
showsPrec :: Int -> ProjectTemplate -> ShowS
$cshowsPrec :: Int -> ProjectTemplate -> ShowS
Show)
instance Semigroup ProjectTemplate where
<> :: ProjectTemplate -> ProjectTemplate -> ProjectTemplate
(<>) (MkProjectTemplate Set FileTemplate
x) (MkProjectTemplate Set FileTemplate
y) = Set FileTemplate -> ProjectTemplate
MkProjectTemplate (Set FileTemplate
x forall a. Semigroup a => a -> a -> a
<> Set FileTemplate
y)