Modified example refs so they can occur before or after target.
The refs are now replaced by numbers at the final stage, using processWith.
This commit is contained in:
parent
0181e66250
commit
afe18e53f1
2 changed files with 17 additions and 7 deletions
4
README
4
README
|
@ -710,7 +710,7 @@ where the last stopped. So, for example:
|
|||
|
||||
(@) My third example will be numbered (3).
|
||||
|
||||
Numbered examples can be labeled and referred to later in the
|
||||
Numbered examples can be labeled and referred to elsewhere in the
|
||||
document:
|
||||
|
||||
(@good) This is a good example.
|
||||
|
@ -718,7 +718,7 @@ document:
|
|||
As (@good) illustrates, ...
|
||||
|
||||
The label can be any string of alphanumeric characters, underscores,
|
||||
or hyphens. The example must occur before the reference.
|
||||
or hyphens.
|
||||
|
||||
Definition lists
|
||||
----------------
|
||||
|
|
|
@ -185,7 +185,18 @@ parseMarkdown = do
|
|||
-- now parse it for real...
|
||||
(title, author, date) <- option ([],[],[]) titleBlock
|
||||
blocks <- parseBlocks
|
||||
return $ Pandoc (Meta title author date) $ filter (/= Null) blocks
|
||||
let doc = Pandoc (Meta title author date) $ filter (/= Null) blocks
|
||||
-- if there are labeled examples, change references into numbers
|
||||
examples <- liftM stateExamples getState
|
||||
let handleExampleRef :: Inline -> Inline
|
||||
handleExampleRef z@(Str ('@':xs)) =
|
||||
case M.lookup xs examples of
|
||||
Just n -> Str (show n)
|
||||
Nothing -> z
|
||||
handleExampleRef z = z
|
||||
if M.null examples
|
||||
then return doc
|
||||
else return $ processWith handleExampleRef doc
|
||||
|
||||
--
|
||||
-- initial pass for references and notes
|
||||
|
@ -928,10 +939,9 @@ exampleRef :: GenParser Char ParserState Inline
|
|||
exampleRef = try $ do
|
||||
char '@'
|
||||
lab <- many1 (alphaNum <|> oneOf "-_")
|
||||
examples <- liftM stateExamples getState
|
||||
case M.lookup lab examples of
|
||||
Just num -> return (Str $ show num)
|
||||
Nothing -> pzero
|
||||
-- We just return a Str. These are replaced with numbers
|
||||
-- later. See the end of parseMarkdown.
|
||||
return $ Str $ '@' : lab
|
||||
|
||||
symbol :: GenParser Char ParserState Inline
|
||||
symbol = do
|
||||
|
|
Loading…
Add table
Reference in a new issue