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.
This commit is contained in:
parent
23b693c029
commit
c1e474f005
22 changed files with 64 additions and 30 deletions
35
pandoc.cabal
35
pandoc.cabal
|
@ -310,7 +310,10 @@ Library
|
|||
ScopedTypeVariables, GeneralizedNewtypeDeriving,
|
||||
RelaxedPolyRec, DeriveDataTypeable, TypeSynonymInstances,
|
||||
FlexibleInstances
|
||||
Hs-Source-Dirs: src, prelude
|
||||
Hs-Source-Dirs: src
|
||||
if impl(ghc < 7.10)
|
||||
Hs-Source-Dirs: prelude
|
||||
Other-Modules: Prelude
|
||||
|
||||
Exposed-Modules: Text.Pandoc,
|
||||
Text.Pandoc.Options,
|
||||
|
@ -396,9 +399,9 @@ Library
|
|||
Text.Pandoc.Compat.Time,
|
||||
Text.Pandoc.Compat.Except,
|
||||
Text.Pandoc.Compat.TagSoupEntity,
|
||||
Text.Pandoc.Compat.Directory
|
||||
Text.Pandoc.Compat.Directory,
|
||||
Text.Pandoc.Compat.Monoid,
|
||||
Paths_pandoc
|
||||
Prelude
|
||||
|
||||
Buildable: True
|
||||
|
||||
|
@ -429,15 +432,20 @@ Executable pandoc
|
|||
ScopedTypeVariables, GeneralizedNewtypeDeriving,
|
||||
RelaxedPolyRec, DeriveDataTypeable, TypeSynonymInstances,
|
||||
FlexibleInstances
|
||||
Hs-Source-Dirs: ., prelude
|
||||
Hs-Source-Dirs: .
|
||||
if impl(ghc < 7.10)
|
||||
Hs-Source-Dirs: prelude
|
||||
Other-Modules: Prelude
|
||||
Main-Is: pandoc.hs
|
||||
Buildable: True
|
||||
Other-Modules: Prelude
|
||||
Paths_pandoc
|
||||
Other-Modules: Paths_pandoc
|
||||
|
||||
Executable trypandoc
|
||||
Main-Is: trypandoc.hs
|
||||
Hs-Source-Dirs: trypandoc, prelude
|
||||
Hs-Source-Dirs: trypandoc
|
||||
if impl(ghc < 7.10)
|
||||
Hs-Source-Dirs: prelude
|
||||
Other-Modules: Prelude
|
||||
default-language: Haskell2010
|
||||
if flag(trypandoc)
|
||||
Build-Depends: base, aeson, pandoc, highlighting-kate,
|
||||
|
@ -445,12 +453,14 @@ Executable trypandoc
|
|||
Buildable: True
|
||||
else
|
||||
Buildable: False
|
||||
Other-Modules: Prelude
|
||||
|
||||
Test-Suite test-pandoc
|
||||
Type: exitcode-stdio-1.0
|
||||
Main-Is: test-pandoc.hs
|
||||
Hs-Source-Dirs: tests, prelude
|
||||
Hs-Source-Dirs: tests
|
||||
if impl(ghc < 7.10)
|
||||
Hs-Source-Dirs: prelude
|
||||
Other-Modules: Prelude
|
||||
Build-Depends: base >= 4.2 && < 5,
|
||||
syb >= 0.1 && < 0.7,
|
||||
pandoc,
|
||||
|
@ -495,18 +505,19 @@ Test-Suite test-pandoc
|
|||
Tests.Writers.LaTeX
|
||||
Tests.Writers.Docx
|
||||
Tests.Writers.RST
|
||||
Prelude
|
||||
Ghc-Options: -rtsopts -Wall -fno-warn-unused-do-bind -threaded
|
||||
Default-Language: Haskell98
|
||||
|
||||
benchmark benchmark-pandoc
|
||||
Type: exitcode-stdio-1.0
|
||||
Main-Is: benchmark-pandoc.hs
|
||||
Hs-Source-Dirs: benchmark, prelude
|
||||
Hs-Source-Dirs: benchmark
|
||||
if impl(ghc < 7.10)
|
||||
Hs-Source-Dirs: prelude
|
||||
Other-Modules: Prelude
|
||||
Build-Depends: pandoc,
|
||||
base >= 4.2 && < 5,
|
||||
syb >= 0.1 && < 0.7,
|
||||
criterion >= 1.0 && < 1.2
|
||||
Ghc-Options: -rtsopts -Wall -fno-warn-unused-do-bind
|
||||
Default-Language: Haskell98
|
||||
Other-Modules: Prelude
|
||||
|
|
|
@ -1,23 +1,24 @@
|
|||
{-# LANGUAGE PackageImports #-}
|
||||
{-# LANGUAGE CPP #-}
|
||||
|
||||
-- This custom Prelude emulates the API of the prelude
|
||||
-- with base 4.8.
|
||||
|
||||
module Prelude
|
||||
(
|
||||
module P
|
||||
, Monoid(..)
|
||||
, Applicative(..)
|
||||
#if MIN_VERSION_base(4,8,0)
|
||||
#else
|
||||
, Monoid(..)
|
||||
, Applicative(..)
|
||||
, (<$>)
|
||||
, (<$)
|
||||
#endif
|
||||
, (<>)
|
||||
)
|
||||
where
|
||||
|
||||
#if MIN_VERSION_base(4,8,0)
|
||||
import "base" Prelude as P
|
||||
import Data.Monoid ((<>))
|
||||
#elif MIN_VERSION_base(4,6,0)
|
||||
import "base" Prelude as P
|
||||
import Control.Applicative
|
||||
|
@ -27,13 +28,3 @@ import "base" Prelude as P hiding (catch)
|
|||
import Control.Applicative
|
||||
import Data.Monoid
|
||||
#endif
|
||||
|
||||
#if MIN_VERSION_base(4,5,0)
|
||||
#else
|
||||
infixr 6 <>
|
||||
|
||||
-- | An infix synonym for 'mappend'.
|
||||
(<>) :: Monoid m => m -> m -> m
|
||||
(<>) = mappend
|
||||
{-# INLINE (<>) #-}
|
||||
#endif
|
||||
|
|
17
src/Text/Pandoc/Compat/Monoid.hs
Normal file
17
src/Text/Pandoc/Compat/Monoid.hs
Normal file
|
@ -0,0 +1,17 @@
|
|||
{-# LANGUAGE CPP #-}
|
||||
module Text.Pandoc.Compat.Monoid ( (<>) )
|
||||
where
|
||||
|
||||
#if MIN_VERSION_base(4,5,0)
|
||||
import Data.Monoid ((<>))
|
||||
|
||||
#else
|
||||
import Data.Monoid
|
||||
|
||||
infixr 6 <>
|
||||
|
||||
--- | An infix synonym for 'mappend'.
|
||||
(<>) :: Monoid m => m -> m -> m
|
||||
(<>) = mappend
|
||||
{-# INLINE (<>) #-}
|
||||
#endif
|
|
@ -34,6 +34,7 @@ import Data.ByteString.Lazy (ByteString)
|
|||
import qualified Data.ByteString.Lazy as B
|
||||
import qualified Data.ByteString.Lazy.Char8 as BC
|
||||
import qualified Data.ByteString as BS
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import System.Exit (ExitCode (..))
|
||||
import System.FilePath
|
||||
import System.IO (stderr, stdout)
|
||||
|
|
|
@ -185,6 +185,7 @@ import Text.TeXMath.Readers.TeX.Macros (applyMacros, Macro,
|
|||
parseMacroDefinitions)
|
||||
import Text.Pandoc.Compat.TagSoupEntity ( lookupEntity )
|
||||
import Text.Pandoc.Asciify (toAsciiChar)
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Data.Default
|
||||
import qualified Data.Set as Set
|
||||
import Control.Monad.Reader
|
||||
|
|
|
@ -80,6 +80,7 @@ import Data.List (intercalate)
|
|||
import Data.String
|
||||
import Control.Monad.State
|
||||
import Data.Char (isSpace)
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
|
||||
data RenderState a = RenderState{
|
||||
output :: [a] -- ^ In reverse order
|
||||
|
|
|
@ -16,6 +16,7 @@ import Text.Pandoc.Options ( ReaderOptions(..), readerTrace)
|
|||
import Text.Pandoc.Shared (escapeURI, collapseFilePath, addMetaField)
|
||||
import Text.Pandoc.MediaBag (MediaBag, insertMedia)
|
||||
import Text.Pandoc.Compat.Except (MonadError, throwError, runExcept, Except)
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Pandoc.MIME (MimeType)
|
||||
import qualified Text.Pandoc.Builder as B
|
||||
import Codec.Archive.Zip ( Archive (..), toArchive, fromEntry
|
||||
|
|
|
@ -66,7 +66,7 @@ import Control.Monad.Reader (Reader,ask, asks, local, runReader)
|
|||
import Network.URI (isURI)
|
||||
import Text.Pandoc.Error
|
||||
import Text.Pandoc.CSS (foldOrElse, pickStyleAttrProps)
|
||||
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Parsec.Error
|
||||
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ module Text.Pandoc.Readers.Haddock
|
|||
|
||||
import Text.Pandoc.Builder (Blocks, Inlines)
|
||||
import qualified Text.Pandoc.Builder as B
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Pandoc.Shared (trim, splitBy)
|
||||
import Data.List (intersperse, stripPrefix)
|
||||
import Data.Maybe (fromMaybe)
|
||||
|
|
|
@ -62,6 +62,7 @@ import Text.HTML.TagSoup.Match (tagOpen)
|
|||
import qualified Data.Set as Set
|
||||
import Text.Printf (printf)
|
||||
import Debug.Trace (trace)
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Pandoc.Error
|
||||
|
||||
type MarkdownParser = Parser [Char] ParserState
|
||||
|
|
|
@ -39,6 +39,7 @@ module Text.Pandoc.Readers.MediaWiki ( readMediaWiki ) where
|
|||
import Text.Pandoc.Definition
|
||||
import qualified Text.Pandoc.Builder as B
|
||||
import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Pandoc.Options
|
||||
import Text.Pandoc.Readers.HTML ( htmlTag, isBlockTag, isCommentTag )
|
||||
import Text.Pandoc.XML ( fromEntities )
|
||||
|
|
|
@ -46,6 +46,7 @@ import Control.Monad
|
|||
|
||||
import Data.Foldable
|
||||
|
||||
import Text.Pandoc.Compat.Monoid
|
||||
import Text.Pandoc.Readers.Odt.Arrows.Utils
|
||||
import Text.Pandoc.Readers.Odt.Generic.Fallible
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ import qualified Data.Foldable as F
|
|||
|
||||
import Text.Pandoc.Readers.Odt.Generic.Fallible
|
||||
import Text.Pandoc.Readers.Odt.Generic.Utils
|
||||
|
||||
import Text.Pandoc.Compat.Monoid
|
||||
|
||||
and2 :: (Arrow a) => a b c -> a b c' -> a b (c,c')
|
||||
and2 = (&&&)
|
||||
|
|
|
@ -41,7 +41,7 @@ module Text.Pandoc.Readers.Odt.Generic.Fallible where
|
|||
|
||||
import Control.Applicative
|
||||
import Control.Monad
|
||||
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import qualified Data.Foldable as F
|
||||
|
||||
-- | Default for now. Will probably become a class at some point.
|
||||
|
|
|
@ -34,6 +34,7 @@ import qualified Text.Pandoc.Builder as B
|
|||
import Text.Pandoc.Builder ( Inlines, Blocks, HasMeta(..),
|
||||
trimInlines )
|
||||
import Text.Pandoc.Definition
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Pandoc.Options
|
||||
import qualified Text.Pandoc.Parsing as P
|
||||
import Text.Pandoc.Parsing hiding ( F, unF, askF, asksF, runF
|
||||
|
|
|
@ -48,7 +48,7 @@ import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
|
|||
import qualified Text.Pandoc.Builder as B
|
||||
import Data.Sequence (viewr, ViewR(..))
|
||||
import Data.Char (toLower, isHexDigit, isSpace)
|
||||
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Pandoc.Error
|
||||
|
||||
-- | Parse reStructuredText string and return Pandoc document.
|
||||
|
|
|
@ -64,6 +64,7 @@ import Text.HTML.TagSoup.Match
|
|||
import Data.List ( intercalate )
|
||||
import Data.Char ( digitToInt, isUpper)
|
||||
import Control.Monad ( guard, liftM, when )
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Printf
|
||||
import Debug.Trace (trace)
|
||||
import Text.Pandoc.Error
|
||||
|
|
|
@ -34,6 +34,7 @@ module Text.Pandoc.Readers.Txt2Tags ( readTxt2Tags
|
|||
|
||||
import qualified Text.Pandoc.Builder as B
|
||||
import Text.Pandoc.Builder ( Inlines, Blocks, trimInlines )
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Pandoc.Definition
|
||||
import Text.Pandoc.Options
|
||||
import Text.Pandoc.Shared (escapeURI,compactify', compactify'DL)
|
||||
|
|
|
@ -129,6 +129,7 @@ import System.IO (stderr)
|
|||
import System.IO.Temp
|
||||
import Text.HTML.TagSoup (renderTagsOptions, RenderOptions(..), Tag(..),
|
||||
renderOptions)
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import qualified Data.ByteString as BS
|
||||
import qualified Data.ByteString.Char8 as B8
|
||||
import Data.ByteString.Base64 (decodeLenient)
|
||||
|
|
|
@ -98,6 +98,7 @@ import Control.Monad (guard, when)
|
|||
import Data.Aeson (ToJSON(..), Value(..))
|
||||
import qualified Text.Parsec as P
|
||||
import Text.Parsec.Text (Parser)
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import qualified Data.Text as T
|
||||
import Data.Text (Text)
|
||||
import Data.Text.Encoding (encodeUtf8)
|
||||
|
|
|
@ -60,6 +60,7 @@ import Data.Unique (hashUnique, newUnique)
|
|||
import System.Random (randomRIO)
|
||||
import Text.Printf (printf)
|
||||
import qualified Control.Exception as E
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Pandoc.MIME (MimeType, getMimeType, getMimeTypeDef,
|
||||
extensionFromMimeType)
|
||||
import Control.Applicative ((<|>))
|
||||
|
|
|
@ -31,6 +31,7 @@ Conversion of 'Pandoc' documents to HTML.
|
|||
-}
|
||||
module Text.Pandoc.Writers.HTML ( writeHtml , writeHtmlString ) where
|
||||
import Text.Pandoc.Definition
|
||||
import Text.Pandoc.Compat.Monoid ((<>))
|
||||
import Text.Pandoc.Shared
|
||||
import Text.Pandoc.Writers.Shared
|
||||
import Text.Pandoc.Options
|
||||
|
|
Loading…
Add table
Reference in a new issue