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

MaintainerAndrea Rossato <>



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.

data FormattedOutput Source

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

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

ONum Int Formatting

A number (used to count contributors)

OCitNum Int Formatting

The citation number

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.

Output [Output] Formatting

Some nested Output

data Affix Source


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

Needed for the test-suite.

data CitationGroup Source

A citation group: a list of evaluated citations, the Formatting to be applied to them, and the Delimiter between individual 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 citation that may be colliding with other citations (the list of contributors for the same year), the data to disambiguate it (all possible contributors and all possible given names), and the disambiguated citation and its year.



formatOutput :: Output -> FormattedOutputSource

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 -> bSource

A generic processing function.

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

A generic query function.

rmGivenNames :: Output -> OutputSource

Removes all given names form a OName element with proc.

rmContribs :: Output -> OutputSource

Removes all contributors' names.

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

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

addYearSuffix :: Output -> OutputSource

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

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