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

Portability | unportable
Stability | unstable
Maintainer | Andrea Rossato <andrea.rossato@unitn.it>

Text.CSL.Proc.Disamb

Description

This module provides functions for processing the evaluated `Output` for citation disambiguation.

Describe the disambiguation process.

Synopsis

- disambCitations :: Style -> [Reference] -> Citations -> [CitationGroup] -> ([(String, String)], [CitationGroup])
- mapDisambData :: (Output -> Output) -> CiteData -> CiteData
- mapCitationGroup :: ([Output] -> [Output]) -> CitationGroup -> CitationGroup
- disambAddNames :: [CiteData] -> [CiteData]
- disambAddLast :: [CiteData] -> [CiteData]
- disambAddGivenNames :: [NameData] -> [NameData]
- updateOutput :: [CiteData] -> [NameData] -> Output -> Output
- reEvaluate :: Style -> [CiteData] -> [(Cite, Reference)] -> CitationGroup -> CitationGroup
- hasIfDis :: IfThen -> [Bool]
- getCitDisambOptions :: Style -> [String]
- getDuplCiteData :: Bool -> [CitationGroup] -> [[CiteData]]
- getCiteData :: Output -> [CiteData]
- type NamesYear = ([Output], String)
- getDuplNamesYear :: Bool -> [CitationGroup] -> [NamesYear]
- getNamesYear :: Bool -> Output -> [(String, NamesYear)]
- getYears :: Output -> [(String, String)]
- getDuplNameData :: [CitationGroup] -> [[NameData]]
- getDuplNames :: [CitationGroup] -> [[Output]]
- getName :: Output -> [NameData]
- generateYearSuffix :: [Reference] -> [(String, [Output])] -> [(String, String)]
- setYearSuffCollision :: Bool -> [CiteData] -> [Output] -> [Output]
- updateYearSuffixes :: [(String, String)] -> Output -> Output
- getYearSuffixes :: Output -> [(String, [Output])]
- rmYearSuff :: [CitationGroup] -> [CitationGroup]
- disambiguate :: Eq a => [[a]] -> [[a]]
- same :: Eq a => [a] -> [Bool]
- hasDuplicates :: Eq a => [a] -> Bool
- allTheSame :: Eq a => [a] -> Bool

# Documentation

disambCitations :: Style -> [Reference] -> Citations -> [CitationGroup] -> ([(String, String)], [CitationGroup])

Given the `Style`, the list of references and the citation groups, disambiguate citations according to the style options.

mapDisambData :: (Output -> Output) -> CiteData -> CiteData

mapCitationGroup :: ([Output] -> [Output]) -> CitationGroup -> CitationGroup

disambAddNames :: [CiteData] -> [CiteData]

disambAddLast :: [CiteData] -> [CiteData]

disambAddGivenNames :: [NameData] -> [NameData]

updateOutput :: [CiteData] -> [NameData] -> Output -> Output

Given the list of `CiteData` with the disambiguated field set update the evaluated citations by setting the contributor list accordingly.

reEvaluate :: Style -> [CiteData] -> [(Cite, Reference)] -> CitationGroup -> CitationGroup

Evaluate again a citation group with the `EvalState` `disamb` field set to `True` (for matching the `"disambiguate"` condition).

hasIfDis :: IfThen -> [Bool]

Check if the `Style` has any conditional for disambiguation. In this case the conditional will be try after all other disambiguation strategies have failed. To be used with the generic `query` function.

getCitDisambOptions :: Style -> [String]

Get the list of disambiguation options set in the `Style` for citations.

getDuplCiteData :: Bool -> [CitationGroup] -> [[CiteData]]

Group citation data (with possible alternative names) of citations which have a duplicate (same `collision` and same `citYear`). If the first `Bool` is `False`, then we need to retrieve data for year suffix disambiguation.

getCiteData :: Output -> [CiteData]

For an evaluated citation get its `CiteData`. The disambiguated citation and the year fields are empty.

type NamesYear = ([Output], String)

The contributors diambiguation data, the list of names and give-names, and the citation year (`OYear`).

getDuplNamesYear :: Bool -> [CitationGroup] -> [NamesYear]

Get the contributors list (`OContrib`) and the year occurring in more then one citation.

getNamesYear :: Bool -> Output -> [(String, NamesYear)]

Get the list of citation keys coupled with their `NamesYear` in the evaluated `Output`. If the `Bool` is `False` then the function retrieves the names used in citations not occuring for the first time.

getYears :: Output -> [(String, String)]

getDuplNameData :: [CitationGroup] -> [[NameData]]

getDuplNames :: [CitationGroup] -> [[Output]]

getName :: Output -> [NameData]

generateYearSuffix :: [Reference] -> [(String, [Output])] -> [(String, String)]

setYearSuffCollision :: Bool -> [CiteData] -> [Output] -> [Output]

updateYearSuffixes :: [(String, String)] -> Output -> Output

getYearSuffixes :: Output -> [(String, [Output])]

rmYearSuff :: [CitationGroup] -> [CitationGroup]

disambiguate :: Eq a => [[a]] -> [[a]]

Try to disambiguate a list of lists by returning the first non colliding element, if any, of each list:

     disambiguate [[1,2],[1,3],[2]] = [[2],[3],[2]]

same :: Eq a => [a] -> [Bool]

For each element a list of `Bool`: `True` if the element has a duplicate in the list:

     same [1,2,1] = [True,False,True]

hasDuplicates :: Eq a => [a] -> Bool

allTheSame :: Eq a => [a] -> Bool