git.iko.soy/typeable/pandoc
on master help sign in
Removed --parse-raw and readerParseRaw.
47a1606John MacFarlane
MANUAL.txt−11
@@ -391,17 +391,6 @@ General options
391Reader options
391Reader options
392--------------
392--------------
393
393
394−`-R`, `--parse-raw`
395−
396−: Parse untranslatable HTML codes and LaTeX environments as raw HTML
397− or LaTeX, instead of ignoring them. Affects only HTML and LaTeX
398− input. Raw HTML can be printed in Markdown, reStructuredText, Emacs Org
399− mode, HTML, Slidy, Slideous, DZSlides, reveal.js, and S5 output; raw LaTeX
400− can be printed in Markdown, reStructuredText, Emacs Org mode, LaTeX, and
401− ConTeXt output. The default is for the readers to omit untranslatable
402− HTML codes and LaTeX environments. (The LaTeX reader does pass through
403− untranslatable LaTeX *commands*, even if `-R` is not specified.)
404−
405`--base-header-level=`*NUMBER*
394`--base-header-level=`*NUMBER*
406
395
407: Specify the base level for headers (defaults to 1).
396: Specify the base level for headers (defaults to 1).
src/Text/Pandoc.hs+1
@@ -336,6 +336,7 @@ getDefaultExtensions "context" = extensionsFromList
336getDefaultExtensions "textile" = extensionsFromList
336getDefaultExtensions "textile" = extensionsFromList
337 [Ext_old_dashes,
337 [Ext_old_dashes,
338 Ext_smart,
338 Ext_smart,
339+ Ext_raw_html,
339 Ext_auto_identifiers]
340 Ext_auto_identifiers]
340getDefaultExtensions _ = extensionsFromList
341getDefaultExtensions _ = extensionsFromList
341 [Ext_auto_identifiers]
342 [Ext_auto_identifiers]
src/Text/Pandoc/App.hs+14−19
@@ -90,7 +90,7 @@ parseOptions options' defaults = do
90 let (actions, args, unrecognizedOpts, errors) =
90 let (actions, args, unrecognizedOpts, errors) =
91 getOpt' Permute options' rawArgs
91 getOpt' Permute options' rawArgs
92
92
93− let unknownOptionErrors = foldr handelUnrecognizedOption [] unrecognizedOpts
93+ let unknownOptionErrors = foldr handleUnrecognizedOption [] unrecognizedOpts
94
94
95 unless (null errors && null unknownOptionErrors) $
95 unless (null errors && null unknownOptionErrors) $
96 err 2 $ concat errors ++ unlines unknownOptionErrors ++
96 err 2 $ concat errors ++ unlines unknownOptionErrors ++
@@ -273,7 +273,6 @@ convertWithOpts opts = do
273 _ -> Nothing
273 _ -> Nothing
274
274
275 let readerOpts = def{ readerStandalone = standalone
275 let readerOpts = def{ readerStandalone = standalone
276− , readerParseRaw = optParseRaw opts
277 , readerColumns = optColumns opts
276 , readerColumns = optColumns opts
278 , readerTabStop = optTabStop opts
277 , readerTabStop = optTabStop opts
279 , readerIndentedCodeClasses = optIndentedCodeClasses opts
278 , readerIndentedCodeClasses = optIndentedCodeClasses opts
@@ -463,7 +462,6 @@ data Opt = Opt
463 , optStandalone :: Bool -- ^ Include header, footer
462 , optStandalone :: Bool -- ^ Include header, footer
464 , optReader :: Maybe String -- ^ Reader format
463 , optReader :: Maybe String -- ^ Reader format
465 , optWriter :: Maybe String -- ^ Writer format
464 , optWriter :: Maybe String -- ^ Writer format
466− , optParseRaw :: Bool -- ^ Parse unconvertable HTML and TeX
467 , optTableOfContents :: Bool -- ^ Include table of contents
465 , optTableOfContents :: Bool -- ^ Include table of contents
468 , optBaseHeaderLevel :: Int -- ^ Base header level
466 , optBaseHeaderLevel :: Int -- ^ Base header level
469 , optTemplate :: Maybe FilePath -- ^ Custom template
467 , optTemplate :: Maybe FilePath -- ^ Custom template
@@ -529,7 +527,6 @@ defaultOpts = Opt
529 , optStandalone = False
527 , optStandalone = False
530 , optReader = Nothing
528 , optReader = Nothing
531 , optWriter = Nothing
529 , optWriter = Nothing
532− , optParseRaw = False
533 , optTableOfContents = False
530 , optTableOfContents = False
534 , optBaseHeaderLevel = 1
531 , optBaseHeaderLevel = 1
535 , optTemplate = Nothing
532 , optTemplate = Nothing
@@ -777,11 +774,6 @@ options =
777 "DIRECTORY") -- "Directory containing pandoc data files."
774 "DIRECTORY") -- "Directory containing pandoc data files."
778 ""
775 ""
779
776
780− , Option "R" ["parse-raw"]
781− (NoArg
782− (\opt -> return opt { optParseRaw = True }))
783− "" -- "Parse untranslatable HTML codes and LaTeX environments as raw"
784−
785 , Option "" ["base-header-level"]
777 , Option "" ["base-header-level"]
786 (ReqArg
778 (ReqArg
787 (\arg opt ->
779 (\arg opt ->
@@ -1403,22 +1395,25 @@ compileInfo =
1403 "\nCompiled with pandoc-types " ++ VERSION_pandoc_types ++ ", texmath " ++
1395 "\nCompiled with pandoc-types " ++ VERSION_pandoc_types ++ ", texmath " ++
1404 VERSION_texmath ++ ", skylighting " ++ VERSION_skylighting
1396 VERSION_texmath ++ ", skylighting " ++ VERSION_skylighting
1405
1397
1406−handelUnrecognizedOption :: String -> [String] -> [String]
1398+handleUnrecognizedOption :: String -> [String] -> [String]
1407−handelUnrecognizedOption "--smart" =
1399+handleUnrecognizedOption "--smart" =
1408− (("--smart has been removed. Use +smart or -smart extension instead.\n" ++
1400+ (("--smart/-S has been removed. Use +smart or -smart extension instead.\n" ++
1409 "For example: pandoc -f markdown+smart -t markdown-smart.") :)
1401 "For example: pandoc -f markdown+smart -t markdown-smart.") :)
1410−handelUnrecognizedOption "-S" = handelUnrecognizedOption "--smart"
1402+handleUnrecognizedOption "-S" = handleUnrecognizedOption "--smart"
1411−handelUnrecognizedOption "--old-dashes" =
1403+handleUnrecognizedOption "--old-dashes" =
1412 ("--old-dashes has been removed. Use +old_dashes extension instead." :)
1404 ("--old-dashes has been removed. Use +old_dashes extension instead." :)
1413−handelUnrecognizedOption "--no-wrap" =
1405+handleUnrecognizedOption "--no-wrap" =
1414 ("--no-wrap has been removed. Use --wrap=none instead." :)
1406 ("--no-wrap has been removed. Use --wrap=none instead." :)
1415−handelUnrecognizedOption "--chapters" =
1407+handleUnrecognizedOption "--chapters" =
1416 ("--chapters has been removed. Use --top-level-division=chapter instead." :)
1408 ("--chapters has been removed. Use --top-level-division=chapter instead." :)
1417−handelUnrecognizedOption "--reference-docx" =
1409+handleUnrecognizedOption "--reference-docx" =
1418 ("--reference-docx has been removed. Use --reference-doc instead." :)
1410 ("--reference-docx has been removed. Use --reference-doc instead." :)
1419−handelUnrecognizedOption "--reference-odt" =
1411+handleUnrecognizedOption "--reference-odt" =
1420 ("--reference-odt has been removed. Use --reference-doc instead." :)
1412 ("--reference-odt has been removed. Use --reference-doc instead." :)
1421−handelUnrecognizedOption x =
1413+handleUnrecognizedOption "--parse-raw" =
1414+ (("--parse-raw/-R has been removed. Use +raw_html or +raw_tex extension.\n") :)
1415+handleUnrecognizedOption "-R" = handleUnrecognizedOption "--parse-raw"
1416+handleUnrecognizedOption x =
1422 (("Unknown option " ++ x ++ ".") :)
1417 (("Unknown option " ++ x ++ ".") :)
1423
1418
1424uppercaseFirstLetter :: String -> String
1419uppercaseFirstLetter :: String -> String
src/Text/Pandoc/Options.hs−2
@@ -55,7 +55,6 @@ import GHC.Generics (Generic)
55data ReaderOptions = ReaderOptions{
55data ReaderOptions = ReaderOptions{
56 readerExtensions :: Extensions -- ^ Syntax extensions
56 readerExtensions :: Extensions -- ^ Syntax extensions
57 , readerStandalone :: Bool -- ^ Standalone document with header
57 , readerStandalone :: Bool -- ^ Standalone document with header
58− , readerParseRaw :: Bool -- ^ Parse raw HTML, LaTeX
59 , readerColumns :: Int -- ^ Number of columns in terminal
58 , readerColumns :: Int -- ^ Number of columns in terminal
60 , readerTabStop :: Int -- ^ Tab stop
59 , readerTabStop :: Int -- ^ Tab stop
61 , readerApplyMacros :: Bool -- ^ Apply macros to TeX math
60 , readerApplyMacros :: Bool -- ^ Apply macros to TeX math
@@ -69,7 +68,6 @@ instance Default ReaderOptions
69 where def = ReaderOptions{
68 where def = ReaderOptions{
70 readerExtensions = emptyExtensions
69 readerExtensions = emptyExtensions
71 , readerStandalone = False
70 , readerStandalone = False
72− , readerParseRaw = False
73 , readerColumns = 80
71 , readerColumns = 80
74 , readerTabStop = 4
72 , readerTabStop = 4
75 , readerApplyMacros = True
73 , readerApplyMacros = True
src/Text/Pandoc/Readers/EPUB.hs+2−1
@@ -13,6 +13,7 @@ import Text.Pandoc.Definition hiding (Attr)
13import Text.Pandoc.Readers.HTML (readHtml)
13import Text.Pandoc.Readers.HTML (readHtml)
14import Text.Pandoc.Walk (walk, query)
14import Text.Pandoc.Walk (walk, query)
15import Text.Pandoc.Options ( ReaderOptions(..), Verbosity(..))
15import Text.Pandoc.Options ( ReaderOptions(..), Verbosity(..))
16+import Text.Pandoc.Extensions (enableExtension, Extension(Ext_raw_html))
16import Text.Pandoc.Shared (escapeURI, collapseFilePath, addMetaField)
17import Text.Pandoc.Shared (escapeURI, collapseFilePath, addMetaField)
17import Network.URI (unEscapeString)
18import Network.URI (unEscapeString)
18import Text.Pandoc.MediaBag (MediaBag, insertMedia)
19import Text.Pandoc.MediaBag (MediaBag, insertMedia)
@@ -66,7 +67,7 @@ archiveToEPUB os archive = do
66 P.setMediaBag $ fetchImages (M.elems items) root archive ast
67 P.setMediaBag $ fetchImages (M.elems items) root archive ast
67 return ast
68 return ast
68 where
69 where
69− os' = os {readerParseRaw = True}
70+ os' = os {readerExtensions = enableExtension Ext_raw_html (readerExtensions os)}
70 parseSpineElem :: PandocMonad m => FilePath -> (FilePath, MimeType) -> m Pandoc
71 parseSpineElem :: PandocMonad m => FilePath -> (FilePath, MimeType) -> m Pandoc
71 parseSpineElem (normalise -> r) (normalise -> path, mime) = do
72 parseSpineElem (normalise -> r) (normalise -> path, mime) = do
72 report DEBUG ("parseSpineElem called with path " ++ show path)
73 report DEBUG ("parseSpineElem called with path " ++ show path)
src/Text/Pandoc/Readers/HTML.hs+7−7
@@ -45,9 +45,9 @@ import qualified Text.Pandoc.Builder as B
45import Text.Pandoc.Builder (Blocks, Inlines, trimInlines, HasMeta(..))
45import Text.Pandoc.Builder (Blocks, Inlines, trimInlines, HasMeta(..))
46import Text.Pandoc.Shared ( extractSpaces, renderTags', addMetaField
46import Text.Pandoc.Shared ( extractSpaces, renderTags', addMetaField
47 , escapeURI, safeRead )
47 , escapeURI, safeRead )
48−import Text.Pandoc.Options (ReaderOptions(readerParseRaw),
48+import Text.Pandoc.Options (ReaderOptions(readerExtensions), extensionEnabled,
49− Verbosity(..), Extension (Ext_epub_html_exts,
49+ Verbosity(..), Extension (Ext_epub_html_exts,
50− Ext_native_divs, Ext_native_spans))
50+ Ext_raw_html, Ext_native_divs, Ext_native_spans))
51import Text.Pandoc.Parsing hiding ((<|>))
51import Text.Pandoc.Parsing hiding ((<|>))
52import Text.Pandoc.Walk
52import Text.Pandoc.Walk
53import qualified Data.Map as M
53import qualified Data.Map as M
@@ -367,8 +367,8 @@ pDiv = try $ do
367pRawHtmlBlock :: PandocMonad m => TagParser m Blocks
367pRawHtmlBlock :: PandocMonad m => TagParser m Blocks
368pRawHtmlBlock = do
368pRawHtmlBlock = do
369 raw <- pHtmlBlock "script" <|> pHtmlBlock "style" <|> pRawTag
369 raw <- pHtmlBlock "script" <|> pHtmlBlock "style" <|> pRawTag
370− parseRaw <- getOption readerParseRaw
370+ exts <- getOption readerExtensions
371− if parseRaw && not (null raw)
371+ if extensionEnabled Ext_raw_html exts && not (null raw)
372 then return $ B.rawBlock "html" raw
372 then return $ B.rawBlock "html" raw
373 else return mempty
373 else return mempty
374
374
@@ -690,8 +690,8 @@ pRawHtmlInline = do
690 <|> if inplain
690 <|> if inplain
691 then pSatisfy (not . isBlockTag)
691 then pSatisfy (not . isBlockTag)
692 else pSatisfy isInlineTag
692 else pSatisfy isInlineTag
693− parseRaw <- getOption readerParseRaw
693+ exts <- getOption readerExtensions
694− if parseRaw
694+ if extensionEnabled Ext_raw_html exts
695 then return $ B.rawInline "html" $ renderTags' [result]
695 then return $ B.rawInline "html" $ renderTags' [result]
696 else return mempty
696 else return mempty
697
697
src/Text/Pandoc/Readers/LaTeX.hs+12−7
@@ -303,14 +303,18 @@ ignoreInlines name = (name, doraw <|> (mempty <$ optargs))
303 where optargs = skipopts *> skipMany (try $ optional sp *> braced)
303 where optargs = skipopts *> skipMany (try $ optional sp *> braced)
304 contseq = '\\':name
304 contseq = '\\':name
305 doraw = (rawInline "latex" . (contseq ++) . snd) <$>
305 doraw = (rawInline "latex" . (contseq ++) . snd) <$>
306+ (do exts <- getOption readerExtensions
307+ guard $ extensionEnabled Ext_raw_tex exts
306− (getOption readerParseRaw >>= guard >> withRaw optargs)
308+ withRaw optargs)
307
309
308ignoreBlocks :: PandocMonad m => String -> (String, LP m Blocks)
310ignoreBlocks :: PandocMonad m => String -> (String, LP m Blocks)
309ignoreBlocks name = (name, doraw <|> (mempty <$ optargs))
311ignoreBlocks name = (name, doraw <|> (mempty <$ optargs))
310 where optargs = skipopts *> skipMany (try $ optional sp *> braced)
312 where optargs = skipopts *> skipMany (try $ optional sp *> braced)
311 contseq = '\\':name
313 contseq = '\\':name
312 doraw = (rawBlock "latex" . (contseq ++) . snd) <$>
314 doraw = (rawBlock "latex" . (contseq ++) . snd) <$>
315+ (do exts <- getOption readerExtensions
316+ guard $ extensionEnabled Ext_raw_tex exts
313− (getOption readerParseRaw >>= guard >> withRaw optargs)
317+ withRaw optargs)
314
318
315blockCommands :: PandocMonad m => M.Map String (LP m Blocks)
319blockCommands :: PandocMonad m => M.Map String (LP m Blocks)
316blockCommands = M.fromList $
320blockCommands = M.fromList $
@@ -423,7 +427,7 @@ inlineCommand = try $ do
423 name <- anyControlSeq
427 name <- anyControlSeq
424 guard $ name /= "begin" && name /= "end"
428 guard $ name /= "begin" && name /= "end"
425 guard $ not $ isBlockCommand name
429 guard $ not $ isBlockCommand name
426− parseRaw <- getOption readerParseRaw
430+ exts <- getOption readerExtensions
427 star <- option "" (string "*")
431 star <- option "" (string "*")
428 let name' = name ++ star
432 let name' = name ++ star
429 let raw = do
433 let raw = do
@@ -433,7 +437,7 @@ inlineCommand = try $ do
433 transformed <- applyMacros' rawcommand
437 transformed <- applyMacros' rawcommand
434 if transformed /= rawcommand
438 if transformed /= rawcommand
435 then parseFromString inlines transformed
439 then parseFromString inlines transformed
436− else if parseRaw
440+ else if extensionEnabled Ext_raw_tex exts
437 then return $ rawInline "latex" rawcommand
441 then return $ rawInline "latex" rawcommand
438 else return mempty
442 else return mempty
439 (lookupListDefault mzero [name',name] inlineCommands <*
443 (lookupListDefault mzero [name',name] inlineCommands <*
@@ -441,7 +445,8 @@ inlineCommand = try $ do
441 <|> raw
445 <|> raw
442
446
443unlessParseRaw :: PandocMonad m => LP m ()
447unlessParseRaw :: PandocMonad m => LP m ()
444−unlessParseRaw = getOption readerParseRaw >>= guard . not
448+unlessParseRaw = getOption readerExtensions >>=
449+ guard . not . extensionEnabled Ext_raw_tex
445
450
446isBlockCommand :: String -> Bool
451isBlockCommand :: String -> Bool
447isBlockCommand s = s `M.member` (blockCommands :: M.Map String (LP PandocPure Blocks))
452isBlockCommand s = s `M.member` (blockCommands :: M.Map String (LP PandocPure Blocks))
@@ -923,10 +928,10 @@ inlineEnvironment = try $ do
923
928
924rawEnv :: PandocMonad m => String -> LP m Blocks
929rawEnv :: PandocMonad m => String -> LP m Blocks
925rawEnv name = do
930rawEnv name = do
926− parseRaw <- getOption readerParseRaw
931+ exts <- getOption readerExtensions
927 rawOptions <- mconcat <$> many rawopt
932 rawOptions <- mconcat <$> many rawopt
928 let addBegin x = "\\begin{" ++ name ++ "}" ++ rawOptions ++ x
933 let addBegin x = "\\begin{" ++ name ++ "}" ++ rawOptions ++ x
929− if parseRaw
934+ if extensionEnabled Ext_raw_tex exts
930 then (rawBlock "latex" . addBegin) <$>
935 then (rawBlock "latex" . addBegin) <$>
931 (withRaw (env name blocks) >>= applyMacros' . snd)
936 (withRaw (env name blocks) >>= applyMacros' . snd)
932 else env name blocks
937 else env name blocks
src/Text/Pandoc/Readers/Markdown.hs−4
@@ -359,10 +359,6 @@ kvPair allowEmpty = try $ do
359
359
360parseMarkdown :: PandocMonad m => MarkdownParser m Pandoc
360parseMarkdown :: PandocMonad m => MarkdownParser m Pandoc
361parseMarkdown = do
361parseMarkdown = do
362− -- markdown allows raw HTML
363− updateState $ \state -> state { stateOptions =
364− let oldOpts = stateOptions state in
365− oldOpts{ readerParseRaw = True } }
366 optional titleBlock
362 optional titleBlock
367 blocks <- parseBlocks
363 blocks <- parseBlocks
368 st <- getState
364 st <- getState
src/Text/Pandoc/Readers/Org/Inlines.hs+2−1
@@ -806,7 +806,8 @@ inlineLaTeX = try $ do
806 where clean = dropWhileEnd (`elem` ("{}" :: String)) . drop 1
806 where clean = dropWhileEnd (`elem` ("{}" :: String)) . drop 1
807
807
808 state :: ParserState
808 state :: ParserState
809− state = def{ stateOptions = def{ readerParseRaw = True }}
809+ state = def{ stateOptions = def{ readerExtensions =
810+ enableExtension Ext_raw_tex (readerExtensions def) } }
810
811
811 texMathToPandoc :: String -> Maybe [Inline]
812 texMathToPandoc :: String -> Maybe [Inline]
812 texMathToPandoc cs = (maybeRight $ readTeX cs) >>= writePandoc DisplayInline
813 texMathToPandoc cs = (maybeRight $ readTeX cs) >>= writePandoc DisplayInline
src/Text/Pandoc/Readers/Textile.hs−6
@@ -85,12 +85,6 @@ readTextile opts s = do
85-- | Generate a Pandoc ADT from a textile document
85-- | Generate a Pandoc ADT from a textile document
86parseTextile :: PandocMonad m => ParserT [Char] ParserState m Pandoc
86parseTextile :: PandocMonad m => ParserT [Char] ParserState m Pandoc
87parseTextile = do
87parseTextile = do
88− -- textile allows raw HTML and does smart punctuation by default,
89− -- but we do not enable smart punctuation unless it is explicitly
90− -- asked for, for better conversion to other light markup formats
91− oldOpts <- stateOptions `fmap` getState
92− updateState $ \state -> state{ stateOptions =
93− oldOpts{ readerParseRaw = True } }
94 many blankline
88 many blankline
95 startPos <- getPosition
89 startPos <- getPosition
96 -- go through once just to get list of reference keys and notes
90 -- go through once just to get list of reference keys and notes
test/Tests/Old.hs+1−1
@@ -46,7 +46,7 @@ tests = [ testGroup "markdown"
46 , testGroup "latex"
46 , testGroup "latex"
47 [ testGroup "writer" (writerTests "latex" ++ lhsWriterTests "latex")
47 [ testGroup "writer" (writerTests "latex" ++ lhsWriterTests "latex")
48 , testGroup "reader"
48 , testGroup "reader"
49− [ test "basic" ["-r", "latex", "-w", "native", "-s", "-R"]
49+ [ test "basic" ["-r", "latex+raw_tex", "-w", "native", "-s"]
50 "latex-reader.latex" "latex-reader.native"
50 "latex-reader.latex" "latex-reader.native"
51 , lhsReaderTest "latex+lhs"
51 , lhsReaderTest "latex+lhs"
52 ]
52 ]
test/command/parse-raw.mdnew file+27
@@ -0,0 +1,27 @@
1+```
2+% pandoc -f latex+raw_tex -t markdown
3+\emph{Hi \foo{there}}
4+^D
5+*Hi \foo{there}*
6+```
7+
8+```
9+% pandoc -f latex -t markdown
10+\emph{Hi \foo{there}}
11+^D
12+*Hi*
13+```
14+
15+```
16+% pandoc -f html+raw_html -t markdown
17+<em>Hi <blink>there</blink></em>
18+^D
19+*Hi <blink>there</blink>*
20+```
21+
22+```
23+% pandoc -f html -t markdown
24+<em>Hi <blink>there</blink></em>
25+^D
26+*Hi there*
27+```