pandoc-types-1.22.2.1: Types for representing a structured document
CopyrightCopyright (C) 2013-2019 John MacFarlane
LicenseBSD3
MaintainerJohn MacFarlane <jgm@berkeley.edu>
Stabilityalpha
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Text.Pandoc.Walk

Description

Functions for manipulating Pandoc documents or extracting information from them by walking the Pandoc structure (or intermediate structures like '[Block]' or '[Inline]'. These are faster (by a factor of four or five) than the generic functions defined in Text.Pandoc.Generic.

Here's a simple example, defining a function that replaces all the level 3+ headers in a document with regular paragraphs in ALL CAPS:

import Text.Pandoc.Definition
import Text.Pandoc.Walk
import Data.Char (toUpper)

modHeader :: Block -> Block
modHeader (Header n _ xs) | n >= 3 = Para $ walk allCaps xs
modHeader x = x

allCaps :: Inline -> Inline
allCaps (Str xs) = Str $ map toUpper xs
allCaps x = x

changeHeaders :: Pandoc -> Pandoc
changeHeaders = walk modHeader

query can be used, for example, to compile a list of URLs linked to in a document:

extractURL :: Inline -> [Text]
extractURL (Link _ _ (u,_)) = [u]
extractURL (Image _ _ (u,_)) = [u]
extractURL _ = []

extractURLs :: Pandoc -> [Text]
extractURLs = query extractURL
Synopsis

Documentation

class Walkable a b where Source #

Minimal complete definition

walkM, query

Methods

walk :: (a -> a) -> b -> b Source #

walk f x walks the structure x (bottom up) and replaces every occurrence of an a with the result of applying f to it.

walkM :: (Monad m, Applicative m, Functor m) => (a -> m a) -> b -> m b Source #

A monadic version of walk.

query :: Monoid c => (a -> c) -> b -> c Source #

query f x walks the structure x (bottom up) and applies f to every a, appending the results.

Instances

Instances details
Walkable Inline Citation Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> Citation -> Citation Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> Citation -> m Citation Source #

query :: Monoid c => (Inline -> c) -> Citation -> c Source #

Walkable Inline Inline Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> Inline -> Inline Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> Inline -> m Inline Source #

query :: Monoid c => (Inline -> c) -> Inline -> c Source #

Walkable Inline Block Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> Block -> Block Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> Block -> m Block Source #

query :: Monoid c => (Inline -> c) -> Block -> c Source #

Walkable Inline Cell Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> Cell -> Cell Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> Cell -> m Cell Source #

query :: Monoid c => (Inline -> c) -> Cell -> c Source #

Walkable Inline Caption Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> Caption -> Caption Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> Caption -> m Caption Source #

query :: Monoid c => (Inline -> c) -> Caption -> c Source #

Walkable Inline TableFoot Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> TableFoot -> TableFoot Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> TableFoot -> m TableFoot Source #

query :: Monoid c => (Inline -> c) -> TableFoot -> c Source #

Walkable Inline TableBody Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> TableBody -> TableBody Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> TableBody -> m TableBody Source #

query :: Monoid c => (Inline -> c) -> TableBody -> c Source #

Walkable Inline TableHead Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> TableHead -> TableHead Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> TableHead -> m TableHead Source #

query :: Monoid c => (Inline -> c) -> TableHead -> c Source #

Walkable Inline Row Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> Row -> Row Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> Row -> m Row Source #

query :: Monoid c => (Inline -> c) -> Row -> c Source #

Walkable Inline MetaValue Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> MetaValue -> MetaValue Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> MetaValue -> m MetaValue Source #

query :: Monoid c => (Inline -> c) -> MetaValue -> c Source #

Walkable Inline Meta Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> Meta -> Meta Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> Meta -> m Meta Source #

query :: Monoid c => (Inline -> c) -> Meta -> c Source #

Walkable Inline Pandoc Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Inline -> Inline) -> Pandoc -> Pandoc Source #

walkM :: (Monad m, Applicative m, Functor m) => (Inline -> m Inline) -> Pandoc -> m Pandoc Source #

query :: Monoid c => (Inline -> c) -> Pandoc -> c Source #

Walkable Block Citation Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> Citation -> Citation Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> Citation -> m Citation Source #

query :: Monoid c => (Block -> c) -> Citation -> c Source #

Walkable Block Inline Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> Inline -> Inline Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> Inline -> m Inline Source #

query :: Monoid c => (Block -> c) -> Inline -> c Source #

Walkable Block Block Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> Block -> Block Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> Block -> m Block Source #

query :: Monoid c => (Block -> c) -> Block -> c Source #

Walkable Block Cell Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> Cell -> Cell Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> Cell -> m Cell Source #

