pandoc-utils-0.4.0: Utility functions to work with Pandoc in Haskell applications.
Safe HaskellNone
LanguageHaskell2010

Text.Pandoc.Filter.Utils

Description

This module contains some utility functions to work with different levels of Pandoc filters. For example, for the conversion from Inline -> [Inline] to Pandoc -> Pandoc filter.

Synopsis

Definitions

data PartialFilterM m p Source #

PartialFilterM m p is a wrapper for any monadic p -> m p Pandoc filters acting on a subnode (e.g. Inline or Block) of the Pandoc abstract syntax tree.

  • m: a monad.
  • p: the type of a subnode of Pandoc (e.g. Inline).

Instances

Instances details
(Monad m, Walkable a b) => ToPartialFilter m (PartialFilterM m a) b Source #

This instance can be used to convert PartialFilterM m a to PartialFilterM m b.

Instance details

Defined in Text.Pandoc.Filter.Utils

Monad m => Semigroup (PartialFilterM m p) Source #

The Semigroup instance of PartialFilterM. f1 <> f2 will apply f1 first followed by f2.

Instance details

Defined in Text.Pandoc.Filter.Utils

Monad m => Monoid (PartialFilterM m p) Source #

The Monoid instance of PartialFilterM.

Instance details

Defined in Text.Pandoc.Filter.Utils

type PartialFilter = PartialFilterM Identity Source #

PartialFilter p is a wrapper for ordinary p -> p Pandoc filters acting on a subnode (e.g. Inline or Block) of the Pandoc abstract syntax tree.

type PandocFilterM m = PartialFilterM m Pandoc Source #

An alias for PartialFilterM m Pandoc, a monadic version of PandocFilter.

  • m: a monad.

type PandocFilter = PartialFilter Pandoc Source #

An alias for PartialFilter Pandoc. It encapsulates a monadic filter Pandoc -> m Pandoc acting directly on Pandoc.

  • m: a monad.

Filter application

applyFilterM :: PartialFilterM m p -> p -> m p Source #

Apply a monadic filter to p.

applyFilter Source #

Arguments

:: PartialFilter p

A wrapped partial filter.

-> p

Pandoc AST node.

-> p

Transformed node.

Apply an ordinary filter to p, which returns p directly.

Filter composition

applyFiltersM Source #

Arguments

:: (Foldable t, Monad m) 
=> t (PartialFilterM m p)

A list of monadic partial filters.

-> p

Pandoc AST node.

-> m p

Transformed node.

Apply a list of monadic partial filters sequentially, from left to right, i.e. the first element in the list will be applied first and the last element will be applied at the end.

applyFilters Source #

Arguments

:: Foldable t 
=> t (PartialFilter p)

A list of partial filter.

-> p

Pandoc AST node.

-> p

Transformed node.

Apply a list of partial filters sequentially, from left to right, i.e. the first element in the list will be applied first and the last element will be applied at the end.

Filter conversion

getFilterM Source #

Arguments

:: (Monad m, Walkable a b) 
=> PartialFilterM m a

A wrapped partial filter on a.

-> b -> m b

Unwrapped filter function that can be directly applied to b.

It is mostly the same as applyFilterM and should be used when you don't need to apply the filter immediately. The only difference is that it will perform an implicit conversion if the requested filter function is of a different type.

getFilter Source #

Arguments

:: Walkable a b 
=> PartialFilter a

A wrapped partial filter on a.

-> b -> b

Unwrapped filter function that can be directly applied to b.

It is mostly the same as applyFilter and should be used when you don't need to apply the filter immediately. The only difference is that it will perform an implicit conversion if the requested filter function is of a different type.

getConcatedFilterM Source #

Arguments

:: (Foldable t, Monad m) 
=> t (PartialFilterM m p)

A list of monadic partial filters.

-> p -> m p

Unwrapped monadic filter applicable to p directly.

An alias for applyFiltersM, used when the filter is not used immediately.

getConcatedFilter Source #

Arguments

:: Foldable t 
=> t (PartialFilter p)

A list of partial filter.

-> p -> p

Unwrapped filter applicable to p directly.

An alias for applyFilters, used when the filter is not used immediately.

class ToPartialFilter m f p where Source #

A helper typeclass used as a polymorphic constructor of PartialFilterM.

Methods

mkFilter Source #

Arguments

:: f

A partial filter function, usually a -> a for some Walkable a p.

-> PartialFilterM m p

Wrapped partial Pandoc filter.

The actual constructor of PartialFilterM. It takes an ordinary filter function a -> b and wraps it as a PartialFilterM. It can also be used to convert between different types of PartialFilterM m.

Instances

Instances details
(Monad m, Walkable a b) => ToPartialFilter m (PartialFilterM m a) b Source #

This instance can be used to convert PartialFilterM m a to PartialFilterM m b.

Instance details

Defined in Text.Pandoc.Filter.Utils

(Monad m, Walkable [a] p) => ToPartialFilter m (a -> m [a]) p Source # 
Instance details

Defined in Text.Pandoc.Filter.Utils

Methods

mkFilter :: (a -> m [a]) -> PartialFilterM m p Source #

(Monad m, Walkable [a] p) => ToPartialFilter m (a -> [a]) p Source # 
Instance details

Defined in Text.Pandoc.Filter.Utils

Methods

mkFilter :: (a -> [a]) -> PartialFilterM m p Source #

(Monad m, Walkable a p) => ToPartialFilter m (a -> m a) p Source # 
Instance details

Defined in Text.Pandoc.Filter.Utils

Methods

mkFilter :: (a -> m a) -> PartialFilterM m p Source #

(Monad m, Walkable a p) => ToPartialFilter m (a -> a) p Source # 
Instance details

Defined in Text.Pandoc.Filter.Utils

Methods

mkFilter :: (a -> a) -> PartialFilterM m p Source #

mkConcatedFilter Source #

Arguments

:: (Monad m, ToPartialFilter m f p, Foldable t) 
=> t f

A list of filter functions of the same type.

-> PartialFilterM m p

Concatenated filter.

Construct a PartialFilterM from a list of filter functions of the same type. The final filter is concatenated from left to right such that the first element in the list will be applied first and the last element will be applied at the end.

toFilterM Source #

Arguments

:: Monad m 
=> PartialFilter p

An ordinary filter.

-> PartialFilterM m p

The monadic version.

Convert an ordinary PartialFilter to the monadic version PartialFilterM.