diff --git a/ParseHtml.hs b/ParseHtml.hs index ac6128c..8ccedee 100644 --- a/ParseHtml.hs +++ b/ParseHtml.hs @@ -11,7 +11,7 @@ printDifferentDef :: T.Text -> IO () printDifferentDef x = putStrLn (getDifferentDef x) getDifferentDef :: T.Text -> String -getDifferentDef x = getDifferentDefMessages (length xs) ++ renderWordList xs +getDifferentDef x = getDifferentDefMessages (length xs) ++ renderHeaderList xs where xs = (parseDefTags . differentDefTags) x getDifferentDefMessages :: Int -> String @@ -21,8 +21,8 @@ getDifferentDefMessages _ = "Plusieurs définitions disponibles : \n" parseDefTags :: [Tag String] -> [WordDefHeader] parseDefTags [] = [] -parseDefTags xs = - (WordDefHeader (WordName (renderTags (take 1 (fst st)))) +parseDefTags xs = + (WordDefHeader (WordName (renderTags (take 1 (fst st)))) (WordType (renderTags [(fst st) !! 1]))) : (parseDefTags (snd st)) where st = subTags xs @@ -55,9 +55,9 @@ parseFullDefTags = findRelevantTags . parseTags . T.unpack findRelevantTags :: [Tag String] -> [Tag String] findRelevantTags [] = [] -findRelevantTags (x:xs) = if x ~== " y:(f xs)) (L.find (~== TagText "") xs) + then maybe (f xs) (\y -> y:(f xs)) (L.find (~== TagText "") xs) else (f xs) where f = findRelevantTags diff --git a/WordDef.hs b/WordDef.hs index 72d8fd6..2e62936 100644 --- a/WordDef.hs +++ b/WordDef.hs @@ -5,7 +5,7 @@ module WordDef WordName(WordName), WordType(WordType), WordSentence(..), - renderWordList, + renderHeaderList, renderHeader, renderFullDef ) where @@ -19,19 +19,27 @@ data WordDefHeader = WordDefHeader WordName WordType deriving Show data WordName = WordName String deriving Show data WordType = WordType String deriving Show -renderFullDef :: WordFullDef -> String -renderFullDef w = show w - -renderHeader :: WordDefHeader -> String -renderHeader (WordDefHeader n t) = (getNameString n) ++ (getTypeString t) - getNameString :: WordName -> String getNameString (WordName s) = s getTypeString :: WordType -> String getTypeString (WordType s) = s -renderWordList :: [WordDefHeader] -> String -renderWordList [] = "" -renderWordList (x:xs) = (renderHeader x) ++ "\n" ++ (renderWordList xs) +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