query :: Monoid c => (Block -> c) -> Cell -> c Source #

Walkable Block Caption Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> Caption -> Caption Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> Caption -> m Caption Source #

query :: Monoid c => (Block -> c) -> Caption -> c Source #

Walkable Block TableFoot Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> TableFoot -> TableFoot Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> TableFoot -> m TableFoot Source #

query :: Monoid c => (Block -> c) -> TableFoot -> c Source #

Walkable Block TableBody Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> TableBody -> TableBody Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> TableBody -> m TableBody Source #

query :: Monoid c => (Block -> c) -> TableBody -> c Source #

Walkable Block TableHead Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> TableHead -> TableHead Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> TableHead -> m TableHead Source #

query :: Monoid c => (Block -> c) -> TableHead -> c Source #

Walkable Block Row Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> Row -> Row Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> Row -> m Row Source #

query :: Monoid c => (Block -> c) -> Row -> c Source #

Walkable Block MetaValue Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> MetaValue -> MetaValue Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> MetaValue -> m MetaValue Source #

query :: Monoid c => (Block -> c) -> MetaValue -> c Source #

Walkable Block Meta Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> Meta -> Meta Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> Meta -> m Meta Source #

query :: Monoid c => (Block -> c) -> Meta -> c Source #

Walkable Block Pandoc Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Block -> Block) -> Pandoc -> Pandoc Source #

walkM :: (Monad m, Applicative m, Functor m) => (Block -> m Block) -> Pandoc -> m Pandoc Source #

query :: Monoid c => (Block -> c) -> Pandoc -> c Source #

Walkable MetaValue MetaValue Source # 
Instance details

Defined in Text.Pandoc.Walk

Walkable MetaValue Meta Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (MetaValue -> MetaValue) -> Meta -> Meta Source #

walkM :: (Monad m, Applicative m, Functor m) => (MetaValue -> m MetaValue) -> Meta -> m Meta Source #

query :: Monoid c => (MetaValue -> c) -> Meta -> c Source #

Walkable MetaValue Pandoc Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (MetaValue -> MetaValue) -> Pandoc -> Pandoc Source #

walkM :: (Monad m, Applicative m, Functor m) => (MetaValue -> m MetaValue) -> Pandoc -> m Pandoc Source #

query :: Monoid c => (MetaValue -> c) -> Pandoc -> c Source #

Walkable Meta Meta Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Meta -> Meta) -> Meta -> Meta Source #

walkM :: (Monad m, Applicative m, Functor m) => (Meta -> m Meta) -> Meta -> m Meta Source #

query :: Monoid c => (Meta -> c) -> Meta -> c Source #

Walkable Meta Pandoc Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Meta -> Meta) -> Pandoc -> Pandoc Source #

walkM :: (Monad m, Applicative m, Functor m) => (Meta -> m Meta) -> Pandoc -> m Pandoc Source #

query :: Monoid c => (Meta -> c) -> Pandoc -> c Source #

Walkable Pandoc Pandoc Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (Pandoc -> Pandoc) -> Pandoc -> Pandoc Source #

walkM :: (Monad m, Applicative m, Functor m) => (Pandoc -> m Pandoc) -> Pandoc -> m Pandoc Source #

query :: Monoid c => (Pandoc -> c) -> Pandoc -> c Source #

(Foldable t, Traversable t, Walkable a b) => Walkable a (t b) Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (a -> a) -> t b -> t b Source #

walkM :: (Monad m, Applicative m, Functor m) => (a -> m a) -> t b -> m (t b) Source #

query :: Monoid c => (a -> c) -> t b -> c Source #

(Walkable a b, Walkable a c) => Walkable a (b, c) Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: (a -> a) -> (b, c) -> (b, c) Source #

walkM :: (Monad m, Applicative m, Functor m) => (a -> m a) -> (b, c) -> m (b, c) Source #

query :: Monoid c0 => (a -> c0) -> (b, c) -> c0 Source #

Walkable [Inline] Citation Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> Citation -> Citation Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> Citation -> m Citation Source #

query :: Monoid c => ([Inline] -> c) -> Citation -> c Source #

Walkable [Inline] Inline Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> Inline -> Inline Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> Inline -> m Inline Source #

query :: Monoid c => ([Inline] -> c) -> Inline -> c Source #

Walkable [Inline] Block Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> Block -> Block Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> Block -> m Block Source #

query :: Monoid c => ([Inline] -> c) -> Block -> c Source #

Walkable [Inline] Cell Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> Cell -> Cell Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> Cell -> m Cell Source #

query :: Monoid c => ([Inline] -> c) -> Cell -> c Source #

