aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/Org/Blocks.hs
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2016-06-03 09:39:32 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2016-06-03 09:39:32 -0700
commit2b2769975fea76337a5afd9e985a4de43c7276a0 (patch)
tree1657d1b7920d2854fe3623500bc448323319996d /src/Text/Pandoc/Readers/Org/Blocks.hs
parent9eb3dba243cf88e6e4d852161a308e815ef626d7 (diff)
parentf56792927fbcebfd25593c488476fee69d078b48 (diff)
downloadpandoc-2b2769975fea76337a5afd9e985a4de43c7276a0.tar.gz
Merge pull request #2962 from tarleb/org-more-export-settings
Org reader: support more export settings
Diffstat (limited to 'src/Text/Pandoc/Readers/Org/Blocks.hs')
-rw-r--r--src/Text/Pandoc/Readers/Org/Blocks.hs41
1 files changed, 11 insertions, 30 deletions
diff --git a/src/Text/Pandoc/Readers/Org/Blocks.hs b/src/Text/Pandoc/Readers/Org/Blocks.hs
index 36645a356..75e564f2f 100644
--- a/src/Text/Pandoc/Readers/Org/Blocks.hs
+++ b/src/Text/Pandoc/Readers/Org/Blocks.hs
@@ -35,6 +35,9 @@ import Text.Pandoc.Readers.Org.BlockStarts
import Text.Pandoc.Readers.Org.Inlines
import Text.Pandoc.Readers.Org.ParserState
import Text.Pandoc.Readers.Org.Parsing
+import Text.Pandoc.Readers.Org.Shared
+ ( isImageFilename, rundocBlockClass, toRundocAttrib
+ , translateLang )
import qualified Text.Pandoc.Builder as B
import Text.Pandoc.Builder ( Inlines, Blocks )
@@ -43,7 +46,6 @@ import Text.Pandoc.Compat.Monoid ((<>))
import Text.Pandoc.Options
import Text.Pandoc.Shared ( compactify', compactify'DL )
-import Control.Arrow ( first )
import Control.Monad ( foldM, guard, mzero )
import Data.Char ( isSpace, toLower, toUpper)
import Data.List ( foldl', intersperse, isPrefixOf )
@@ -67,7 +69,7 @@ blockList = do
meta :: OrgParser Meta
meta = do
st <- getState
- return $ runF (orgStateMeta' st) st
+ return $ runF (orgStateMeta st) st
blocks :: OrgParser (F Blocks)
blocks = mconcat <$> manyTill block eof
@@ -314,7 +316,6 @@ codeHeaderArgs = try $ do
else ([ pandocLang ], parameters)
where
hasRundocParameters = not . null
- toRundocAttrib = first ("rundoc-" ++)
switch :: OrgParser (Char, Maybe String)
switch = try $ simpleSwitch <|> lineNumbersSwitch
@@ -323,25 +324,6 @@ switch = try $ simpleSwitch <|> lineNumbersSwitch
lineNumbersSwitch = (\ls -> ('l', Just ls)) <$>
(string "-l \"" *> many1Till nonspaceChar (char '"'))
-translateLang :: String -> String
-translateLang "C" = "c"
-translateLang "C++" = "cpp"
-translateLang "emacs-lisp" = "commonlisp" -- emacs lisp is not supported
-translateLang "js" = "javascript"
-translateLang "lisp" = "commonlisp"
-translateLang "R" = "r"
-translateLang "sh" = "bash"
-translateLang "sqlite" = "sql"
-translateLang cs = cs
-
--- | Prefix used for Rundoc classes and arguments.
-rundocPrefix :: String
-rundocPrefix = "rundoc-"
-
--- | The class-name used to mark rundoc blocks.
-rundocBlockClass :: String
-rundocBlockClass = rundocPrefix ++ "block"
-
blockOption :: OrgParser (String, String)
blockOption = try $ do
argKey <- orgArgKey
@@ -480,12 +462,11 @@ commentLine = commentLineStart *> anyLine *> pure mempty
declarationLine :: OrgParser ()
declarationLine = try $ do
- key <- metaKey
- inlinesF <- metaInlines
+ key <- metaKey
+ value <- metaInlines
updateState $ \st ->
- let meta' = B.setMeta <$> pure key <*> inlinesF <*> pure nullMeta
- in st { orgStateMeta' = orgStateMeta' st <> meta' }
- return ()
+ let meta' = B.setMeta key <$> value <*> pure nullMeta
+ in st { orgStateMeta = orgStateMeta st <> meta' }
metaInlines :: OrgParser (F MetaValue)
metaInlines = fmap (MetaInlines . B.toList) <$> inlinesTillNewline
@@ -519,9 +500,9 @@ addLinkFormat key formatter = updateState $ \s ->
exportSetting :: OrgParser ()
exportSetting = choice
[ booleanSetting "^" setExportSubSuperscripts
- , ignoredSetting "'"
- , ignoredSetting "*"
- , ignoredSetting "-"
+ , booleanSetting "'" setExportSmartQuotes
+ , booleanSetting "*" setExportEmphasizedText
+ , booleanSetting "-" setExportSpecialStrings
, ignoredSetting ":"
, ignoredSetting "<"
, ignoredSetting "\\n"