@@ -30,13 +30,15 @@ module Text.Pandoc.Readers.Org.Inlines
3030 ( inline
3131 , inlines
3232 , addToNotesTable
33− , isImageFilename
3433 , linkTarget
3534 ) where
3635
3736import Text.Pandoc.Readers.Org.BlockStarts
3837import Text.Pandoc.Readers.Org.ParserState
3938import Text.Pandoc.Readers.Org.Parsing
39+import Text.Pandoc.Readers.Org.Shared
40+ ( isImageFilename, rundocBlockClass, toRundocAttrib
41+ , translateLang )
4042
4143import qualified Text.Pandoc.Builder as B
4244import Text.Pandoc.Builder ( Inlines )
@@ -47,35 +49,12 @@ import Text.Pandoc.Readers.LaTeX ( inlineCommand, rawLaTeXInline )
4749import Text.TeXMath ( readTeX, writePandoc, DisplayType(..) )
4850import qualified Text.TeXMath.Readers.MathML.EntityMap as MathMLEntityMap
4951
50−import Control.Arrow ( first )
5152import Control.Monad ( guard, mplus, mzero, when )
5253import Data.Char ( isAlphaNum, isSpace )
53−import Data.List ( isPrefixOf, isSuffixOf )
54+import Data.List ( isPrefixOf )
5455import Data.Maybe ( fromMaybe )
5556import qualified Data.Map as M
5657
57−-- | Prefix used for Rundoc classes and arguments.
58−rundocPrefix :: String
59−rundocPrefix = "rundoc-"
60−
61−-- | The class-name used to mark rundoc blocks.
62−rundocBlockClass :: String
63−rundocBlockClass = rundocPrefix ++ "block"
64−
65−toRundocAttrib :: (String, String) -> (String, String)
66−toRundocAttrib = first ("rundoc-" ++)
67−
68−translateLang :: String -> String
69−translateLang "C" = "c"
70−translateLang "C++" = "cpp"
71−translateLang "emacs-lisp" = "commonlisp" -- emacs lisp is not supported
72−translateLang "js" = "javascript"
73−translateLang "lisp" = "commonlisp"
74−translateLang "R" = "r"
75−translateLang "sh" = "bash"
76−translateLang "sqlite" = "sql"
77−translateLang cs = cs
78−
7958--
8059-- Functions acting on the parser state
8160--
@@ -405,15 +384,6 @@ cleanLinkString s =
405384 in all (\c -> isAlphaNum c || c `elem` (".-"::String)) scheme
406385 && not (null path)
407386
408−isImageFilename :: String -> Bool
409−isImageFilename filename =
410− any (\x -> ('.':x) `isSuffixOf` filename) imageExtensions &&
411− (any (\x -> (x++":") `isPrefixOf` filename) protocols ||
412− ':' `notElem` filename)
413− where
414− imageExtensions = [ "jpeg" , "jpg" , "png" , "gif" , "svg" ]
415− protocols = [ "file", "http", "https" ]
416−
417387internalLink :: String -> Inlines -> F Inlines
418388internalLink link title = do
419389 anchorB <- (link `elem`) <$> asksF orgStateAnchorIds