|
|
|
@ -157,8 +157,12 @@ parseBold = parseBoldWith asteriskBold <|> parseBoldWith underscoreBold
|
|
|
|
|
where
|
|
|
|
|
parseBoldWith delim = do
|
|
|
|
|
string delim
|
|
|
|
|
inside <- someTill parseLineToken $ string delim
|
|
|
|
|
inside <- parseNestedThenLineToken delim
|
|
|
|
|
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
|
|
|
|
|
parseItalic :: Parser MdToken
|
|
|
|
@ -166,8 +170,12 @@ parseItalic = parseItalicWith '*' <|> parseItalicWith '_'
|
|
|
|
|
where
|
|
|
|
|
parseItalicWith delim = do
|
|
|
|
|
char delim
|
|
|
|
|
inside <- someTill parseLineToken (char delim)
|
|
|
|
|
inside <- parseNestedThenLineToken delim
|
|
|
|
|
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
|
|
|
|
|
parseStrikethrough :: Parser MdToken
|
|
|
|
|