Walkable [Inline] Caption Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> Caption -> Caption Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> Caption -> m Caption Source #

query :: Monoid c => ([Inline] -> c) -> Caption -> c Source #

Walkable [Inline] TableFoot Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> TableFoot -> TableFoot Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> TableFoot -> m TableFoot Source #

query :: Monoid c => ([Inline] -> c) -> TableFoot -> c Source #

Walkable [Inline] TableBody Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> TableBody -> TableBody Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> TableBody -> m TableBody Source #

query :: Monoid c => ([Inline] -> c) -> TableBody -> c Source #

Walkable [Inline] TableHead Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> TableHead -> TableHead Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> TableHead -> m TableHead Source #

query :: Monoid c => ([Inline] -> c) -> TableHead -> c Source #

Walkable [Inline] Row Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> Row -> Row Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> Row -> m Row Source #

query :: Monoid c => ([Inline] -> c) -> Row -> c Source #

Walkable [Inline] MetaValue Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> MetaValue -> MetaValue Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> MetaValue -> m MetaValue Source #

query :: Monoid c => ([Inline] -> c) -> MetaValue -> c Source #

Walkable [Inline] Meta Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> Meta -> Meta Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> Meta -> m Meta Source #

query :: Monoid c => ([Inline] -> c) -> Meta -> c Source #

Walkable [Inline] Pandoc Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> Pandoc -> Pandoc Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> Pandoc -> m Pandoc Source #

query :: Monoid c => ([Inline] -> c) -> Pandoc -> c Source #

Walkable [Block] Citation Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> Citation -> Citation Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> Citation -> m Citation Source #

query :: Monoid c => ([Block] -> c) -> Citation -> c Source #

Walkable [Block] Inline Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> Inline -> Inline Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> Inline -> m Inline Source #

query :: Monoid c => ([Block] -> c) -> Inline -> c Source #

Walkable [Block] Block Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> Block -> Block Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> Block -> m Block Source #

query :: Monoid c => ([Block] -> c) -> Block -> c Source #

Walkable [Block] Cell Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> Cell -> Cell Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> Cell -> m Cell Source #

query :: Monoid c => ([Block] -> c) -> Cell -> c Source #

Walkable [Block] Caption Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> Caption -> Caption Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> Caption -> m Caption Source #

query :: Monoid c => ([Block] -> c) -> Caption -> c Source #

Walkable [Block] TableFoot Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> TableFoot -> TableFoot Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> TableFoot -> m TableFoot Source #

query :: Monoid c => ([Block] -> c) -> TableFoot -> c Source #

Walkable [Block] TableBody Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> TableBody -> TableBody Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> TableBody -> m TableBody Source #

query :: Monoid c => ([Block] -> c) -> TableBody -> c Source #

Walkable [Block] TableHead Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> TableHead -> TableHead Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> TableHead -> m TableHead Source #

query :: Monoid c => ([Block] -> c) -> TableHead -> c Source #

Walkable [Block] Row Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> Row -> Row Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> Row -> m Row Source #

query :: Monoid c => ([Block] -> c) -> Row -> c Source #

Walkable [Block] MetaValue Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> MetaValue -> MetaValue Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> MetaValue -> m MetaValue Source #

query :: Monoid c => ([Block] -> c) -> MetaValue -> c Source #

Walkable [Block] Meta Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> Meta -> Meta Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> Meta -> m Meta Source #

query :: Monoid c => ([Block] -> c) -> Meta -> c Source #

Walkable [Block] Pandoc Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> Pandoc -> Pandoc Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> Pandoc -> m Pandoc Source #

query :: Monoid c => ([Block] -> c) -> Pandoc -> c Source #

Walkable [Inline] [Inline] Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Inline] -> [Inline]) -> [Inline] -> [Inline] Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Inline] -> m [Inline]) -> [Inline] -> m [Inline] Source #

query :: Monoid c => ([Inline] -> c) -> [Inline] -> c Source #

Walkable [Block] [Block] Source # 
Instance details

Defined in Text.Pandoc.Walk

Methods

walk :: ([Block] -> [Block]) -> [Block] -> [Block] Source #

walkM :: (Monad m, Applicative m, Functor m) => ([Block] -> m [Block]) -> [Block] -> m [Block] Source #

query :: Monoid c => ([Block] -> c) -> [Block] -> c Source #

queryBlock :: (Walkable a Citation, Walkable a [Block], Walkable a Row, Walkable a Caption, Walkable a TableHead, Walkable a TableBody, Walkable a TableFoot, Walkable a [Inline], Monoid c) => (a -> c) -> Block -> c Source #

Perform a query on elements nested below a Block element by querying all directly nested lists of Inlines or Blocks.

