git.iko.soy/typeable/pandoc
on master help sign in
Better heuristics for guessing reader to use.
d704f47fiddlosopher
src/pandoc.hs+9−6
@@ -60,7 +60,7 @@ import Text.Pandoc.Biblio
60#endif
60#endif
61import Control.Monad (when, unless, liftM)
61import Control.Monad (when, unless, liftM)
62import Network.HTTP (simpleHTTP, mkRequest, getResponseBody, RequestMethod(..))
62import Network.HTTP (simpleHTTP, mkRequest, getResponseBody, RequestMethod(..))
63−import Network.URI (parseURI)
63+import Network.URI (parseURI, isURI)
64import Data.ByteString.Lazy.UTF8 (toString)
64import Data.ByteString.Lazy.UTF8 (toString)
65
65
66copyrightMessage :: String
66copyrightMessage :: String
@@ -536,9 +536,9 @@ usageMessage programName = usageInfo
536 (intercalate ", " $ map fst writers) ++ "\nOptions:")
536 (intercalate ", " $ map fst writers) ++ "\nOptions:")
537
537
538-- Determine default reader based on source file extensions
538-- Determine default reader based on source file extensions
539−defaultReaderName :: [FilePath] -> String
539+defaultReaderName :: String -> [FilePath] -> String
540−defaultReaderName [] = "markdown"
540+defaultReaderName fallback [] = fallback
541−defaultReaderName (x:xs) =
541+defaultReaderName fallback (x:xs) =
542 case takeExtension (map toLower x) of
542 case takeExtension (map toLower x) of
543 ".xhtml" -> "html"
543 ".xhtml" -> "html"
544 ".html" -> "html"
544 ".html" -> "html"
@@ -549,7 +549,7 @@ defaultReaderName (x:xs) =
549 ".rst" -> "rst"
549 ".rst" -> "rst"
550 ".lhs" -> "markdown+lhs"
550 ".lhs" -> "markdown+lhs"
551 ".native" -> "native"
551 ".native" -> "native"
552− _ -> defaultReaderName xs
552+ _ -> defaultReaderName fallback xs
553
553
554-- Returns True if extension of first source is .lhs
554-- Returns True if extension of first source is .lhs
555lhsExtension :: [FilePath] -> Bool
555lhsExtension :: [FilePath] -> Bool
@@ -667,7 +667,10 @@ main = do
667
667
668 -- assign reader and writer based on options and filenames
668 -- assign reader and writer based on options and filenames
669 let readerName' = if null readerName
669 let readerName' = if null readerName
670+ then let fallback = if any isURI sources
671+ then "html"
672+ else "markdown"
670− then defaultReaderName sources
673+ in defaultReaderName fallback sources
671 else readerName
674 else readerName
672
675
673 let writerName' = if null writerName
676 let writerName' = if null writerName