better render

This commit is contained in:
artlef 2018-05-31 22:59:22 +02:00
parent 0b76382fd1
commit db93108027
2 changed files with 23 additions and 15 deletions

View File

@ -11,7 +11,7 @@ printDifferentDef :: T.Text -> IO ()
printDifferentDef x = putStrLn (getDifferentDef x) printDifferentDef x = putStrLn (getDifferentDef x)
getDifferentDef :: T.Text -> String getDifferentDef :: T.Text -> String
getDifferentDef x = getDifferentDefMessages (length xs) ++ renderWordList xs getDifferentDef x = getDifferentDefMessages (length xs) ++ renderHeaderList xs
where xs = (parseDefTags . differentDefTags) x where xs = (parseDefTags . differentDefTags) x
getDifferentDefMessages :: Int -> String getDifferentDefMessages :: Int -> String
@ -21,8 +21,8 @@ getDifferentDefMessages _ = "Plusieurs définitions disponibles : \n"
parseDefTags :: [Tag String] -> [WordDefHeader] parseDefTags :: [Tag String] -> [WordDefHeader]
parseDefTags [] = [] parseDefTags [] = []
parseDefTags xs = parseDefTags xs =
(WordDefHeader (WordName (renderTags (take 1 (fst st)))) (WordDefHeader (WordName (renderTags (take 1 (fst st))))
(WordType (renderTags [(fst st) !! 1]))) (WordType (renderTags [(fst st) !! 1])))
: (parseDefTags (snd st)) : (parseDefTags (snd st))
where st = subTags xs where st = subTags xs
@ -55,9 +55,9 @@ parseFullDefTags = findRelevantTags . parseTags . T.unpack
findRelevantTags :: [Tag String] -> [Tag String] findRelevantTags :: [Tag String] -> [Tag String]
findRelevantTags [] = [] findRelevantTags [] = []
findRelevantTags (x:xs) = if x ~== "<span class=tlf_cdefinition" findRelevantTags (x:xs) = if x ~== "<span class=tlf_cdefinition"
|| x ~== "<span class=tlf_cexemple" || x ~== "<span class=tlf_cexemple"
then maybe (f xs) (\y -> y:(f xs)) (L.find (~== TagText "") xs) then maybe (f xs) (\y -> y:(f xs)) (L.find (~== TagText "") xs)
else (f xs) else (f xs)
where where
f = findRelevantTags f = findRelevantTags

View File

@ -5,7 +5,7 @@ module WordDef
WordName(WordName), WordName(WordName),
WordType(WordType), WordType(WordType),
WordSentence(..), WordSentence(..),
renderWordList, renderHeaderList,
renderHeader, renderHeader,
renderFullDef renderFullDef
) where ) where
@ -19,19 +19,27 @@ data WordDefHeader = WordDefHeader WordName WordType deriving Show
data WordName = WordName String deriving Show data WordName = WordName String deriving Show
data WordType = WordType 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 -> String
getNameString (WordName s) = s getNameString (WordName s) = s
getTypeString :: WordType -> String getTypeString :: WordType -> String
getTypeString (WordType s) = s getTypeString (WordType s) = s
renderWordList :: [WordDefHeader] -> String renderFullDef :: WordFullDef -> String
renderWordList [] = "" renderFullDef (WordFullDef wordDefHeader wordSentenceList) =
renderWordList (x:xs) = (renderHeader x) ++ "\n" ++ (renderWordList xs) 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