From 675b15458a03371ef4d72d52218319a4cf09216d Mon Sep 17 00:00:00 2001 From: Artyom Kazak Date: Mon, 4 Aug 2014 18:08:12 +0400 Subject: Slightly fix readability of main program file. --- pandoc.hs | 89 +++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 37 deletions(-) diff --git a/pandoc.hs b/pandoc.hs index 48f4dee55..0c4543d7a 100644 --- a/pandoc.hs +++ b/pandoc.hs @@ -57,7 +57,8 @@ import System.IO.Error ( isDoesNotExistError ) import qualified Control.Exception as E import Control.Exception.Extensible ( throwIO ) import qualified Text.Pandoc.UTF8 as UTF8 -import Control.Monad (when, unless, liftM, (>=>)) +import Control.Monad (when, unless, (>=>)) +import Data.Maybe (isJust) import Data.Foldable (foldrM) import Network.URI (parseURI, isURI, URI(..)) import qualified Data.ByteString.Lazy as B @@ -74,10 +75,13 @@ import Data.Monoid type Transform = Pandoc -> Pandoc copyrightMessage :: String -copyrightMessage = "\nCopyright (C) 2006-2014 John MacFarlane\n" ++ - "Web: http://johnmacfarlane.net/pandoc\n" ++ - "This is free software; see the source for copying conditions. There is no\n" ++ - "warranty, not even for merchantability or fitness for a particular purpose." +copyrightMessage = unlines [ + "", + "Copyright (C) 2006-2014 John MacFarlane", + "Web: http://johnmacfarlane.net/pandoc", + "This is free software; see the source for copying conditions.", + "There is no warranty, not even for merchantability or fitness", + "for a particular purpose." ] compileInfo :: String compileInfo = @@ -91,15 +95,21 @@ compileInfo = -- comma separated words in lines with a maximum line length. wrapWords :: Int -> Int -> [String] -> String wrapWords indent c = wrap' (c - indent) (c - indent) - where wrap' _ _ [] = "" - wrap' cols remaining (x:xs) = if remaining == cols - then x ++ wrap' cols (remaining - length x) xs - else if (length x + 1) > remaining - then ",\n" ++ replicate indent ' ' ++ x ++ wrap' cols (cols - length x) xs - else ", " ++ x ++ wrap' cols (remaining - (length x + 2)) xs + where + wrap' _ _ [] = "" + wrap' cols remaining (x:xs) + | remaining == cols = + x ++ wrap' cols (remaining - length x) xs + | (length x + 1) > remaining = + ",\n" ++ replicate indent ' ' ++ x ++ + wrap' cols (cols - length x) xs + | otherwise = + ", " ++ x ++ + wrap' cols (remaining - length x - 2) xs isTextFormat :: String -> Bool -isTextFormat s = takeWhile (`notElem` "+-") s `notElem` ["odt","docx","epub","epub3"] +isTextFormat s = takeWhile (`notElem` "+-") s `notElem` binaries + where binaries = ["odt","docx","epub","epub3"] externalFilter :: FilePath -> [String] -> Pandoc -> IO Pandoc externalFilter f args' d = do @@ -937,7 +947,7 @@ defaultWriterName x = ".fb2" -> "fb2" ".opml" -> "opml" ['.',y] | y `elem` ['1'..'9'] -> "man" - _ -> "html" + _ -> "html" -- Transformations of a Pandoc document post-parsing: @@ -967,7 +977,7 @@ applyFilters filters args d = main :: IO () main = do - rawArgs <- liftM (map UTF8.decodeArg) getArgs + rawArgs <- map UTF8.decodeArg <$> getArgs prg <- getProgName let compatMode = (prg == "hsmarkdown") @@ -1002,7 +1012,7 @@ main = do , optTemplate = templatePath , optOutputFile = outputFile , optNumberSections = numberSections - , optNumberOffset = numberFrom + , optNumberOffset = numberFrom , optSectionDivs = sectionDivs , optIncremental = incremental , optSelfContained = selfContained @@ -1050,18 +1060,17 @@ main = do exitWith ExitSuccess -- --bibliography implies -F pandoc-citeproc for backwards compatibility: - let filters' = case M.lookup "bibliography" metadata of - Just _ | optCiteMethod opts /= Natbib && - optCiteMethod opts /= Biblatex && - all (\f -> takeBaseName f /= "pandoc-citeproc") - filters -> "pandoc-citeproc" : filters - _ -> filters + let needsCiteproc = isJust (M.lookup "bibliography" metadata) && + optCiteMethod opts `notElem` [Natbib, Biblatex] && + "pandoc-citeproc" `notElem` map takeBaseName filters + let filters' = if needsCiteproc then "pandoc-citeproc" : filters + else filters let sources = if ignoreArgs then [] else args datadir <- case mbDataDir of Nothing -> E.catch - (liftM Just $ getAppUserDataDirectory "pandoc") + (Just <$> getAppUserDataDirectory "pandoc") (\e -> let _ = (e :: E.SomeException) in return Nothing) Just _ -> return mbDataDir @@ -1092,7 +1101,8 @@ main = do else case getWriter writerName' of Left e -> err 9 $ if writerName' == "pdf" - then e ++ "\nTo create a pdf with pandoc, use " ++ + then e ++ + "\nTo create a pdf with pandoc, use " ++ "the latex or beamer writer and specify\n" ++ "an output file with .pdf extension " ++ "(pandoc -t latex -o filename.pdf)." @@ -1144,20 +1154,22 @@ main = do then do dztempl <- readDataFileUTF8 datadir ("dzslides" "template.html") - let dzcore = unlines $ dropWhile (not . isPrefixOf "