Link tect can be empty; inline code cannot be empty and can have nested
backticks; created a unit parser for all characters except newline
This commit is contained in:
@@ -185,15 +185,16 @@ parseStrikethrough = do
|
|||||||
-- Parse code
|
-- Parse code
|
||||||
parseCode :: Parser MdToken
|
parseCode :: Parser MdToken
|
||||||
parseCode = do
|
parseCode = do
|
||||||
char '`'
|
opening <- some $ char '`'
|
||||||
inside <- manyTill (satisfy (/= '\n')) (char '`')
|
inside <- someTill (satisfy (/= '\n')) (char '`')
|
||||||
|
closing <- count (length opening - 1) (char '`')
|
||||||
return (Code (Unit (concatMap escapeChar inside)))
|
return (Code (Unit (concatMap escapeChar inside)))
|
||||||
|
|
||||||
-- Parse a link
|
-- Parse a link
|
||||||
parseLink :: Parser MdToken
|
parseLink :: Parser MdToken
|
||||||
parseLink = do
|
parseLink = do
|
||||||
char '['
|
char '['
|
||||||
linkText <- someTill parseLineToken (char ']')
|
linkText <- manyTill parseLineToken (char ']')
|
||||||
char '('
|
char '('
|
||||||
linkURL <- manyTill anySingle (char ')')
|
linkURL <- manyTill anySingle (char ')')
|
||||||
return $ Link (Line linkText) (URL linkURL)
|
return $ Link (Line linkText) (URL linkURL)
|
||||||
@@ -259,6 +260,13 @@ parseUnit = do
|
|||||||
text <- anySingle
|
text <- anySingle
|
||||||
return (Unit [text])
|
return (Unit [text])
|
||||||
|
|
||||||
|
-- Parse any character except a newline
|
||||||
|
parseUnitExceptNewline :: Parser MdToken
|
||||||
|
parseUnitExceptNewline = do
|
||||||
|
-- text <- satisfy (`notElem` specialChars)
|
||||||
|
text <- satisfy (/= '\n')
|
||||||
|
return (Unit [text])
|
||||||
|
|
||||||
lineParsers :: [Parser MdToken]
|
lineParsers :: [Parser MdToken]
|
||||||
lineParsers =
|
lineParsers =
|
||||||
[ parseLinebreak,
|
[ parseLinebreak,
|
||||||
|
Reference in New Issue
Block a user