Trying to get nested bold and italic to work

This commit is contained in:
2025-06-03 15:30:35 -04:00
parent 2893fa25e6
commit 160cb0edeb

View File

@@ -157,8 +157,12 @@ parseBold = parseBoldWith asteriskBold <|> parseBoldWith underscoreBold
where where
parseBoldWith delim = do parseBoldWith delim = do
string delim string delim
inside <- someTill parseLineToken $ string delim inside <- parseNestedThenLineToken delim
return (Bold (Line inside)) return (Bold (Line inside))
parseNestedThenLineToken delim = do
first <- fallthroughParser [parseItalic, parseLineToken]
rest <- fallthroughParser [singleton <$> parseItalic, singleton <$> string delim >> return mempty, liftA2 (:) parseLineToken $ parseNestedThenLineToken delim]
return (first : rest)
-- Parse italic text -- Parse italic text
parseItalic :: Parser MdToken parseItalic :: Parser MdToken
@@ -166,8 +170,12 @@ parseItalic = parseItalicWith '*' <|> parseItalicWith '_'
where where
parseItalicWith delim = do parseItalicWith delim = do
char delim char delim
inside <- someTill parseLineToken (char delim) inside <- parseNestedThenLineToken delim
return (Italic (Line inside)) return (Italic (Line inside))
parseNestedThenLineToken delim = do
first <- fallthroughParser [parseBold, parseLineToken]
rest <- fallthroughParser [singleton <$> parseBold, singleton <$> char delim >> return mempty, liftA2 (:) parseLineToken $ parseNestedThenLineToken delim]
return (first : rest)
-- Parse strikethrough text -- Parse strikethrough text
parseStrikethrough :: Parser MdToken parseStrikethrough :: Parser MdToken