git.iko.soy/typeable/pandoc
on master help sign in
Restored Text.Pandoc.Compat.Monoid.

Don't use custom prelude for latest ghc. This is a better approach to making 'stack ghci' and 'cabal repl' work. Instead of using NoImplicitPrelude, we only use the custom prelude for older ghc versions. The custom prelude presents a uniform API that matches the current base version's prelude. So, when developing (presumably with latest ghc), we don't use a custom prelude at all and hence have no trouble with ghci. The custom prelude no longer exports (<>): we now want to match the base 4.8 prelude behavior.

commitc1e474f005c99ca3d2210411389970f5da55c422 authorJohn MacFarlane <jgm@berkeley.edu> dateMon 9 Nov 2015, 11:15 (11 years ago) parent23b693c
22 files changed+64−30
pandoc.cabal+23−12 prelude/Prelude.hs+5−14 src/Text/Pandoc/Compat/Monoid.hs+17 src/Text/Pandoc/PDF.hs+1 src/Text/Pandoc/Parsing.hs+1 src/Text/Pandoc/Pretty.hs+1 src/Text/Pandoc/Readers/EPUB.hs+1 src/Text/Pandoc/Readers/HTML.hs+1−1 src/Text/Pandoc/Readers/Haddock.hs+1 src/Text/Pandoc/Readers/Markdown.hs+1 src/Text/Pandoc/Readers/MediaWiki.hs+1 src/Text/Pandoc/Readers/Odt/Arrows/State.hs+1 src/Text/Pandoc/Readers/Odt/Arrows/Utils.hs+1−1 src/Text/Pandoc/Readers/Odt/Generic/Fallible.hs+1−1 src/Text/Pandoc/Readers/Org.hs+1 src/Text/Pandoc/Readers/RST.hs+1−1 src/Text/Pandoc/Readers/Textile.hs+1 src/Text/Pandoc/Readers/Txt2Tags.hs+1 src/Text/Pandoc/Shared.hs+1 src/Text/Pandoc/Templates.hs+1 src/Text/Pandoc/Writers/Docx.hs+1 src/Text/Pandoc/Writers/HTML.hs+1
pandoc.cabal+23−12
@@ -310,7 +310,10 @@ Library
310310 ScopedTypeVariables, GeneralizedNewtypeDeriving,
311311 RelaxedPolyRec, DeriveDataTypeable, TypeSynonymInstances,
312312 FlexibleInstances
313− Hs-Source-Dirs: src, prelude
313+ Hs-Source-Dirs: src
314+ if impl(ghc < 7.10)
315+ Hs-Source-Dirs: prelude
316+ Other-Modules: Prelude
314317
315318 Exposed-Modules: Text.Pandoc,
316319 Text.Pandoc.Options,
@@ -396,9 +399,9 @@ Library
396399 Text.Pandoc.Compat.Time,
397400 Text.Pandoc.Compat.Except,
398401 Text.Pandoc.Compat.TagSoupEntity,
399− Text.Pandoc.Compat.Directory
402+ Text.Pandoc.Compat.Directory,
403+ Text.Pandoc.Compat.Monoid,
400404 Paths_pandoc
401− Prelude
402405
403406 Buildable: True
404407
@@ -429,15 +432,20 @@ Executable pandoc
429432 ScopedTypeVariables, GeneralizedNewtypeDeriving,
430433 RelaxedPolyRec, DeriveDataTypeable, TypeSynonymInstances,
431434 FlexibleInstances
432− Hs-Source-Dirs: ., prelude
435+ Hs-Source-Dirs: .
436+ if impl(ghc < 7.10)
437+ Hs-Source-Dirs: prelude
438+ Other-Modules: Prelude
433439 Main-Is: pandoc.hs
434440 Buildable: True
435− Other-Modules: Prelude
436− Paths_pandoc
441+ Other-Modules: Paths_pandoc
437442
438443Executable trypandoc
439444 Main-Is: trypandoc.hs
440− Hs-Source-Dirs: trypandoc, prelude
445+ Hs-Source-Dirs: trypandoc
446+ if impl(ghc < 7.10)
447+ Hs-Source-Dirs: prelude
448+ Other-Modules: Prelude
441449 default-language: Haskell2010
442450 if flag(trypandoc)
443451 Build-Depends: base, aeson, pandoc, highlighting-kate,
@@ -445,12 +453,14 @@ Executable trypandoc
445453 Buildable: True
446454 else
447455 Buildable: False
448− Other-Modules: Prelude
449456
450457Test-Suite test-pandoc
451458 Type: exitcode-stdio-1.0
452459 Main-Is: test-pandoc.hs
453− Hs-Source-Dirs: tests, prelude
460+ Hs-Source-Dirs: tests
461+ if impl(ghc < 7.10)
462+ Hs-Source-Dirs: prelude
463+ Other-Modules: Prelude
454464 Build-Depends: base >= 4.2 && < 5,
455465 syb >= 0.1 && < 0.7,
456466 pandoc,
@@ -495,18 +505,19 @@ Test-Suite test-pandoc
495505 Tests.Writers.LaTeX
496506 Tests.Writers.Docx
497507 Tests.Writers.RST
498− Prelude
499508 Ghc-Options: -rtsopts -Wall -fno-warn-unused-do-bind -threaded
500509 Default-Language: Haskell98
501510
502511benchmark benchmark-pandoc
503512 Type: exitcode-stdio-1.0
504513 Main-Is: benchmark-pandoc.hs
505− Hs-Source-Dirs: benchmark, prelude
514+ Hs-Source-Dirs: benchmark
515+ if impl(ghc < 7.10)
516+ Hs-Source-Dirs: prelude
517+ Other-Modules: Prelude
506518 Build-Depends: pandoc,
507519 base >= 4.2 && < 5,
508520 syb >= 0.1 && < 0.7,
509521 criterion >= 1.0 && < 1.2
510522 Ghc-Options: -rtsopts -Wall -fno-warn-unused-do-bind
511523 Default-Language: Haskell98
512− Other-Modules: Prelude
prelude/Prelude.hs+5−14
@@ -1,23 +1,24 @@
11{-# LANGUAGE PackageImports #-}
22{-# LANGUAGE CPP #-}
33
4+-- This custom Prelude emulates the API of the prelude
5+-- with base 4.8.
6+
47module Prelude
58(
69 module P
7−, Monoid(..)
8−, Applicative(..)
910#if MIN_VERSION_base(4,8,0)
1011#else
12+, Monoid(..)
13+, Applicative(..)
1114, (<$>)
1215, (<$)
1316#endif
14−, (<>)
1517)
1618where
1719
1820#if MIN_VERSION_base(4,8,0)
1921import "base" Prelude as P
20−import Data.Monoid ((<>))
2122#elif MIN_VERSION_base(4,6,0)
2223import "base" Prelude as P
2324import Control.Applicative
@@ -27,13 +28,3 @@ import "base" Prelude as P hiding (catch)
2728import Control.Applicative
2829import Data.Monoid
2930#endif
30−
31−#if MIN_VERSION_base(4,5,0)
32−#else
33−infixr 6 <>
34−
35−-- | An infix synonym for 'mappend'.
36−(<>) :: Monoid m => m -> m -> m
37−(<>) = mappend
38−{-# INLINE (<>) #-}
39−#endif
src/Text/Pandoc/Compat/Monoid.hsnew file+17
@@ -0,0 +1,17 @@
1+{-# LANGUAGE CPP #-}
2+module Text.Pandoc.Compat.Monoid ( (<>) )
3+ where
4+
5+#if MIN_VERSION_base(4,5,0)
6+import Data.Monoid ((<>))
7+
8+#else
9+import Data.Monoid
10+
11+infixr 6 <>
12+
13+--- | An infix synonym for 'mappend'.
14+(<>) :: Monoid m => m -> m -> m
15+(<>) = mappend
16+{-# INLINE (<>) #-}
17+#endif
src/Text/Pandoc/PDF.hs+1
@@ -34,6 +34,7 @@ import Data.ByteString.Lazy (ByteString)
3434import qualified Data.ByteString.Lazy as B
3535import qualified Data.ByteString.Lazy.Char8 as BC
3636import qualified Data.ByteString as BS
37+import Text.Pandoc.Compat.Monoid ((<>))
3738import System.Exit (ExitCode (..))
3839import System.FilePath
3940import System.IO (stderr, stdout)
src/Text/Pandoc/Parsing.hs+1
@@ -185,6 +185,7 @@ import Text.TeXMath.Readers.TeX.Macros (applyMacros, Macro,
185185 parseMacroDefinitions)
186186import Text.Pandoc.Compat.TagSoupEntity ( lookupEntity )
187187import Text.Pandoc.Asciify (toAsciiChar)
188+import Text.Pandoc.Compat.Monoid ((<>))
188189import Data.Default
189190import qualified Data.Set as Set
190191import Control.Monad.Reader
src/Text/Pandoc/Pretty.hs+1
@@ -80,6 +80,7 @@ import Data.List (intercalate)
8080import Data.String
8181import Control.Monad.State
8282import Data.Char (isSpace)
83+import Text.Pandoc.Compat.Monoid ((<>))
8384
8485data RenderState a = RenderState{
8586 output :: [a] -- ^ In reverse order
src/Text/Pandoc/Readers/EPUB.hs+1
@@ -16,6 +16,7 @@ import Text.Pandoc.Options ( ReaderOptions(..), readerTrace)
1616import Text.Pandoc.Shared (escapeURI, collapseFilePath, addMetaField)
1717import Text.Pandoc.MediaBag (MediaBag, insertMedia)
1818import Text.Pandoc.Compat.Except (MonadError, throwError, runExcept, Except)
19+import Text.Pandoc.Compat.Monoid ((<>))
1920import Text.Pandoc.MIME (MimeType)
2021import qualified Text.Pandoc.Builder as B
2122import Codec.Archive.Zip ( Archive (..), toArchive, fromEntry
src/Text/Pandoc/Readers/HTML.hs+1−1
@@ -66,7 +66,7 @@ import Control.Monad.Reader (Reader,ask, asks, local, runReader)
6666import Network.URI (isURI)
6767import Text.Pandoc.Error
6868import Text.Pandoc.CSS (foldOrElse, pickStyleAttrProps)
69−
69+import Text.Pandoc.Compat.Monoid ((<>))
7070import Text.Parsec.Error
7171
7272
src/Text/Pandoc/Readers/Haddock.hs+1
@@ -16,6 +16,7 @@ module Text.Pandoc.Readers.Haddock
1616
1717import Text.Pandoc.Builder (Blocks, Inlines)
1818import qualified Text.Pandoc.Builder as B
19+import Text.Pandoc.Compat.Monoid ((<>))
1920import Text.Pandoc.Shared (trim, splitBy)
2021import Data.List (intersperse, stripPrefix)
2122import Data.Maybe (fromMaybe)
src/Text/Pandoc/Readers/Markdown.hs+1
@@ -62,6 +62,7 @@ import Text.HTML.TagSoup.Match (tagOpen)
6262import qualified Data.Set as Set
6363import Text.Printf (printf)
6464import Debug.Trace (trace)
65+import Text.Pandoc.Compat.Monoid ((<>))
6566import Text.Pandoc.Error
6667
6768type MarkdownParser = Parser [Char] ParserState
src/Text/Pandoc/Readers/MediaWiki.hs+1
@@ -39,6 +39,7 @@ module Text.Pandoc.Readers.MediaWiki ( readMediaWiki ) where
3939import Text.Pandoc.Definition
4040import qualified Text.Pandoc.Builder as B
4141import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
42+import Text.Pandoc.Compat.Monoid ((<>))
4243import Text.Pandoc.Options
4344import Text.Pandoc.Readers.HTML ( htmlTag, isBlockTag, isCommentTag )
4445import Text.Pandoc.XML ( fromEntities )
src/Text/Pandoc/Readers/Odt/Arrows/State.hs+1
@@ -46,6 +46,7 @@ import Control.Monad
4646
4747import Data.Foldable
4848
49+import Text.Pandoc.Compat.Monoid
4950import Text.Pandoc.Readers.Odt.Arrows.Utils
5051import Text.Pandoc.Readers.Odt.Generic.Fallible
5152
src/Text/Pandoc/Readers/Odt/Arrows/Utils.hs+1−1
@@ -46,7 +46,7 @@ import qualified Data.Foldable as F
4646
4747import Text.Pandoc.Readers.Odt.Generic.Fallible
4848import Text.Pandoc.Readers.Odt.Generic.Utils
49−
49+import Text.Pandoc.Compat.Monoid
5050
5151and2 :: (Arrow a) => a b c -> a b c' -> a b (c,c')
5252and2 = (&&&)
src/Text/Pandoc/Readers/Odt/Generic/Fallible.hs+1−1
@@ -41,7 +41,7 @@ module Text.Pandoc.Readers.Odt.Generic.Fallible where
4141
4242import Control.Applicative
4343import Control.Monad
44−
44+import Text.Pandoc.Compat.Monoid ((<>))
4545import qualified Data.Foldable as F
4646
4747-- | Default for now. Will probably become a class at some point.
src/Text/Pandoc/Readers/Org.hs+1
@@ -34,6 +34,7 @@ import qualified Text.Pandoc.Builder as B
3434import Text.Pandoc.Builder ( Inlines, Blocks, HasMeta(..),
3535 trimInlines )
3636import Text.Pandoc.Definition
37+import Text.Pandoc.Compat.Monoid ((<>))
3738import Text.Pandoc.Options
3839import qualified Text.Pandoc.Parsing as P
3940import Text.Pandoc.Parsing hiding ( F, unF, askF, asksF, runF
src/Text/Pandoc/Readers/RST.hs+1−1
@@ -48,7 +48,7 @@ import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
4848import qualified Text.Pandoc.Builder as B
4949import Data.Sequence (viewr, ViewR(..))
5050import Data.Char (toLower, isHexDigit, isSpace)
51−
51+import Text.Pandoc.Compat.Monoid ((<>))
5252import Text.Pandoc.Error
5353
5454-- | Parse reStructuredText string and return Pandoc document.
src/Text/Pandoc/Readers/Textile.hs+1
@@ -64,6 +64,7 @@ import Text.HTML.TagSoup.Match
6464import Data.List ( intercalate )
6565import Data.Char ( digitToInt, isUpper)
6666import Control.Monad ( guard, liftM, when )
67+import Text.Pandoc.Compat.Monoid ((<>))
6768import Text.Printf
6869import Debug.Trace (trace)
6970import Text.Pandoc.Error
src/Text/Pandoc/Readers/Txt2Tags.hs+1
@@ -34,6 +34,7 @@ module Text.Pandoc.Readers.Txt2Tags ( readTxt2Tags
3434
3535import qualified Text.Pandoc.Builder as B
3636import Text.Pandoc.Builder ( Inlines, Blocks, trimInlines )
37+import Text.Pandoc.Compat.Monoid ((<>))
3738import Text.Pandoc.Definition
3839import Text.Pandoc.Options
3940import Text.Pandoc.Shared (escapeURI,compactify', compactify'DL)
src/Text/Pandoc/Shared.hs+1
@@ -129,6 +129,7 @@ import System.IO (stderr)
129129import System.IO.Temp
130130import Text.HTML.TagSoup (renderTagsOptions, RenderOptions(..), Tag(..),
131131 renderOptions)
132+import Text.Pandoc.Compat.Monoid ((<>))
132133import qualified Data.ByteString as BS
133134import qualified Data.ByteString.Char8 as B8
134135import Data.ByteString.Base64 (decodeLenient)
src/Text/Pandoc/Templates.hs+1
@@ -98,6 +98,7 @@ import Control.Monad (guard, when)
9898import Data.Aeson (ToJSON(..), Value(..))
9999import qualified Text.Parsec as P
100100import Text.Parsec.Text (Parser)
101+import Text.Pandoc.Compat.Monoid ((<>))
101102import qualified Data.Text as T
102103import Data.Text (Text)
103104import Data.Text.Encoding (encodeUtf8)
src/Text/Pandoc/Writers/Docx.hs+1
@@ -60,6 +60,7 @@ import Data.Unique (hashUnique, newUnique)
6060import System.Random (randomRIO)
6161import Text.Printf (printf)
6262import qualified Control.Exception as E
63+import Text.Pandoc.Compat.Monoid ((<>))
6364import Text.Pandoc.MIME (MimeType, getMimeType, getMimeTypeDef,
6465 extensionFromMimeType)
6566import Control.Applicative ((<|>))
src/Text/Pandoc/Writers/HTML.hs+1
@@ -31,6 +31,7 @@ Conversion of 'Pandoc' documents to HTML.
3131-}
3232module Text.Pandoc.Writers.HTML ( writeHtml , writeHtmlString ) where
3333import Text.Pandoc.Definition
34+import Text.Pandoc.Compat.Monoid ((<>))
3435import Text.Pandoc.Shared
3536import Text.Pandoc.Writers.Shared
3637import Text.Pandoc.Options