From 31c030e3a55c3bc9d4a606e9658dd30a9aa1c938 Mon Sep 17 00:00:00 2001 From: fiddlosopher Date: Sat, 3 Mar 2007 18:19:31 +0000 Subject: Added --inline-links option to force links in HTML to be parsed as inline links, rather than reference links. (Addresses Issue #4.) git-svn-id: https://pandoc.googlecode.com/svn/trunk@554 788f1e2b-df1e-0410-8736-df70ead52e1b --- src/Main.hs | 21 +++++++++++++++------ src/Text/Pandoc/Readers/HTML.hs | 9 ++++++--- src/Text/Pandoc/Shared.hs | 2 ++ 3 files changed, 23 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/Main.hs b/src/Main.hs index 275a89f0d..0bb246fa5 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -118,6 +118,7 @@ data Opt = Opt , optDumpArgs :: Bool -- ^ Output command-line arguments , optIgnoreArgs :: Bool -- ^ Ignore command-line arguments , optStrict :: Bool -- ^ Use strict markdown syntax + , optInlineLinks :: Bool -- ^ Use inline links in parsing HTML } -- | Defaults for command-line options. @@ -143,6 +144,7 @@ defaultOpts = Opt , optDumpArgs = False , optIgnoreArgs = False , optStrict = False + , optInlineLinks = False } -- | A list of functions, each transforming the options data structure @@ -188,6 +190,11 @@ options = (\opt -> return opt { optStrict = True } )) "" -- "Use strict markdown syntax with no extensions" + , Option "" ["inline-links"] + (NoArg + (\opt -> return opt { optInlineLinks = True } )) + "" -- "Use inline links in parsing HTML" + , Option "R" ["parse-raw"] (NoArg (\opt -> return opt { optParseRaw = True })) @@ -398,6 +405,7 @@ main = do , optDumpArgs = dumpArgs , optIgnoreArgs = ignoreArgs , optStrict = strict + , optInlineLinks = inlineLinks } = opts if dumpArgs @@ -440,12 +448,13 @@ main = do let removeCRs str = filter (/= '\r') str -- remove DOS-style line endings let filter = tabFilter . addBlank . removeCRs let startParserState = - defaultParserState { stateParseRaw = parseRaw, - stateTabStop = tabStop, - stateStandalone = standalone && (not strict), - stateSmart = smart || writerName' == "latex", - stateColumns = columns, - stateStrict = strict } + defaultParserState { stateParseRaw = parseRaw, + stateTabStop = tabStop, + stateStandalone = standalone && (not strict), + stateSmart = smart || writerName' == "latex", + stateColumns = columns, + stateStrict = strict, + stateInlineLinks = inlineLinks } let csslink = if (css == "") then "" else " do {return url} Nothing -> fail "no href" let title = fromMaybe "" (extractAttribute "title" attributes) label <- inlinesTilEnd "a" - ref <- generateReference url title - return (Link (normalizeSpaces label) ref)) + state <- getState + ref <- if stateInlineLinks state + then return (Src url title) + else generateReference url title + return $ Link (normalizeSpaces label) ref image = try (do (tag, attributes) <- htmlTag "img" diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs index 87718030f..55e093ee7 100644 --- a/src/Text/Pandoc/Shared.hs +++ b/src/Text/Pandoc/Shared.hs @@ -133,6 +133,7 @@ data ParserState = ParserState stateSmart :: Bool, -- ^ Use smart typography stateColumns :: Int, -- ^ Number of columns in -- terminal (used for tables) + stateInlineLinks :: Bool, -- ^ Parse html links as inline stateHeaderTable :: [HeaderType] -- ^ List of header types used, -- in what order (rst only) } @@ -155,6 +156,7 @@ defaultParserState = stateStrict = False, stateSmart = False, stateColumns = 80, + stateInlineLinks = False, stateHeaderTable = [] } -- | Indent string as a block. -- cgit v1.2.3