From 67c5c7a5752591b1f894636374e730904c34a1d5 Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Wed, 30 Jul 2014 13:34:27 -0700
Subject: [PATCH] Moved MediaBag back from Shared to Options, to avoid module
 cycle.

---
 src/Text/Pandoc.hs         |  2 +-
 src/Text/Pandoc/Options.hs |  6 +-----
 src/Text/Pandoc/Shared.hs  | 11 +++++++++++
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/Text/Pandoc.hs b/src/Text/Pandoc.hs
index d9af9993b..11553383c 100644
--- a/src/Text/Pandoc.hs
+++ b/src/Text/Pandoc.hs
@@ -160,7 +160,7 @@ import Text.Pandoc.Writers.Haddock
 import Text.Pandoc.Writers.Custom
 import Text.Pandoc.Templates
 import Text.Pandoc.Options
-import Text.Pandoc.Shared (safeRead, warn)
+import Text.Pandoc.Shared (safeRead, warn, MediaBag)
 import Data.Aeson
 import qualified Data.ByteString.Lazy as BL
 import Data.List (intercalate)
diff --git a/src/Text/Pandoc/Options.hs b/src/Text/Pandoc/Options.hs
index 0c21afcc7..961e8559c 100644
--- a/src/Text/Pandoc/Options.hs
+++ b/src/Text/Pandoc/Options.hs
@@ -42,7 +42,6 @@ module Text.Pandoc.Options ( Extension(..)
                            , EPUBVersion (..)
                            , WriterOptions (..)
                            , TrackChanges (..)
-                           , MediaBag
                            , def
                            , isEnabled
                            ) where
@@ -50,7 +49,7 @@ import Data.Set (Set)
 import qualified Data.Set as Set
 import Data.Default
 import Text.Pandoc.Highlighting (Style, pygments)
-import qualified Data.ByteString.Lazy as BL
+import Text.Pandoc.Shared (MediaBag)
 import qualified Data.Map as M
 
 -- | Individually selectable syntax extensions.
@@ -277,9 +276,6 @@ data TrackChanges = AcceptChanges
                   | AllChanges
                   deriving (Show, Read, Eq)
 
--- | A map of media paths to their binary representations.
-type MediaBag = M.Map String BL.ByteString
-
 -- | Options for writers
 data WriterOptions = WriterOptions
   { writerStandalone       :: Bool   -- ^ Include header and footer
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index 64c07285d..d296888d6 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -48,6 +48,8 @@ module Text.Pandoc.Shared (
                      toRomanNumeral,
                      escapeURI,
                      tabFilter,
+                     -- * Media Handling
+                     MediaBag,
                      -- * Date/time
                      normalizeDate,
                      -- * Pandoc block and inline list processing
@@ -117,6 +119,7 @@ import Text.HTML.TagSoup (renderTagsOptions, RenderOptions(..), Tag(..),
          renderOptions)
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Char8 as B8
+import qualified Data.ByteString.Lazy as BL
 import Text.Pandoc.Compat.Monoid
 import Data.ByteString.Base64 (decodeLenient)
 import Data.Sequence (ViewR(..), ViewL(..), viewl, viewr)
@@ -283,6 +286,14 @@ tabFilter tabStop =
         x : go (spsToNextStop - 1) xs
   in  go tabStop
 
+---
+--- Media handling
+---
+
+-- | A map of media paths to their binary representations.
+
+type MediaBag = M.Map String BL.ByteString
+
 --
 -- Date/time
 --