summaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/RST.hs
diff options
context:
space:
mode:
authordr@jones.dk <dr@jones.dk>2010-03-29 21:36:23 +0200
committerdr@jones.dk <dr@jones.dk>2010-03-29 21:36:23 +0200
commitc5408a001e497aed5733e00346bcba7e06cb65ba (patch)
treeda10f02052410c5d7c5db1d8987fe88e4a5bb757 /src/Text/Pandoc/Readers/RST.hs
parent96d4f941026a8eca3ba211facdc8ce66b2ab38bb (diff)
Imported Upstream version 1.5.1.1
Diffstat (limited to 'src/Text/Pandoc/Readers/RST.hs')
-rw-r--r--src/Text/Pandoc/Readers/RST.hs41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/Text/Pandoc/Readers/RST.hs b/src/Text/Pandoc/Readers/RST.hs
index 2496d1823..5e7ea512e 100644
--- a/src/Text/Pandoc/Readers/RST.hs
+++ b/src/Text/Pandoc/Readers/RST.hs
@@ -1,5 +1,5 @@
{-
-Copyright (C) 2006-8 John MacFarlane <jgm@berkeley.edu>
+Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
{- |
Module : Text.Pandoc.Readers.RST
- Copyright : Copyright (C) 2006-8 John MacFarlane
+ Copyright : Copyright (C) 2006-2010 John MacFarlane
License : GNU GPL, version 2 or above
Maintainer : John MacFarlane <jgm@berkeley.edu>
@@ -556,7 +556,7 @@ targetURI = do
contents <- many1 (try (many spaceChar >> newline >>
many1 spaceChar >> noneOf " \t\n") <|> noneOf "\n")
blanklines
- return contents
+ return $ escapeURI $ removeLeadingTrailingSpace $ contents
imageKey :: GenParser Char ParserState ([Inline], (String, [Char]))
imageKey = try $ do
@@ -565,13 +565,13 @@ imageKey = try $ do
skipSpaces
string "image::"
src <- targetURI
- return (normalizeSpaces ref, (removeLeadingTrailingSpace src, ""))
+ return (normalizeSpaces ref, (src, ""))
anonymousKey :: GenParser Char st ([Inline], (String, [Char]))
anonymousKey = try $ do
oneOfStrings [".. __:", "__"]
src <- targetURI
- return ([Str "_"], (removeLeadingTrailingSpace src, ""))
+ return ([Str "_"], (src, ""))
regularKey :: GenParser Char ParserState ([Inline], (String, [Char]))
regularKey = try $ do
@@ -579,7 +579,7 @@ regularKey = try $ do
ref <- referenceName
char ':'
src <- targetURI
- return (normalizeSpaces ref, (removeLeadingTrailingSpace src, ""))
+ return (normalizeSpaces ref, (src, ""))
--
-- tables
@@ -883,7 +883,8 @@ explicitLink = try $ do
src <- manyTill (noneOf ">\n") (char '>')
skipSpaces
string "`_"
- return $ Link (normalizeSpaces label') (removeLeadingTrailingSpace src, "")
+ return $ Link (normalizeSpaces label')
+ (escapeURI $ removeLeadingTrailingSpace src, "")
referenceLink :: GenParser Char ParserState Inline
referenceLink = try $ do
@@ -891,25 +892,25 @@ referenceLink = try $ do
key <- option label' (do{char '_'; return [Str "_"]}) -- anonymous link
state <- getState
let keyTable = stateKeys state
- src <- case lookupKeySrc keyTable key of
- Nothing -> fail "no corresponding key"
- Just target -> return target
+ (src,tit) <- case lookupKeySrc keyTable key of
+ Nothing -> fail "no corresponding key"
+ Just target -> return target
-- if anonymous link, remove first anon key so it won't be used again
let keyTable' = if (key == [Str "_"]) -- anonymous link?
- then delete ([Str "_"], src) keyTable -- remove first anon key
+ then delete ([Str "_"], (src,tit)) keyTable -- remove first anon key
else keyTable
setState $ state { stateKeys = keyTable' }
- return $ Link (normalizeSpaces label') src
+ return $ Link (normalizeSpaces label') (src, tit)
autoURI :: GenParser Char ParserState Inline
autoURI = do
- src <- uri
- return $ Link [Str src] (src, "")
+ (orig, src) <- uri
+ return $ Link [Str orig] (src, "")
autoEmail :: GenParser Char ParserState Inline
autoEmail = do
- src <- emailAddress
- return $ Link [Str src] ("mailto:" ++ src, "")
+ (orig, src) <- emailAddress
+ return $ Link [Str orig] (src, "")
autoLink :: GenParser Char ParserState Inline
autoLink = autoURI <|> autoEmail
@@ -921,7 +922,7 @@ image = try $ do
ref <- manyTill inline (char '|')
state <- getState
let keyTable = stateKeys state
- src <- case lookupKeySrc keyTable ref of
- Nothing -> fail "no corresponding key"
- Just target -> return target
- return $ Image (normalizeSpaces ref) src
+ (src,tit) <- case lookupKeySrc keyTable ref of
+ Nothing -> fail "no corresponding key"
+ Just target -> return target
+ return $ Image (normalizeSpaces ref) (src, tit)