citeproc-hs-0.3.10: A Citation Style Language implementation in Haskell

Copyright(c) Andrea Rossato
LicenseBSD-style (see LICENSE)
MaintainerAndrea Rossato <>
Safe HaskellNone



The Style types



data Style Source

The representation of a parsed CSL style.

mergeLocales :: String -> Locale -> [Locale] -> [Locale] Source

With the defaultLocale, the locales-xx-XX.xml loaded file and the parsed Style cs:locale elements, produce the final Locale as the only element of a list, taking into account CSL locale prioritization.

rmOrdinals :: Data a => a -> a Source

data FormattedOutput Source

The formatted output, produced after post-processing the evaluated citations.


FO Formatting [FormattedOutput]

List of FormatOutput items

FN String Formatting

Formatted number

FS String Formatting

Formatted string

FDel String

Delimeter string

FUrl Target Formatting

Formatted URL

FPan [Inline]

Pandoc inline elements


Null formatting item

data Output Source

The Output generated by the evaluation of a style. Must be further processed for disambiguation and collapsing.


OPan [Inline] 
ODel String

A delimiter string.

OStr String Formatting

A simple String

OLabel String Formatting

A label used for roles

ONum Int Formatting

A number (used to count contributors)

OCitNum Int Formatting

The citation number

ODate [Output]

A (possibly) ranged date

OYear String String Formatting

The year and the citeId

OYearSuf String String [Output] Formatting

The year suffix, the citeId and a holder for collision data

OName String [Output] [[Output]] Formatting

A (family) name with the list of given names.

OContrib String String [Output] [Output] [[Output]]

The citation key, the role (author, editor, etc.), the contributor(s), the output needed for year suf. disambiguation, and everything used for name disambiguation.

OUrl Target Formatting


OLoc [Output] Formatting

The citation's locator

Output [Output] Formatting

Some nested Output

data Affix Source


Eq Affix 
Data Affix 
Ord Affix 
Read Affix 
Show Affix 
JSON Affix

Needed for the test-suite.

Typeable * Affix 

type Citations = [[Cite]] Source

data CitationGroup Source

A citation group: the first list has a single member when the citation group starts with an "author-in-text" cite, the Formatting to be applied, the Delimiter between individual citations and the list of evaluated citations.


CG [(Cite, Output)] Formatting Delimiter [(Cite, Output)] 

data BiblioData Source




data CiteData Source

A record with all the data to produce the FormattedOutput of a citation: the citation key, the part of the formatted citation that may be colliding with other citations, the form of the citation when a year suffix is used for disambiguation , the data to disambiguate it (all possible contributors and all possible given names), and, after processing, the disambiguated citation and its year, initially empty.



formatOutput :: Output -> FormattedOutput Source

Convert evaluated Output into FormattedOutput, ready for the output filters.

mapGroupOutput :: (Output -> [a]) -> CitationGroup -> [a] Source

Map the evaluated output of a citation group.

proc :: (Typeable a, Data b) => (a -> a) -> b -> b Source

A generic processing function.

proc' :: (Typeable a, Data b) => (a -> a) -> b -> b Source

A generic processing function: process a data structure in top-down manner.

query :: (Typeable a, Data b) => (a -> [c]) -> b -> [c] Source

A generic query function.

rmGivenNames :: Output -> Output Source

Removes all given names form a OName element with proc.

addGivenNames :: [Output] -> [Output] Source

Add, with proc, a give name to the family name. Needed for disambiguation.

addYearSuffix :: Output -> Output Source

Add the year suffix to the year. Needed for disambiguation.

betterThen :: Eq a => [a] -> [a] -> [a] Source