fixed issues with lists
This commit is contained in:
parent
10ea8c2177
commit
499811fed0
1 changed files with 11 additions and 8 deletions
|
|
@ -162,13 +162,15 @@ horizontalRuleBlock = do
|
||||||
unorderedListBlock :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m Element
|
unorderedListBlock :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m Element
|
||||||
unorderedListBlock = do
|
unorderedListBlock = do
|
||||||
items <- some unorderedListItem
|
items <- some unorderedListItem
|
||||||
|
lineEnding'
|
||||||
pure $ List $ L Unordered items
|
pure $ List $ L Unordered items
|
||||||
|
|
||||||
unorderedListItem :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m ListItem
|
unorderedListItem :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m ListItem
|
||||||
unorderedListItem = do
|
unorderedListItem = do
|
||||||
oneOf "*-+"
|
oneOf "*-+"
|
||||||
char ' ' <|> char '\t'
|
char ' ' <|> char '\t'
|
||||||
content <- manyTill inlineElement (try lineEnding')
|
content <- many $ notFollowedBy lineEnding' *> inlineElement
|
||||||
|
lineEnding'
|
||||||
-- continuations <- many listContinuation
|
-- continuations <- many listContinuation
|
||||||
children <- many (try indentedList)
|
children <- many (try indentedList)
|
||||||
pure $ LI content children
|
pure $ LI content children
|
||||||
|
|
@ -202,24 +204,25 @@ indentedOrderedList = do
|
||||||
indentedListItem :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m () -> ParserTG s m ListItem
|
indentedListItem :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m () -> ParserTG s m ListItem
|
||||||
indentedListItem marker = do
|
indentedListItem marker = do
|
||||||
marker
|
marker
|
||||||
content <- manyTill inlineElement (try $ lineEnding <|> eof)
|
content <- many $ notFollowedBy lineEnding' *> inlineElement
|
||||||
pure $ LI content []
|
pure $ LI content []
|
||||||
|
|
||||||
-- Ordered List Block
|
-- Ordered List Block
|
||||||
orderedListBlock :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m Element
|
orderedListBlock :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m Element
|
||||||
orderedListBlock = do
|
orderedListBlock = do
|
||||||
items <- some orderedListItem
|
items <- some orderedListItem
|
||||||
|
lineEnding'
|
||||||
pure $ List $ L Ordered items
|
pure $ List $ L Ordered items
|
||||||
|
|
||||||
orderedListItem :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m ListItem
|
orderedListItem :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m ListItem
|
||||||
orderedListItem = do
|
orderedListItem = do
|
||||||
some digit
|
some digit
|
||||||
char '.'
|
char '.' <|> char ')'
|
||||||
char ' ' <|> char '\t'
|
optional (char ' ' <|> char '\t')
|
||||||
content <- manyTill inlineElement (try lineEnding)
|
content <- many $ notFollowedBy lineEnding' *> inlineElement
|
||||||
continuations <- many listContinuation
|
-- continuations <- many listContinuation
|
||||||
children <- many (try indentedList)
|
children <- many (try indentedList)
|
||||||
pure $ LI (content ++ concat continuations) children
|
pure $ LI content children
|
||||||
|
|
||||||
-- HTML Block
|
-- HTML Block
|
||||||
htmlBlock :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m Element
|
htmlBlock :: (Logger m, Token s ~ Char, Stream s, IsString (Tokens s)) => ParserTG s m Element
|
||||||
|
|
@ -343,7 +346,7 @@ plainTextNo' :: (HasCallStack, Logger m, Token s ~ Char, Stream s, IsString (Tok
|
||||||
plainTextNo' block_whitespace disallow = do
|
plainTextNo' block_whitespace disallow = do
|
||||||
logDebug $ "base plain Text: " <> T.show block_whitespace <> " " <> T.show disallow
|
logDebug $ "base plain Text: " <> T.show block_whitespace <> " " <> T.show disallow
|
||||||
firstChar <- noneOf (disallow <> if block_whitespace then " \t\r\n" else []) <?> "Plain Text Initial Disallow"
|
firstChar <- noneOf (disallow <> if block_whitespace then " \t\r\n" else []) <?> "Plain Text Initial Disallow"
|
||||||
remChars <- many $ notFollowedBy lineEnding *> plainTextCharNo disallow
|
remChars <- many $ notFollowedBy lineEnding' *> plainTextCharNo disallow
|
||||||
pure $ Text $ T.map wspHandler $ T.pack $ firstChar : remChars
|
pure $ Text $ T.map wspHandler $ T.pack $ firstChar : remChars
|
||||||
where
|
where
|
||||||
wspHandler '\n' = ' '
|
wspHandler '\n' = ' '
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue