packages feed

pdfname 0.1.2 → 0.1.3

raw patch · 7 files changed

+183/−76 lines, 7 files

Files

CHANGELOG.md view
@@ -1,18 +1,27 @@ Changelog for pdfname ===================== -0.1.2 (released 2017-07-09)----------------------------+0.1.3+----- -[#1](https://github.com/asr/pdfname/issues/1), improved error message.+* [#5](https://github.com/asr/pdfname/issues/5) and+  [#6](https://github.com/asr/pdfname/issues/5): added Unicode+  substitutions.+* [#3](https://github.com/asr/pdfname/issues/3): an empty PDF file+  does not generate an exception.+* Added and fixed substitutions. +0.1.2+----- -0.1.1 (released 2017-07-07)----------------------------+[#1](https://github.com/asr/pdfname/issues/1): improved error message. +0.1.1+-----+ Fixed installation instructions (by Juan Pedro Villa-Isaza). -0.1 (released 2017-07-07)--------------------------+0.1+---  First release.
README.md view
@@ -4,9 +4,9 @@ Description ----------- -Name a PDF file using information (author, year of creation and title)-from the `pdfinfo` program.-+The `pdfname` command-line program names a PDF file using the author,+year of creation and title information extracted from the `pdfinfo`+program.  Prerequisites --------------@@ -18,7 +18,6 @@ * [pdfinfo](http://linuxcommand.org/man_pages/pdfinfo1.html) Unix   program - Installation ------------ @@ -77,3 +76,23 @@ attach the file. All that it is necessary is the *minimal* PDF metadata required for triggering the bug. There are various GUI, online and command-line tools for modifying the PDF metadata.++Known Errors+------------++If a PDF file or its metadata information is damaged `pdfname` (via+the [`pdfinfo`](http://hackage.haskell.org/package/pdfinfo) library)+generates an error. Known errors are the followings:++```+fd:5: hGetContents: invalid argument (invalid byte sequence)+```++```+Error: May not be a PDF file (continuing anyway)+Error: PDF file is damaged - attempting to reconstruct xref table...+Error: Couldn't find trailer dictionary+Error: Couldn't read xref table+```++If you get a different error message, please report it.
pdfname.cabal view
@@ -1,5 +1,5 @@ name:          pdfname-version:       0.1.2+version:       0.1.3 license:       MIT license-file:  LICENSE author:        Andrés Sicard-Ramírez with contributions by Juan Pedro Villa-Isaza.@@ -48,6 +48,9 @@    if impl(ghc >= 8.0)     ghc-options:  -Wall+                  -- TODO (2017-07-14): I cannot use `cabal repl` if+                  -- this flag is on.+                  -- -Werror                   -Widentities                   -Wincomplete-record-updates                   -Wincomplete-uni-patterns
src/CreateFile.hs view
@@ -5,7 +5,7 @@   , generateFileName   ) where -import Data.Char  ( isAscii )+import Data.Char  ( isAsciiLower, isDigit ) import Data.Maybe ( fromMaybe )  import Data.Text ( Text )@@ -29,6 +29,7 @@ import Substituions   ( authorSubst   , chSubst+  , commonSubst   , titleSubst   ) @@ -39,43 +40,48 @@   )  -------------------------------------------------------------------------------defaultValue ∷ Text-defaultValue = "xx"+defaultAuthor, defaultTitle, defaultYear ∷ Text+defaultAuthor = "no-author"+defaultTitle  = "no-title"+defaultYear   = "no-year"  getAuthor ∷ Text → Text getAuthor xs =   if T.null xs-  then defaultValue+  then defaultYear   else     -- NB that the substituions are not commutative.-    ( replace chSubst+    ( T.toLower+      . replace chSubst       . T.intercalate (T.singleton '-')-      . map (T.toLower . T.reverse . T.takeWhile (' ' /=) . T.reverse)+      . map (T.reverse . T.takeWhile (' ' /=) . T.reverse)       . T.split (',' ==)       . replace authorSubst+      . replace commonSubst     ) xs  getYear ∷ Text → Text-getYear xs = if T.null xs then defaultValue else T.take 4 xs+getYear xs = if T.null xs then defaultYear else T.take 4 xs  getTitle ∷ Text → Text getTitle xs =   if T.null xs-  then defaultValue+  then defaultTitle   else     -- NB that the substituions are not commutative.     ( T.toLower       . replace chSubst       . replace titleSubst+      . replace commonSubst     ) xs  generateFileName ∷ PDFInfo → IO FilePath generateFileName info = do    let authorHelper ∷ Text-      authorHelper = maybe defaultValue getAuthor $ pdfInfoAuthor info+      authorHelper = maybe defaultAuthor getAuthor $ pdfInfoAuthor info -  author ← if validateName authorHelper+  author ← if isValidName authorHelper            then return authorHelper            else die $ "could not generate the author from "                        +++ "`"@@ -83,12 +89,12 @@                        +++ "`"    let year ∷ Text-      year = maybe defaultValue (getYear . T.pack . show ) $ pdfInfoCreationDate info+      year = maybe defaultYear (getYear . T.pack . show ) $ pdfInfoCreationDate info    let titleHelper ∷ Text-      titleHelper = maybe defaultValue getTitle $ pdfInfoTitle info+      titleHelper = maybe defaultTitle getTitle $ pdfInfoTitle info -  title ← if validateName titleHelper+  title ← if isValidName titleHelper             then return titleHelper             else die $ "could not generate the title from "                        +++ "`"@@ -107,10 +113,13 @@    return fileName --- TODO (2017-07-04): Is there Data.Text functions instead of--- Data.Char functions for implementing this function?-validateName ∷ Text → Bool-validateName t = all (== True) $ map isAscii $ T.unpack t+-- TODO (2017-07-11): Is there @Data.Text@ functions instead of+-- @Data.Char@ functions for implementing this function?+isValidChar ∷ Char → Bool+isValidChar c = isAsciiLower c || isDigit c || (c == '-')++isValidName ∷ Text → Bool+isValidName t = all (== True) $ map isValidChar $ T.unpack t  createFile ∷ FilePath → FilePath → IO () createFile f newF =
src/Main.hs view
@@ -3,7 +3,7 @@  module Main where -import qualified Data.Text as T+import qualified Data.Text.IO as T  import Options.Applicative ( execParser ) @@ -14,7 +14,10 @@   , stderr   ) -import Text.PDF.Info ( pdfInfo )+import Text.PDF.Info+  ( pdfInfo+  , PDFInfoError(ProcessError, ProcessFailure)+  )  ------------------------------------------------------------------------------ -- Local imports@@ -32,12 +35,7 @@   , outputDir   ) -import Utilities-  ( (+++)-  , die-  , isPDF-  , unlessM-  )+import Utilities ( die )  ------------------------------------------------------------------------------ @@ -48,8 +46,6 @@   let file ∷ FilePath       file = optInputFile opts -  unlessM (isPDF file) $ die $ T.pack file +++ " is not a PDF file"-   info ← pdfInfo file   case info of     Right i → do@@ -58,6 +54,9 @@         then putStrLn $ "The full path name will be " ++ outputDir </> newFile         else createFile file newFile -    Left  err → do-      hPrint stderr err-      die "PDF file or its metadata information is damaged."+    Left pdfinfoErr → do+      case pdfinfoErr of+        ProcessFailure err → T.hPutStr stderr err+        ProcessError err   → hPrint stderr err+        _                  → T.hPutStr stderr "TODO: Missing error message"+      die "PDF file or its metadata information is damaged"
src/Substituions.hs view
@@ -3,6 +3,7 @@ module Substituions   ( authorSubst   , chSubst+  , commonSubst   , titleSubst   ) where @@ -34,7 +35,7 @@   , ("&#243;",  "o")              -- LATIN SMALL LETTER O WITH ACUTE   , ("&#246;",  "o")              -- LATIN SMALL LETTER O WITH DIAERESIS (ö)   , ("&#250;",  "u")              -- LATIN SMALL LETTER U WITH ACUTE-  , ("&#352",   "S")              -- LATIN CAPITAL LETTER S WITH CARON+  , ("&#352;",  "S")              -- LATIN CAPITAL LETTER S WITH CARON   , ("&#353",   "s")              -- LATIN SMALL LETTER S WITH CARON   , ("&#955;",  "lambda")         -- GREEK SMALL LETTER LAMDA   , ("&#8216;", "")               -- LEFT SINGLE QUOTATION MARK@@ -94,9 +95,11 @@   , ("&#x2018;",  "")               -- LEFT SINGLE QUOTATION MARK   , ("&#x2019;",  "")               -- RIGHT SINGLE QUOTATION MARK   , ("&#x201A;",  "")               -- SINGLE LOW-9 QUOTATION MAR+  , ("&#x201B;",  "")               -- SINGLE HIGH-REVERSED-9 QUOTATION MARK   , ("&#x201C;",  "")               -- LEFT DOUBLE QUOTATION MARK   , ("&#x201D;",  "")               -- RIGHT DOUBLE QUOTATION MARK   , ("&#x201E;",  "")               -- DOUBLE LOW-9 QUOTATION MARK+  , ("&#x201F;",  "")               -- DOUBLE HIGH-REVERSED-9 QUOTATION MARK   , ("&#x2020;",  "dagger")         -- DAGGER   , ("&#x2021;",  "dagger-dagger")  -- DOUBLE DAGGER   , ("&#x2022;",  "")               -- BULLET@@ -109,12 +112,16 @@ -- | Characters substituions in Unicode notation. chUnicodeSubst ∷ [(Text,Text)] chUnicodeSubst =-  [ ("\r",          "")         -- U+000D CARRIAGE RETURN (CR)+  [ ("\t",          "")         -- U+0009 CHARACTER TABULATION+  , ("\n",          "")         -- U+000A LINE FEED (LF)+  , ("\f",          "")         -- U+000C FORM FEED (FF)+  , ("\r",          "")         -- U+000D CARRIAGE RETURN (CR)   , (" ",           "-")        -- U+0020 SPACE   , ("!",           "")         -- U+0021 EXCLAMATION MARK   , ("\"",          "")         -- U+0022 QUOTATION MARK   , ("#",           "")         -- U+0023 NUMBER SIGN   , ("$",           "")         -- U+0024 DOLLAR SIGN+  , ("%",           "")         -- U+0025 PERCENT SIGN   , ("&",           "")         -- U+0026 AMPERSAND   , ("'",           "")         -- U+0027 APOSTROPHE   , ("(",           "")         -- U+0028 LEFT PARENTHESIS@@ -122,12 +129,10 @@   , ("*",           "")         -- U+002A ASTERISK   , ("+",           "")         -- U+002B PLUS SIGN   , (",",           "")         -- U+002C COMMA-  , ("/",           "-")        -- U+002F SOLIDUS-  , ("²",           "2")        -- U+00B2 SUPERSCRIPT TWO-  , ("³",           "3")        -- U+00B3 SUPERSCRIPT THREE-  , ("¹",           "1")        -- U+00B9 SUPERSCRIPT ONE-  , (":",           ".")        -- U+003A COLON-  , (";",           ".")        -- U+003B SEMICOLON+  , (".",           "")         -- U+002D FULL STOP+  , ("/",           "")         -- U+002F SOLIDUS+  , (":",           "")         -- U+003A COLON+  , (";",           "")         -- U+003B SEMICOLON   , ("<",           "")         -- U+003C LESS-THAN SIGN   , ("=",           "")         -- U+003D EQUALS SIGN   , (">",           "")         -- U+003E GREATER-THAN SIGN@@ -136,48 +141,110 @@   , ("[",           "")         -- U+005B LEFT SQUARE BRACKET   , ("\\",          "")         -- U+005C REVERSE SOLIDUS   , ("]",           "")         -- U+005D RIGHT SQUARE BRACKET+  , ("^",           "")         -- U+005E CIRCUMFLEX ACCENT   , ("_",           "-")        -- U+005F LOW LINE   , ("`",           "")         -- U+0060 GRAVE ACCENT+  , ("{",           "")         -- U+007B LEFT CURLY BRACKET   , ("|",           "")         -- U+007C VERTICAL LINE+  , ("}",           "")         -- U+007B RIGHT CURLY BRACKET+  , ("~",           "")         -- U+007E TILDE   , ("¡",           "")         -- U+00A1 INVERTED EXCLAMATION MARK   , ("¬",           "")         -- U+00AC NOT SIGN+  , ("²",           "2")        -- U+00B2 SUPERSCRIPT TWO+  , ("³",           "3")        -- U+00B3 SUPERSCRIPT THREE+  , ("¹",           "1")        -- U+00B9 SUPERSCRIPT ONE   , ("À",           "A")        -- U+00C0 LATIN CAPITAL LETTER A WITH GRAVE   , ("Á",           "A")        -- U+00C1 LATIN CAPITAL LETTER A WITH ACUTE+  , ("Â",           "A")        -- U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX   , ("Ã",           "A")        -- U+00C3 LATIN CAPITAL LETTER A WITH TILDE-  , ("Æ",           "E")        -- U+00C6 LATIN CAPITAL LETTER AE+  , ("Ä",           "A")        -- U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS+  , ("Å",           "A")        -- U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE+  , ("Æ",           "AE")       -- U+00C6 LATIN CAPITAL LETTER AE+  , ("Ç",           "C")        -- U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA+  , ("È",           "E")        -- U+00C8 LATIN CAPITAL LETTER E WITH GRAVE   , ("É",           "E")        -- U+00C9 LATIN CAPITAL LETTER E WITH ACUTE+  , ("Ê",           "E")        -- U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX+  , ("Ë",           "E")        -- U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS   , ("Í",           "I")        -- U+00CD LATIN CAPITAL LETTER I WITH ACUTE+  , ("Î",           "I")        -- U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX+  , ("Ï",           "I")        -- U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS   , ("Ñ",           "N")        -- U+00D1 LATIN CAPITAL LETTER N WITH TILDE   , ("Ó",           "O")        -- U+00D3 LATIN CAPITAL LETTER O WITH ACUTE+  , ("Ô",           "O")        -- U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX+  , ("Õ",           "O")        -- U+00D5 LATIN CAPITAL LETTER O WITH TILDE   , ("Ú",           "U")        -- U+00DA LATIN CAPITAL LETTER U WITH ACUTE+  , ("Û",           "U")        -- U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX+  , ("Ü",           "U")        -- U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS   , ("Ö",           "O")        -- U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS   , ("×",           "")         -- U+00D7 MULTIPLICATION SIGN+  , ("Ø",           "O")        -- U+00D8 LATIN CAPITAL LETTER O WITH STROKE+  , ("Ù",           "U")        -- U+00D9 LATIN CAPITAL LETTER U WITH GRAVE+  , ("ß",           "ss")       -- U+00DF LATIN SMALL LETTER SHARP S   , ("à",           "a")        -- U+00E0 LATIN SMALL LETTER A WITH GRAVE   , ("á",           "a")        -- U+00E1 LATIN SMALL LETTER A WITH ACUTE   , ("â",           "a")        -- U+00E2 LATIN SMALL LETTER A CIRCUMFLEX   , ("ã",           "a")        -- U+00E3 LATIN SMALL LETTER A WITH TILDE   , ("ä",           "a")        -- U+00E4 LATIN SMALL LETTER A WITH DIAERESIS-  , ("æ",           "e")        -- U+00E6 LATIN SMALL LETTER AE+  , ("å",           "a")        -- U+00E5 LATIN SMALL LETTER A WITH RING ABOVE+  , ("æ",           "ae")       -- U+00E6 LATIN SMALL LETTER AE   , ("ç",           "c")        -- U+00E7 LATIN SMALL LETTER C WITH CEDILLA+  , ("è",           "e")        -- U+00E8 LATIN SMALL LETTER E WITH GRAVE   , ("é",           "e")        -- U+00E9 LATIN SMALL LETTER E WITH ACUTE+  , ("ê",           "e")        -- U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX+  , ("ë",           "e")        -- U+00EB LATIN SMALL LETTER E WITH DIAERESIS   , ("í",           "i")        -- U+00ED LATIN SMALL LETTER I WITH ACUTE+  , ("î",           "i")        -- U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX+  , ("ï",           "i")        -- U+00EF LATIN SMALL LETTER I WITH DIAERESIS   , ("ñ",           "n")        -- U+00F1 LATIN SMALL LETTER N WITH TILDE   , ("ò",           "o")        -- U+00F2 LATIN SMALL LETTER O WITH GRAVE   , ("ó",           "o")        -- U+00F3 LATIN SMALL LETTER O WITH ACUTE+  , ("ô",           "o")        -- U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX+  , ("õ",           "o")        -- U+00F5 LATIN SMALL LETTER O WITH TILDE   , ("ö",           "o")        -- U+00F6 LATIN SMALL LETTER O WITH DIAERESIS   , ("ø",           "o")        -- U+00F8 LATIN SMALL LETTER O WITH STROKE+  , ("ù",           "u")        -- U+00F9 LATIN SMALL LETTER U WITH GRAVE   , ("ú",           "u")        -- U+00FA LATIN SMALL LETTER U WITH ACUTE+  , ("û",           "u")        -- U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX   , ("ü",           "u")        -- U+00FC LATIN SMALL LETTER U WITH DIAERESIS   , ("þ",           "t")        -- U+00FE LATIN SMALL LETTER THORN   , ("ÿ",           "y")        -- U+00FF LATIN SMALL LETTER Y WITH DIAERESIS+  , ("Ă",           "A")        -- U+0102 LATIN CAPITAL LETTER A WITH BREVE+  , ("ă",           "a")        -- U+0103 LATIN SMALL LETTER A WITH+  , ("Ą",           "A")        -- U+0104 LATIN CAPITAL LETTER A WITH OGONEK+  , ("ą",           "a")        -- U+0105 LATIN SMALL LETTER A WITH OGONEK+  , ("Ć",           "c")        -- U+0106 LATIN CAPITAL LETTER C WITH ACUTE   , ("ć",           "c")        -- U+0107 LATIN SMALL LETTER C WITH ACUTE   , ("č",           "c")        -- U+010D LATIN SMALL LETTER C WITH CARON+  , ("Ę",           "e")        -- U+0118 LATIN CAPITAL LETTER E WITH OGONEK+  , ("ę",           "e")        -- U+0119 LATIN SMALL LETTER E WITH OGONEK   , ("Ł",           "L")        -- U+0141 LATIN CAPITAL LETTER L WITH STROKE+  , ("ł",           "l")        -- U+0142 LATIN SMALL LETTER L WITH STROKE+  , ("Ń",           "N")        -- U+0143 LATIN CAPITAL LETTER N WITH ACUTE+  , ("ń",           "n")        -- U+0144 LATIN SMALL LETTER N WITH ACUTE   , ("ņ",           "n")        -- U+0146 LATIN SMALL LETTER N WITH CEDILLA+  , ("Ő",           "O")        -- U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE+  , ("ő",           "o")        -- U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE+  , ("Œ",           "OE")       -- U+0152 LATIN CAPITAL LIGATURE OE+  , ("œ",           "oe")       -- U+0153 LATIN SMALL LIGATURE OE   , ("ř",           "r")        -- U+0159 LATIN SMALL LETTER R WITH CARON+  , ("Ś",           "S")        -- U+015A LATIN CAPITAL LETTER S WITH ACUTE+  , ("ś",           "s")        -- U+015B LATIN SMALL LETTER S WITH ACUTE+  , ("Š",           "S")        -- U+0160 LATIN CAPITAL LETTER S WITH CARON   , ("š",           "s")        -- U+0161 LATIN SMALL LETTER S WITH CARON   , ("ū",           "u")        -- U+016B LATIN SMALL LETTER U WITH MACRON+  , ("Ű",           "U")        -- U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE+  , ("ű",           "u")        -- U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE   , ("Ÿ",           "Y")        -- U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS+  , ("Ź",           "Z")        -- U+0179 LATIN CAPITAL LETTER Z WITH ACUTE+  , ("ź",           "z")        -- U+017A LATIN SMALL LETTER Z WITH ACUTE+  , ("Ż",           "Z")        -- U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE+  , ("ż",           "z")        -- U+017C LATIN SMALL LETTER Z WITH DOT ABOVE+  , ("Ž",           "z")        -- U+017D LATIN CAPITAL LETTER Z WITH CARON+  , ("ž",           "z")        -- U+017E LATIN SMALL LETTER Z WITH CARON+  , ("Ș",           "S")        -- U+0218 LATIN CAPITAL LETTER S WITH COMMA BELOW+  , ("ș",           "s")        -- U+0219 LATIN SMALL LETTER S WITH COMMA BELOW+  , ("Ț",           "T")        -- U+021A LATIN CAPITAL LETTER T WITH COMMA BELOW+  , ("ț",           "t")        -- U+021B LATIN SMALL LETTER T WITH COMMA BELOW   , ("Ω",           "Omega")    -- U+03A9 GREEK CAPITAL LETTER OMEGA   , ("α",           "alpha")    -- U+03B1 GREEK SMALL LETTER ALPHA   , ("β",           "beta")     -- U+03B2 GREEK SMALL LETTER BETA@@ -204,12 +271,21 @@   , ("χ",           "chi")      -- U+03C7 GREEK SMALL LETTER CHI   , ("ψ",           "psi")      -- U+03C8 GREEK SMALL LETTER PSI   , ("ω",           "omega")    -- U+03C9 GREEK SMALL LETTER OMEGA+  , ("ẞ",           "SS")       -- U+1E9E LATIN CAPITAL LETTER SHARP S   , ("–",           "-")        -- U+2013 EN DASH   , ("—",           "-")        -- U+2014 EM DASH   , ("‘",           "")         -- U+2018 LEFT SINGLE QUOTATION MARK   , ("’",           "")         -- U+2019 RIGHT SINGLE QUOTATION MARK+  , ("‚",           "")         -- U+201A SINGLE LOW-9 QUOTATION MARK+  , ("‛",           "")         -- U+201B SINGLE HIGH-REVERSED-9 QUOTATION MARK+  , ("“",           "")         -- U+201C LEFT DOUBLE QUOTATION MARK+  , ("”",           "")         -- U+201D RIGHT DOUBLE QUOTATION MARK+  , ("„",           "")         -- U+201E DOUBLE LOW-9 QUOTATION MARK+  , ("‟",           "")         -- U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK   , ("‡",           "")         -- U+2021 DOUBLE DAGGER   , ("™",           "")         -- U+2122 TRADE MARK SIGN+  , ("ℵ",           "aleph")    -- U+2135 ALEF SYMBOL+  , ("ℶ",           "beth")     -- U+2136 BET SYMBOL   , ("�",          "")         -- U+FFFD REPLACEMENT CHARACTER   ] @@ -219,17 +295,26 @@ chSubst =  chHexSubst ++ chNNSubst ++ chDecSubst ++ chUnicodeSubst  ------------------------------------------------------------------------------+-- Author and title substituions++commonSubst ∷ [(Text, Text)]+commonSubst =+  [ ("á",      "a")  -- U+00C3 and U+00A1 (LATIN SMALL LETTER A WITH GRAVE)+  , ("é",      "e")  -- U+00C3 and U+00A9 (LATIN SMALL LETTER E WITH ACUTE)+  , ("Ã\x00AD", "i")  -- U+00C3 and U+00AD (LATIN SMALL LETTER I GRAVE)+  -- We erase `ö` because it follows an `o` in the examples we know.+  , ("ö",      "")   -- U+00C3 and U+00B6 (LATIN SMALL LETTER O WITH DIAERESIS)+  , ("Å›",      "s")  -- U+00C5 and U+203A (LATIN CAPITAL LETTER S WITH ACUTE)+  ]++------------------------------------------------------------------------------ -- Author substituions  authorSubst ∷ [(Text, Text)] authorSubst =   [ (", ",   ",")   , (" and", ",")-  -- See Issue #1.-  , ("Ã\x00AD", "i")  -- U+00C3 and U+00AD-  -- See Issue #1.-  , ("á",      "a")  -- U+00C3 and U+00A1-  , ("Mcbride", "McBride")+   ]  ------------------------------------------------------------------------------@@ -258,7 +343,6 @@   , ("<TEX>$\\gamma$</TEX>",                              "gamma")   , ("<TEX>$\\epsilon$</TEX>",                            "epsilon")   , ("<TEX>$\\eta$</TEX>",                                "eta")-  -- See Issue #2.   , ("<TEX>$\\lambda$</TEX>",                             "lambda")   , ("<TEX>$\\pi$</TEX>",                                 "pi")   , ("<TEX>$\\omega$</TEX>",                              "omega")@@ -267,6 +351,4 @@   , ("<TEX>{\\sc QuickSpec}</TEX>:",                      "QuickSpec")   , ("<TEX>{\\sc QuodLibet}</TEX>!",                      "QuodLibet")   , ("<TEX>{\\sc Vampire}</TEX>",                         "Vampire")-  , ("Å›", "s")  -- U+00C5 and U+203A-  , ("ö", "")   -- U+00C3 and U+00B6   ]
src/Utilities.hs view
@@ -4,7 +4,6 @@  ( (+++)  , die  , ifM- , isPDF  , progNameVersion  , replace  , unless_@@ -20,19 +19,13 @@  import Data.Version ( showVersion ) -import Control.Monad ( replicateM, unless, void )+import Control.Monad ( unless, void )  import Paths_pdfname ( version )  import System.Environment ( getProgName ) import System.Exit        ( exitFailure )--import System.IO-  ( IOMode(ReadMode)-  , hGetChar-  , stderr-  , withBinaryFile-  )+import System.IO          ( stderr )  ------------------------------------------------------------------------------ -- Utilities from the Agda library@@ -76,10 +69,3 @@ -- TODO (2017-07-06): To use `getProgName`. progNameVersion ∷ String progNameVersion = "pdfname" ++ " version " ++ showVersion version--isPDF ∷ FilePath → IO Bool-isPDF f =-  ifM ((==) "%PDF" <$> withBinaryFile f ReadMode (replicateM 4 . hGetChar))-      (return True)-      (return False)-