queryCaption :: (Walkable a [Block], Walkable a [Inline], Walkable a ShortCaption, Monoid c) => (a -> c) -> Caption -> c Source #

Query the elements below a Cell element.

queryRow :: (Walkable a Cell, Monoid c) => (a -> c) -> Row -> c Source #

Query the elements below a Row element.

queryTableHead :: (Walkable a Row, Monoid c) => (a -> c) -> TableHead -> c Source #

Query the elements below a TableHead element.

queryTableBody :: (Walkable a Row, Monoid c) => (a -> c) -> TableBody -> c Source #

Query the elements below a TableBody element.

queryTableFoot :: (Walkable a Row, Monoid c) => (a -> c) -> TableFoot -> c Source #

Query the elements below a TableFoot element.

queryCell :: (Walkable a [Block], Monoid c) => (a -> c) -> Cell -> c Source #

Query the elements below a Cell element.

queryCitation :: (Walkable a [Inline], Monoid c) => (a -> c) -> Citation -> c Source #

Perform a query on elements nested below a Citation element by querying the prefix and postfix Inline lists.

queryInline :: (Walkable a Citation, Walkable a [Block], Walkable a [Inline], Monoid c) => (a -> c) -> Inline -> c Source #

Perform a query on elements nested below an Inline element by querying nested lists of Inlines, Blocks, or Citations.

queryMetaValue :: (Walkable a MetaValue, Walkable a [Block], Walkable a [Inline], Monoid c) => (a -> c) -> MetaValue -> c Source #

Perform a query on elements nested below a MetaValue element by querying all directly nested lists of Inlines, list of Blocks, or lists or maps of MetaValues.

queryMetaValue' :: Monoid c => (MetaValue -> c) -> MetaValue -> c Source #

Perform a query on MetaValue elements nested below a MetaValue element

queryPandoc :: (Walkable a Meta, Walkable a [Block], Monoid c) => (a -> c) -> Pandoc -> c Source #

Query a pandoc element by recursing first into its Meta data and then append the result of recursing into the list of Blocks.

walkBlockM :: (Walkable a [Block], Walkable a [Inline], Walkable a Row, Walkable a Caption, Walkable a TableHead, Walkable a TableBody, Walkable a TableFoot, Monad m, Applicative m, Functor m) => (a -> m a) -> Block -> m Block Source #

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.

walkCaptionM :: (Walkable a [Block], Walkable a [Inline], Monad m, Walkable a ShortCaption) => (a -> m a) -> Caption -> m Caption Source #

Helper method to walk the elements nested below Caption nodes.

walkRowM :: (Walkable a Cell, Monad m) => (a -> m a) -> Row -> m Row Source #

Helper method to walk the elements nested below Row nodes. The Attr component is not changed by this operation.

walkTableHeadM :: (Walkable a Row, Monad m) => (a -> m a) -> TableHead -> m TableHead Source #

Helper method to walk the elements nested below TableHead nodes. The Attr component is not changed by this operation.

walkTableBodyM :: (Walkable a Row, Monad m) => (a -> m a) -> TableBody -> m TableBody Source #

Helper method to walk the elements nested below TableBody nodes. The Attr and RowHeadColumns components are not changed by this operation.

walkTableFootM :: (Walkable a Row, Monad m) => (a -> m a) -> TableFoot -> m TableFoot Source #

Helper method to walk the elements nested below TableFoot nodes. The Attr component is not changed by this operation.

walkCellM :: (Walkable a [Block], Monad m) => (a -> m a) -> Cell -> m Cell Source #

Helper method to walk the elements nested below Cell nodes. Only the [Block] cell content is changed by this operation.

walkCitationM :: (Walkable a [Inline], Monad m, Applicative m, Functor m) => (a -> m a) -> Citation -> m Citation Source #

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.

walkInlineM :: (Walkable a Citation, Walkable a [Block], Walkable a [Inline], Monad m, Applicative m, Functor m) => (a -> m a) -> Inline -> m Inline Source #

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.

walkMetaValueM :: (Walkable a MetaValue, Walkable a [Block], Walkable a [Inline], Monad f, Applicative f, Functor f) => (a -> f a) -> MetaValue -> f MetaValue Source #

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' :: (Monad f, Applicative f, Functor f) => (MetaValue -> f MetaValue) -> MetaValue -> f MetaValue Source #

Helper method to walk MetaValue nodes nested below MetaValue nodes.

walkPandocM :: (Walkable a Meta, Walkable a [Block], Monad m, Applicative m, Functor m) => (a -> m a) -> Pandoc -> m Pandoc Source #

Helper method to walk the components of a Pandoc element.