From 264e366f1a973efa56fc32079927fc51cc1936ca Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 30 Jun 2014 14:03:47 -0700 Subject: Filters: respect shebang if filter is executable. Closes #1389. --- pandoc.hs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'pandoc.hs') diff --git a/pandoc.hs b/pandoc.hs index 6281113cb..bf5f387dd 100644 --- a/pandoc.hs +++ b/pandoc.hs @@ -49,7 +49,7 @@ import System.Console.GetOpt import Data.Char ( toLower ) import Data.List ( intercalate, isPrefixOf, isSuffixOf, sort ) import System.Directory ( getAppUserDataDirectory, findExecutable, - doesFileExist ) + doesFileExist, Permissions(..), getPermissions ) import System.IO ( stdout, stderr ) import System.IO.Error ( isDoesNotExistError ) import qualified Control.Exception as E @@ -104,8 +104,12 @@ externalFilter f args' d = do Nothing -> do exists <- doesFileExist f if exists - then return $ + then do + isExecutable <- executable `fmap` + getPermissions f + return $ case map toLower $ takeExtension f of + _ | isExecutable -> (f, args') ".py" -> ("python", f:args') ".hs" -> ("runhaskell", f:args') ".pl" -> ("perl", f:args') -- cgit v1.2.3