Hello community,
here is the log from the commit of package ghc-pandoc-types for
openSUSE:Factory checked in at 2019-08-29 17:21:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-pandoc-types (Old)
and /work/SRC/openSUSE:Factory/.ghc-pandoc-types.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-pandoc-types"
Thu Aug 29 17:21:48 2019 rev:24 rq:726812 version:1.17.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-pandoc-types/ghc-pandoc-types.changes
2019-06-19 21:12:44.818762710 +0200
+++
/work/SRC/openSUSE:Factory/.ghc-pandoc-types.new.7948/ghc-pandoc-types.changes
2019-08-29 17:21:50.643324216 +0200
@@ -1,0 +2,16 @@
+Sat Aug 24 02:01:25 UTC 2019 - [email protected]
+
+- Update pandoc-types to version 1.17.6.
+ [1.17.6]
+
+ * Walk: export walk and query helpers (Albert Krewinkel) [API change].
+ The `walk*M` and `query*` functions are helpful when defining new
+ `Walkable` instances.
+ * Allow QuickCheck 2.13.
+ * Document meaning of Int in ListAttributes (#45).
+ * Update copyright year spans to include 2019 (Albert Krewinkel).
+ * Remove CPP instructions for GHC versions < 7.10 (Albert Krewinkel).
+ * update list of GHC versions used for testing (Albert Krewinkel).
+ * Fix compiler and hlint warnings (Pete Ryland).
+
+-------------------------------------------------------------------
Old:
----
pandoc-types-1.17.5.4.tar.gz
pandoc-types.cabal
New:
----
pandoc-types-1.17.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-pandoc-types.spec ++++++
--- /var/tmp/diff_new_pack.P3JLLH/_old 2019-08-29 17:21:51.091324142 +0200
+++ /var/tmp/diff_new_pack.P3JLLH/_new 2019-08-29 17:21:51.095324141 +0200
@@ -19,14 +19,13 @@
%global pkg_name pandoc-types
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 1.17.5.4
+Version: 1.17.6
Release: 0
Summary: Types for representing a structured document
License: GPL-2.0-only
Group: Development/Libraries/Haskell
URL: https://hackage.haskell.org/package/%{pkg_name}
Source0:
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
-Source1:
https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal#/%{pkg_name}.cabal
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-QuickCheck-devel
BuildRequires: ghc-aeson-devel
@@ -76,7 +75,6 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ pandoc-types-1.17.5.4.tar.gz -> pandoc-types-1.17.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/LICENSE
new/pandoc-types-1.17.6/LICENSE
--- old/pandoc-types-1.17.5.4/LICENSE 2018-10-23 19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/LICENSE 2019-08-23 20:00:14.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright (c) 2006-2016, John MacFarlane
+Copyright (c) 2006-2019, John MacFarlane
All rights reserved.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/Text/Pandoc/Arbitrary.hs
new/pandoc-types-1.17.6/Text/Pandoc/Arbitrary.hs
--- old/pandoc-types-1.17.5.4/Text/Pandoc/Arbitrary.hs 2018-10-23
19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/Text/Pandoc/Arbitrary.hs 2019-08-23
20:00:14.000000000 +0200
@@ -1,5 +1,5 @@
{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# LANGUAGE TypeSynonymInstances, FlexibleInstances, ScopedTypeVariables #-}
+{-# LANGUAGE FlexibleInstances, ScopedTypeVariables #-}
-- provides Arbitrary instance for Pandoc types
module Text.Pandoc.Arbitrary ()
where
@@ -16,9 +16,9 @@
arbAttr :: Gen Attr
arbAttr = do
id' <- elements ["","loc"]
- classes <- elements [[],["haskell"],["c","numberLines"]]
+ classes' <- elements [[],["haskell"],["c","numberLines"]]
keyvals <- elements [[],[("start","22")],[("a","11"),("b_2","a b c")]]
- return (id',classes,keyvals)
+ return (id',classes',keyvals)
instance Arbitrary Inlines where
arbitrary = (fromList :: [Inline] -> Inlines) <$> arbitrary
@@ -129,7 +129,7 @@
, (10, Code <$> arbAttr <*> realString)
, (5, elements [ RawInline (Format "html") "<a
id=\"eek\">"
, RawInline (Format "latex")
"\\my{command}" ])
- ] ++ [ x | x <- nesters, n > 1]
+ ] ++ [ x | n > 1, x <- nesters]
where nesters = [ (10, Emph <$> arbInlines (n-1))
, (10, Strong <$> arbInlines (n-1))
, (10, Strikeout <$> arbInlines (n-1))
@@ -205,7 +205,7 @@
<*> pure nullAttr
<*> arbInlines (n-1))
, (2, pure HorizontalRule)
- ] ++ [x | x <- nesters, n > 0]
+ ] ++ [x | n > 0, x <- nesters]
where nesters = [ (5, BlockQuote <$> listOf1 (arbBlock (n-1)))
, (5, OrderedList <$> ((,,) <$> (arbitrary `suchThat` (> 0))
<*> arbitrary
@@ -269,7 +269,7 @@
return $ setMeta "title" x1
$ setMeta "author" x2
$ setMeta "date" x3
- $ nullMeta
+ nullMeta
instance Arbitrary Alignment where
arbitrary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/Text/Pandoc/Builder.hs
new/pandoc-types-1.17.6/Text/Pandoc/Builder.hs
--- old/pandoc-types-1.17.5.4/Text/Pandoc/Builder.hs 2018-10-23
19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/Text/Pandoc/Builder.hs 2019-08-23
20:00:14.000000000 +0200
@@ -1,8 +1,8 @@
-{-# LANGUAGE TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses,
- DeriveDataTypeable, GeneralizedNewtypeDeriving, CPP, StandaloneDeriving,
- DeriveGeneric, DeriveTraversable #-}
+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, DeriveDataTypeable,
+ GeneralizedNewtypeDeriving, CPP, StandaloneDeriving, DeriveGeneric,
+ DeriveTraversable #-}
{-
-Copyright (C) 2010-2016 John MacFarlane
+Copyright (C) 2010-2019 John MacFarlane
All rights reserved.
@@ -36,7 +36,7 @@
{- |
Module : Text.Pandoc.Builder
- Copyright : Copyright (C) 2010-2016 John MacFarlane
+ Copyright : Copyright (C) 2010-2019 John MacFarlane
License : BSD3
Maintainer : John MacFarlane <[email protected]>
@@ -176,18 +176,7 @@
import Data.Data
import Control.Arrow ((***))
import GHC.Generics (Generic)
-import Data.Semigroup
-
-#if MIN_VERSION_base(4,5,0)
--- (<>) is defined in Data.Monoid
-#else
-infixr 6 <>
-
--- | An infix synonym for 'mappend'.
-(<>) :: Monoid m => m -> m -> m
-(<>) = mappend
-{-# INLINE (<>) #-}
-#endif
+import Data.Semigroup (Semigroup(..))
newtype Many a = Many { unMany :: Seq a }
deriving (Data, Ord, Eq, Typeable, Foldable, Traversable,
Functor, Show, Read)
@@ -316,8 +305,7 @@
text :: String -> Inlines
text = fromList . map conv . breakBySpaces
where breakBySpaces = groupBy sameCategory
- sameCategory x y = (is_space x && is_space y) ||
- (not $ is_space x || is_space y)
+ sameCategory x y = is_space x == is_space y
conv xs | all is_space xs =
if any is_newline xs
then SoftBreak
@@ -498,7 +486,7 @@
simpleTable headers rows =
table mempty (replicate numcols defaults) headers rows
where defaults = (AlignDefault, 0)
- numcols = case (headers:rows) of
+ numcols = case headers:rows of
[] -> 0
xs -> maximum (map length xs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/Text/Pandoc/Definition.hs
new/pandoc-types-1.17.6/Text/Pandoc/Definition.hs
--- old/pandoc-types-1.17.5.4/Text/Pandoc/Definition.hs 2018-10-23
19:04:12.000000000 +0200
+++ new/pandoc-types-1.17.6/Text/Pandoc/Definition.hs 2019-08-23
20:00:14.000000000 +0200
@@ -1,8 +1,8 @@
{-# LANGUAGE OverloadedStrings, DeriveDataTypeable, DeriveGeneric,
-FlexibleContexts, GeneralizedNewtypeDeriving, PatternGuards, CPP #-}
+ FlexibleContexts, GeneralizedNewtypeDeriving, PatternGuards, CPP #-}
{-
-Copyright (c) 2006-2016, John MacFarlane
+Copyright (c) 2006-2019, John MacFarlane
All rights reserved.
@@ -36,7 +36,7 @@
{- |
Module : Text.Pandoc.Definition
- Copyright : Copyright (C) 2006-2016 John MacFarlane
+ Copyright : Copyright (C) 2006-2019 John MacFarlane
License : BSD3
Maintainer : John MacFarlane <[email protected]>
@@ -81,17 +81,10 @@
import GHC.Generics (Generic)
import Data.String
import Data.Char (toLower)
-#if MIN_VERSION_base(4,8,0)
import Control.DeepSeq
-#else
-import Data.Monoid (Monoid (mappend, mempty))
-import Control.Applicative ((<$>), (<*>))
-import Control.DeepSeq (NFData(..))
-import Control.DeepSeq.Generics
-#endif
import Paths_pandoc_types (version)
import Data.Version (Version, versionBranch)
-import Data.Semigroup
+import Data.Semigroup (Semigroup(..))
data Pandoc = Pandoc Meta [Block]
deriving (Eq, Ord, Read, Show, Typeable, Data, Generic)
@@ -112,7 +105,7 @@
-- note: M.union is left-biased, so if there are fields in both m1
-- and m2, m1 wins.
instance Monoid Meta where
- mempty = Meta (M.empty)
+ mempty = Meta M.empty
mappend = (<>)
data MetaValue = MetaMap (M.Map String MetaValue)
@@ -174,7 +167,8 @@
| AlignCenter
| AlignDefault deriving (Eq, Ord, Show, Read, Typeable, Data,
Generic)
--- | List attributes.
+-- | List attributes. The first element of the triple is the
+-- start number of the list.
type ListAttributes = (Int, ListNumberStyle, ListNumberDelim)
-- | Style of list numbers.
@@ -292,10 +286,10 @@
-- ToJSON/FromJSON instances. We do this by hand instead of deriving
-- from generics, so we can have more control over the format.
-taggedNoContent :: [Char] -> Value
+taggedNoContent :: String -> Value
taggedNoContent x = object [ "t" .= x ]
-tagged :: ToJSON a => [Char] -> a -> Value
+tagged :: ToJSON a => String -> a -> Value
tagged x y = object [ "t" .= x, "c" .= y ]
instance FromJSON MetaValue where
@@ -529,12 +523,12 @@
"DefinitionList" -> DefinitionList <$> v .: "c"
"Header" -> do (n, attr, ils) <- v .: "c"
return $ Header n attr ils
- "HorizontalRule" -> return $ HorizontalRule
+ "HorizontalRule" -> return HorizontalRule
"Table" -> do (cpt, align, wdths, hdr, rows) <- v .: "c"
return $ Table cpt align wdths hdr rows
"Div" -> do (attr, blks) <- v .: "c"
return $ Div attr blks
- "Null" -> return $ Null
+ "Null" -> return Null
_ -> mempty
parseJSON _ = mempty
instance ToJSON Block where
@@ -580,7 +574,6 @@
]
-- Instances for deepseq
-#if MIN_VERSION_base(4,8,0)
instance NFData MetaValue
instance NFData Meta
instance NFData Citation
@@ -594,21 +587,6 @@
instance NFData ListNumberStyle
instance NFData Block
instance NFData Pandoc
-#else
-instance NFData MetaValue where rnf = genericRnf
-instance NFData Meta where rnf = genericRnf
-instance NFData Citation where rnf = genericRnf
-instance NFData Alignment where rnf = genericRnf
-instance NFData Inline where rnf = genericRnf
-instance NFData MathType where rnf = genericRnf
-instance NFData Format where rnf = genericRnf
-instance NFData CitationMode where rnf = genericRnf
-instance NFData QuoteType where rnf = genericRnf
-instance NFData ListNumberDelim where rnf = genericRnf
-instance NFData ListNumberStyle where rnf = genericRnf
-instance NFData Block where rnf = genericRnf
-instance NFData Pandoc where rnf = genericRnf
-#endif
pandocTypesVersion :: Version
pandocTypesVersion = version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/Text/Pandoc/Generic.hs
new/pandoc-types-1.17.6/Text/Pandoc/Generic.hs
--- old/pandoc-types-1.17.5.4/Text/Pandoc/Generic.hs 2018-10-23
19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/Text/Pandoc/Generic.hs 2019-08-23
20:00:14.000000000 +0200
@@ -1,6 +1,6 @@
{-# LANGUAGE CPP #-}
{-
-Copyright (c) 2006-2016, John MacFarlane
+Copyright (c) 2006-2019, John MacFarlane
All rights reserved.
@@ -34,7 +34,7 @@
{- |
Module : Text.Pandoc.Generic
- Copyright : Copyright (C) 2006-2010 John MacFarlane
+ Copyright : Copyright (C) 2006-2019 John MacFarlane
License : BSD3
Maintainer : John MacFarlane <[email protected]>
@@ -120,10 +120,6 @@
module Text.Pandoc.Generic where
import Data.Generics
-#if MIN_VERSION_base(4,8,0)
-#else
-import Data.Monoid
-#endif
-- | Applies a transformation on @a@s to matching elements in a @b@,
-- moving from the bottom of the structure up.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/Text/Pandoc/JSON.hs
new/pandoc-types-1.17.6/Text/Pandoc/JSON.hs
--- old/pandoc-types-1.17.5.4/Text/Pandoc/JSON.hs 2018-10-23
19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/Text/Pandoc/JSON.hs 2019-08-23 20:00:14.000000000
+0200
@@ -1,6 +1,6 @@
{-# LANGUAGE FlexibleInstances, FlexibleContexts #-}
{-
-Copyright (c) 2013-2016, John MacFarlane
+Copyright (c) 2013-2019, John MacFarlane
All rights reserved.
@@ -34,7 +34,7 @@
{- |
Module : Text.Pandoc.JSON
- Copyright : Copyright (C) 2013-2016 John MacFarlane
+ Copyright : Copyright (C) 2013-2019 John MacFarlane
License : BSD3
Maintainer : John MacFarlane <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/Text/Pandoc/Walk.hs
new/pandoc-types-1.17.6/Text/Pandoc/Walk.hs
--- old/pandoc-types-1.17.5.4/Text/Pandoc/Walk.hs 2018-10-23
19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/Text/Pandoc/Walk.hs 2019-08-23 20:00:14.000000000
+0200
@@ -6,14 +6,9 @@
#if MIN_VERSION_base(4,9,0)
{-# OPTIONS_GHC -fno-warn-redundant-constraints -O2 #-}
#endif
-#if MIN_VERSION_base(4,8,0)
#define OVERLAPS {-# OVERLAPPING #-}
-#else
-{-# LANGUAGE OverlappingInstances #-}
-#define OVERLAPS
-#endif
{-
-Copyright (c) 2013-2017, John MacFarlane
+Copyright (c) 2013-2019, John MacFarlane
All rights reserved.
@@ -47,7 +42,7 @@
{- |
Module : Text.Pandoc.Walk
- Copyright : Copyright (C) 2013 John MacFarlane
+ Copyright : Copyright (C) 2013-2019 John MacFarlane
License : BSD3
Maintainer : John MacFarlane <[email protected]>
@@ -91,7 +86,19 @@
-}
-module Text.Pandoc.Walk (Walkable(..))
+module Text.Pandoc.Walk
+ ( Walkable(..)
+ , queryBlock
+ , queryCitation
+ , queryInline
+ , queryMetaValue
+ , queryPandoc
+ , walkBlockM
+ , walkCitationM
+ , walkInlineM
+ , walkMetaValueM
+ , walkPandocM
+ )
where
import Control.Applicative (Applicative ((<*>), pure), (<$>))
import Control.Monad ((>=>))
@@ -101,11 +108,7 @@
import Data.Traversable (Traversable)
import qualified Data.Foldable as F
import Data.Foldable (Foldable)
-#if MIN_VERSION_base(4,8,0)
import Data.Monoid ((<>))
-#else
-import Data.Monoid
-#endif
class Walkable a b where
-- | @walk f x@ walks the structure @x@ (bottom up) and replaces every
@@ -124,6 +127,7 @@
walkM f = T.mapM (walkM f)
query f = F.foldMap (query f)
+-- Walk pairs by handling both elements, then combine the results.
instance OVERLAPS
(Walkable a b, Walkable a c) => Walkable a (b,c) where
walk f (x,y) = (walk f x, walk f y)
@@ -142,24 +146,24 @@
query f inlns = f inlns <> mconcat (map (queryInline f) inlns)
instance Walkable [Inline] Inline where
- walkM f = walkInlineM f
- query f = queryInline f
+ walkM = walkInlineM
+ query = queryInline
instance Walkable Inline Block where
- walkM f = walkBlockM f
- query f = queryBlock f
+ walkM = walkBlockM
+ query = queryBlock
instance Walkable [Inline] Block where
- walkM f = walkBlockM f
- query f = queryBlock f
+ walkM = walkBlockM
+ query = queryBlock
instance Walkable Block Block where
walkM f x = walkBlockM f x >>= f
query f x = f x <> queryBlock f x
instance Walkable [Block] Block where
- walkM f = walkBlockM f
- query f = queryBlock f
+ walkM = walkBlockM
+ query = queryBlock
instance OVERLAPS
Walkable [Block] [Block] where
@@ -167,13 +171,16 @@
query f blks = f blks <> mconcat (map (queryBlock f) blks)
instance Walkable Block Inline where
- walkM f = walkInlineM f
- query f = queryInline f
+ walkM = walkInlineM
+ query = queryInline
instance Walkable [Block] Inline where
- walkM f = walkInlineM f
- query f = queryInline f
+ walkM = walkInlineM
+ query = queryInline
+--
+-- Walk Pandoc
+--
instance Walkable Block Pandoc where
walkM = walkPandocM
query = queryPandoc
@@ -194,6 +201,9 @@
walkM f = f
query f = f
+--
+-- Walk Meta
+--
instance Walkable Meta Meta where
walkM f = f
query f = f
@@ -214,6 +224,9 @@
walkM f (Meta metamap) = Meta <$> walkM f metamap
query f (Meta metamap) = query f metamap
+--
+-- Walk MetaValue
+--
instance Walkable Inline MetaValue where
walkM = walkMetaValueM
query = queryMetaValue
@@ -230,6 +243,9 @@
walkM = walkMetaValueM
query = queryMetaValue
+--
+-- Walk Citation
+--
instance Walkable Inline Citation where
walkM = walkCitationM
query = queryCitation
@@ -246,6 +262,11 @@
walkM = walkCitationM
query = queryCitation
+-- | Helper method to walk to elements nested below @'Inline'@ nodes.
+--
+-- When walking an inline with this function, only the contents of the
traversed
+-- inline element may change. The element itself, i.e. its constructor, cannot
+-- be changed.
walkInlineM :: (Walkable a Citation, Walkable a [Block],
Walkable a [Inline], Monad m, Applicative m, Functor m)
=> (a -> m a) -> Inline -> m Inline
@@ -269,37 +290,8 @@
walkInlineM _ x@Math {} = return x
walkInlineM _ x@RawInline {} = return x
-walkBlockM :: (Walkable a [Block], Walkable a [Inline], Monad m,
- Applicative m, Functor m)
- => (a -> m a) -> Block -> m Block
-walkBlockM f (Para xs) = Para <$> walkM f xs
-walkBlockM f (Plain xs) = Plain <$> walkM f xs
-walkBlockM f (LineBlock xs) = LineBlock <$> walkM f xs
-walkBlockM f (BlockQuote xs) = BlockQuote <$> walkM f xs
-walkBlockM f (OrderedList a cs) = OrderedList a <$> walkM f cs
-walkBlockM f (BulletList cs) = BulletList <$> walkM f cs
-walkBlockM f (DefinitionList xs) = DefinitionList <$> walkM f xs
-walkBlockM f (Header lev attr xs) = Header lev attr <$> walkM f xs
-walkBlockM f (Div attr bs') = Div attr <$> walkM f bs'
-walkBlockM _ x@CodeBlock {} = return x
-walkBlockM _ x@RawBlock {} = return x
-walkBlockM _ HorizontalRule = return HorizontalRule
-walkBlockM _ Null = return Null
-walkBlockM f (Table capt as ws hs rs) = do capt' <- walkM f capt
- hs' <- walkM f hs
- rs' <- walkM f rs
- return $ Table capt' as ws hs' rs'
-
-walkMetaValueM :: (Walkable a MetaValue, Walkable a [Block],
- Walkable a [Inline], Monad f, Applicative f, Functor f)
- => (a -> f a) -> MetaValue -> f MetaValue
-walkMetaValueM f (MetaList xs) = MetaList <$> walkM f xs
-walkMetaValueM _ (MetaBool b) = return $ MetaBool b
-walkMetaValueM _ (MetaString s) = return $ MetaString s
-walkMetaValueM f (MetaInlines xs) = MetaInlines <$> walkM f xs
-walkMetaValueM f (MetaBlocks bs) = MetaBlocks <$> walkM f bs
-walkMetaValueM f (MetaMap m) = MetaMap <$> walkM f m
-
+-- | Perform a query on elements nested below an @'Inline'@ element by
+-- querying nested lists of @Inline@s, @Block@s, or @Citation@s.
queryInline :: (Walkable a Citation, Walkable a [Block],
Walkable a [Inline], Monoid c)
=> (a -> c) -> Inline -> c
@@ -323,6 +315,35 @@
queryInline f (Note bs) = query f bs
queryInline f (Span _ xs) = query f xs
+
+-- | Helper method to walk to elements nested below @'Block'@ nodes.
+--
+-- When walking a block with this function, only the contents of the traversed
+-- block element may change. The element itself, i.e. its constructor, its
@'Attr'@,
+-- and its raw text value, will remain unchanged.
+walkBlockM :: (Walkable a [Block], Walkable a [Inline], Monad m,
+ Applicative m, Functor m)
+ => (a -> m a) -> Block -> m Block
+walkBlockM f (Para xs) = Para <$> walkM f xs
+walkBlockM f (Plain xs) = Plain <$> walkM f xs
+walkBlockM f (LineBlock xs) = LineBlock <$> walkM f xs
+walkBlockM f (BlockQuote xs) = BlockQuote <$> walkM f xs
+walkBlockM f (OrderedList a cs) = OrderedList a <$> walkM f cs
+walkBlockM f (BulletList cs) = BulletList <$> walkM f cs
+walkBlockM f (DefinitionList xs) = DefinitionList <$> walkM f xs
+walkBlockM f (Header lev attr xs) = Header lev attr <$> walkM f xs
+walkBlockM f (Div attr bs') = Div attr <$> walkM f bs'
+walkBlockM _ x@CodeBlock {} = return x
+walkBlockM _ x@RawBlock {} = return x
+walkBlockM _ HorizontalRule = return HorizontalRule
+walkBlockM _ Null = return Null
+walkBlockM f (Table capt as ws hs rs) = do capt' <- walkM f capt
+ hs' <- walkM f hs
+ rs' <- walkM f rs
+ return $ Table capt' as ws hs' rs'
+
+-- | Perform a query on elements nested below a @'Block'@ element by
+-- querying all directly nested lists of @Inline@s or @Block@s.
queryBlock :: (Walkable a Citation, Walkable a [Block],
Walkable a [Inline], Monoid c)
=> (a -> c) -> Block -> c
@@ -341,6 +362,24 @@
queryBlock f (Div _ bs) = query f bs
queryBlock _ Null = mempty
+-- | Helper method to walk to elements nested below @'MetaValue'@ nodes.
+--
+-- When walking a meta value with this function, only the contents of the
+-- traversed meta value element may change. @MetaBool@ and @MetaString@ will
+-- always remain unchanged.
+walkMetaValueM :: (Walkable a MetaValue, Walkable a [Block],
+ Walkable a [Inline], Monad f, Applicative f, Functor f)
+ => (a -> f a) -> MetaValue -> f MetaValue
+walkMetaValueM f (MetaList xs) = MetaList <$> walkM f xs
+walkMetaValueM _ (MetaBool b) = return $ MetaBool b
+walkMetaValueM _ (MetaString s) = return $ MetaString s
+walkMetaValueM f (MetaInlines xs) = MetaInlines <$> walkM f xs
+walkMetaValueM f (MetaBlocks bs) = MetaBlocks <$> walkM f bs
+walkMetaValueM f (MetaMap m) = MetaMap <$> walkM f m
+
+-- | Perform a query on elements nested below a @'MetaValue'@ element by
+-- querying all directly nested lists of @Inline@s, list of @Block@s, or
+-- lists or maps of @MetaValue@s.
queryMetaValue :: (Walkable a MetaValue, Walkable a [Block],
Walkable a [Inline], Monoid c)
=> (a -> c) -> MetaValue -> c
@@ -351,6 +390,11 @@
queryMetaValue f (MetaBlocks bs) = query f bs
queryMetaValue f (MetaMap m) = query f m
+-- | Helper method to walk to elements nested below @'Citation'@ nodes.
+--
+-- The non-inline contents of a citation will remain unchanged during
traversal.
+-- Only the inline contents, viz. the citation's prefix and postfix, will be
+-- traversed further and can thus be changed during this operation.
walkCitationM :: (Walkable a [Inline], Monad m, Applicative m, Functor m)
=> (a -> m a) -> Citation -> m Citation
walkCitationM f (Citation id' pref suff mode notenum hash) =
@@ -358,10 +402,13 @@
suff' <- walkM f suff
return $ Citation id' pref' suff' mode notenum hash
+-- | Perform a query on elements nested below a @'Citation'@ element by
+-- querying the prefix and postfix @Inline@ lists.
queryCitation :: (Walkable a [Inline], Monoid c)
=> (a -> c) -> Citation -> c
queryCitation f (Citation _ pref suff _ _ _) = query f pref <> query f suff
+-- | Helper method to walk the components of a Pandoc element.
walkPandocM :: (Walkable a Meta, Walkable a [Block], Monad m,
Applicative m, Functor m)
=> (a -> m a) -> Pandoc -> m Pandoc
@@ -369,6 +416,8 @@
bs' <- walkM f bs
return $ Pandoc m' bs'
+-- | Query a pandoc element by recursing first into its @'Meta'@ data
+-- and then append the result of recursing into the list of @'Block'@s.
queryPandoc :: (Walkable a Meta, Walkable a [Block], Monoid c)
=> (a -> c) -> Pandoc -> c
queryPandoc f (Pandoc m bs) = query f m <> query f bs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/benchmark/bench.hs
new/pandoc-types-1.17.6/benchmark/bench.hs
--- old/pandoc-types-1.17.5.4/benchmark/bench.hs 2018-10-23
19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/benchmark/bench.hs 2019-08-23 20:00:14.000000000
+0200
@@ -6,7 +6,7 @@
import Text.Pandoc.Builder
main :: IO ()
-main = do
+main =
defaultMain [
bench "simple walk" $ nf (walk prependZeroWidthSpace) mydoc
, bench "walk concatMap" $ nf (walk $ concatMap prependZeroWidthSpace')
mydoc
@@ -23,7 +23,7 @@
prependZeroWidthSpace'' :: [Inline] -> [Inline]
prependZeroWidthSpace'' (Str s : xs) =
- (Str ('\8203' : s) : prependZeroWidthSpace'' xs)
+ Str ('\8203' : s) : prependZeroWidthSpace'' xs
prependZeroWidthSpace'' (x : xs) =
x : prependZeroWidthSpace'' xs
prependZeroWidthSpace'' [] = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/changelog
new/pandoc-types-1.17.6/changelog
--- old/pandoc-types-1.17.5.4/changelog 2018-10-23 19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/changelog 2019-08-23 20:04:52.000000000 +0200
@@ -1,3 +1,15 @@
+[1.17.6]
+
+ * Walk: export walk and query helpers (Albert Krewinkel) [API change].
+ The `walk*M` and `query*` functions are helpful when defining new
+ `Walkable` instances.
+ * Allow QuickCheck 2.13.
+ * Document meaning of Int in ListAttributes (#45).
+ * Update copyright year spans to include 2019 (Albert Krewinkel).
+ * Remove CPP instructions for GHC versions < 7.10 (Albert Krewinkel).
+ * update list of GHC versions used for testing (Albert Krewinkel).
+ * Fix compiler and hlint warnings (Pete Ryland).
+
[1.17.5.4]
* Put NFData in scope for ghc < 7.10.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/pandoc-types.cabal
new/pandoc-types-1.17.6/pandoc-types.cabal
--- old/pandoc-types-1.17.5.4/pandoc-types.cabal 2018-10-23
19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/pandoc-types.cabal 2019-08-23 20:00:39.000000000
+0200
@@ -1,5 +1,5 @@
Name: pandoc-types
-Version: 1.17.5.4
+Version: 1.17.6
Synopsis: Types for representing a structured document
Description: @Text.Pandoc.Definition@ defines the 'Pandoc' data
structure, which is used by pandoc to represent
@@ -22,17 +22,18 @@
@Text.Pandoc.JSON@ provides functions for serializing
and deserializing a @Pandoc@ structure to and from JSON.
-Homepage: http://johnmacfarlane.net/pandoc
+Homepage: https://pandoc.org/
License: BSD3
License-file: LICENSE
Author: John MacFarlane
Maintainer: [email protected]
Bug-Reports: https://github.com/jgm/pandoc-types/issues
-Copyright: (c) 2006-2017 John MacFarlane
+Copyright: (c) 2006-2019 John MacFarlane
Category: Text
Build-type: Simple
Cabal-version: >=1.8
-Tested-With: GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
+Tested-With: GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.2,
+ GHC == 8.6.5
Extra-Source-Files: changelog
Source-repository head
type: git
@@ -48,19 +49,15 @@
Other-modules: Paths_pandoc_types
Build-depends: base >= 4.5 && < 5,
containers >= 0.3,
+ deepseq >= 1.4.1 && < 1.5,
syb >= 0.1 && < 0.8,
ghc-prim >= 0.2,
bytestring >= 0.9 && < 0.11,
aeson >= 0.6.2 && < 1.5,
transformers >= 0.2 && < 0.6,
- QuickCheck >= 2.4 && < 2.13
+ QuickCheck >= 2.4 && < 2.14
if !impl(ghc >= 8.0)
Build-depends: semigroups == 0.18.*
- if impl(ghc < 7.10)
- Build-depends: deepseq-generics >= 0.2 && < 0.3,
- deepseq >= 1.3 && < 1.5
- else
- Build-depends: deepseq >= 1.4.1 && < 1.5
ghc-options: -Wall
test-suite test-pandoc-types
@@ -76,7 +73,7 @@
test-framework >= 0.3 && < 0.9,
test-framework-hunit >= 0.2 && < 0.4,
test-framework-quickcheck2 >= 0.2.9 && < 0.4,
- QuickCheck >= 2.4 && < 2.13,
+ QuickCheck >= 2.4 && < 2.14,
HUnit >= 1.2 && < 1.7,
string-qq == 0.0.2
ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall -O2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pandoc-types-1.17.5.4/test/test-pandoc-types.hs
new/pandoc-types-1.17.6/test/test-pandoc-types.hs
--- old/pandoc-types-1.17.5.4/test/test-pandoc-types.hs 2018-10-23
19:04:13.000000000 +0200
+++ new/pandoc-types-1.17.6/test/test-pandoc-types.hs 2019-08-23
20:00:14.000000000 +0200
@@ -15,10 +15,6 @@
import qualified Data.Map as M
import Data.String.QQ
import Data.ByteString.Lazy (ByteString)
-#if MIN_VERSION_base(4,8,0)
-#else
-import Data.Monoid
-#endif
import qualified Data.Monoid as Monoid
@@ -367,7 +363,7 @@
-- cells in order to avoid syntax errors after conversion, see
-- jgm/pandoc#4059.
t_tableSan :: Test
-t_tableSan = testCase "table sanitisation" $ assertion
+t_tableSan = testCase "table sanitisation" assertion
where assertion = assertEqual err expected generated
err = "sanitisation error"
generated = simpleTable