dictfr/WordDef.hs

46 lines
1.4 KiB
Haskell

module WordDef
(
WordFullDef(WordFullDef),
WordDefHeader(WordDefHeader),
WordName(WordName),
WordType(WordType),
WordSentence(..),
renderHeaderList,
renderHeader,
renderFullDef
) where
data WordFullDef = WordFullDef WordDefHeader [WordSentence] deriving Show
data WordSentence = WordDefSentence String
| WordExampleSentence String deriving Show
data WordDefHeader = WordDefHeader WordName WordType deriving Show
data WordName = WordName String deriving Show
data WordType = WordType String deriving Show
getNameString :: WordName -> String
getNameString (WordName s) = s
getTypeString :: WordType -> String
getTypeString (WordType s) = s
renderFullDef :: WordFullDef -> String
renderFullDef (WordFullDef wordDefHeader wordSentenceList) =
renderHeader wordDefHeader ++ "\n\n" ++ renderWordSentenceList wordSentenceList
renderHeader :: WordDefHeader -> String
renderHeader (WordDefHeader n t) = (getNameString n) ++ (getTypeString t)
renderHeaderList :: [WordDefHeader] -> String
renderHeaderList [] = ""
renderHeaderList (x:xs) = (renderHeader x) ++ "\n" ++ (renderHeaderList xs)
renderWordSentence :: WordSentence -> String
renderWordSentence (WordDefSentence s) = s
renderWordSentence (WordExampleSentence s) = s
renderWordSentenceList :: [WordSentence] -> String
renderWordSentenceList [] = []
renderWordSentenceList (x:xs) = renderWordSentence x ++ renderWordSentenceList xs