-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A Citation Style Language implementation in Haskell
--   
--   citeproc-hs is a library for rendering bibliographic reference
--   citations into a variety of styles using a macro language called
--   Citation Style Language (CSL). More details on CSL can be found here:
--   <a>http://citationstyles.org/</a>.
--   
--   For the API documentation please see <a>Text.CSL</a>.
@package citeproc-hs
@version 0.3.6


-- | The Style types
module Text.CSL.Style

-- | The representation of a parsed CSL style.
data Style
Style :: String -> String -> Maybe CSInfo -> String -> [Locale] -> [Abbrev] -> [Option] -> [MacroMap] -> Citation -> Maybe Bibliography -> Style
styleVersion :: Style -> String
styleClass :: Style -> String
styleInfo :: Style -> Maybe CSInfo
styleDefaultLocale :: Style -> String
styleLocale :: Style -> [Locale]
styleAbbrevs :: Style -> [Abbrev]
csOptions :: Style -> [Option]
csMacros :: Style -> [MacroMap]
citation :: Style -> Citation
biblio :: Style -> Maybe Bibliography
data Locale
Locale :: String -> String -> [Option] -> [TermMap] -> [Element] -> Locale
localeVersion :: Locale -> String
localeLang :: Locale -> String
localeOptions :: Locale -> [Option]
localeTermMap :: Locale -> [TermMap]
localeDate :: Locale -> [Element]

-- | With the <tt>defaultLocale</tt>, the locales-xx-XX.xml loaded file and
--   the parsed <a>Style</a> cs:locale elements, produce the final
--   <a>Locale</a> as the only element of a list, taking into account CSL
--   locale prioritization.
mergeLocales :: String -> Locale -> [Locale] -> [Locale]
type Abbrev = (String, [(String, Map String String)])
type TermMap = ((String, Form), (String, String))
type MacroMap = (String, [Element])
data Citation
Citation :: [Option] -> [Sort] -> Layout -> Citation
citOptions :: Citation -> [Option]
citSort :: Citation -> [Sort]
citLayout :: Citation -> Layout
data Bibliography
Bibliography :: [Option] -> [Sort] -> Layout -> Bibliography
bibOptions :: Bibliography -> [Option]
bibSort :: Bibliography -> [Sort]
bibLayout :: Bibliography -> Layout
type Option = (String, String)
mergeOptions :: [Option] -> [Option] -> [Option]
data Layout
Layout :: Formatting -> Delimiter -> [Element] -> Layout
layFormat :: Layout -> Formatting
layDelim :: Layout -> Delimiter
elements :: Layout -> [Element]
data Element
Choose :: IfThen -> [IfThen] -> [Element] -> Element
Macro :: String -> Formatting -> Element
Const :: String -> Formatting -> Element
Variable :: [String] -> Form -> Formatting -> Delimiter -> Element
Term :: String -> Form -> Formatting -> Bool -> Element
Label :: String -> Form -> Formatting -> Plural -> Element
Number :: String -> NumericForm -> Formatting -> Element
ShortNames :: [String] -> Formatting -> Delimiter -> Element
Names :: [String] -> [Name] -> Formatting -> Delimiter -> [Element] -> Element
Substitute :: [Element] -> Element
Group :: Formatting -> Delimiter -> [Element] -> Element
Date :: [String] -> DateForm -> Formatting -> Delimiter -> [DatePart] -> String -> Element
data IfThen
IfThen :: Condition -> Match -> [Element] -> IfThen
data Condition
Condition :: [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> Condition
isType :: Condition -> [String]
isSet :: Condition -> [String]
isNumeric :: Condition -> [String]
isUncertainDate :: Condition -> [String]
isPosition :: Condition -> [String]
disambiguation :: Condition -> [String]
isLocator :: Condition -> [String]
type Delimiter = String
data Match
Any :: Match
All :: Match
None :: Match
match :: Match -> [Bool] -> Bool
data DatePart
DatePart :: String -> String -> String -> Formatting -> DatePart
dpName :: DatePart -> String
dpForm :: DatePart -> String
dpRangeDelim :: DatePart -> String
dpFormatting :: DatePart -> Formatting
defaultDate :: [DatePart]
data Sort
SortVariable :: String -> Sorting -> Sort
SortMacro :: String -> Sorting -> Int -> Int -> String -> Sort
data Sorting
Ascending :: String -> Sorting
Descending :: String -> Sorting
compare' :: String -> String -> Ordering
data Form
Long :: Form
Short :: Form
Count :: Form
Verb :: Form
VerbShort :: Form
Symbol :: Form
NotSet :: Form
data NumericForm
Numeric :: NumericForm
Ordinal :: NumericForm
Roman :: NumericForm
LongOrdinal :: NumericForm
data DateForm
TextDate :: DateForm
NumericDate :: DateForm
NoFormDate :: DateForm
data Plural
Contextual :: Plural
Always :: Plural
Never :: Plural
data Name
Name :: Form -> Formatting -> NameAttrs -> Delimiter -> [NamePart] -> Name
NameLabel :: Form -> Formatting -> Plural -> Name
EtAl :: Formatting -> String -> Name
type NameAttrs = [(String, String)]
data NamePart
NamePart :: String -> Formatting -> NamePart
isPlural :: Plural -> Int -> Bool
isName :: Name -> Bool
isNames :: Element -> Bool
hasEtAl :: [Name] -> Bool
data Formatting
Formatting :: String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> Bool -> Bool -> Bool -> Bool -> Formatting
prefix :: Formatting -> String
suffix :: Formatting -> String
fontFamily :: Formatting -> String
fontStyle :: Formatting -> String
fontVariant :: Formatting -> String
fontWeight :: Formatting -> String
textDecoration :: Formatting -> String
verticalAlign :: Formatting -> String
textCase :: Formatting -> String
display :: Formatting -> String
quotes :: Formatting -> Bool
stripPeriods :: Formatting -> Bool
noCase :: Formatting -> Bool
noDecor :: Formatting -> Bool
emptyFormatting :: Formatting
unsetAffixes :: Formatting -> Formatting
mergeFM :: Formatting -> Formatting -> Formatting
data CSInfo
CSInfo :: String -> CSAuthor -> [CSCategory] -> String -> String -> CSInfo
csiTitle :: CSInfo -> String
csiAuthor :: CSInfo -> CSAuthor
csiCategories :: CSInfo -> [CSCategory]
csiId :: CSInfo -> String
csiUpdated :: CSInfo -> String
data CSAuthor
CSAuthor :: String -> String -> String -> CSAuthor
data CSCategory
CSCategory :: String -> String -> String -> CSCategory

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

-- | List of <tt>FormatOutput</tt> items
FO :: Formatting -> [FormattedOutput] -> FormattedOutput

-- | Formatted number
FN :: String -> Formatting -> FormattedOutput

-- | Formatted string
FS :: String -> Formatting -> FormattedOutput

-- | Formatted uniform resource locator (URL)
FUrl :: String -> Formatting -> FormattedOutput

-- | Delimeter string
FDel :: String -> FormattedOutput

-- | Pandoc inline elements
FPan :: [Inline] -> FormattedOutput

-- | Null formatting item
FNull :: FormattedOutput

-- | The <a>Output</a> generated by the evaluation of a style. Must be
--   further processed for disambiguation and collapsing.
data Output
ONull :: Output
OSpace :: Output
OPan :: [Inline] -> Output

-- | A delimiter string.
ODel :: String -> Output

-- | A simple <a>String</a>
OStr :: String -> Formatting -> Output

-- | A number (used to count contributors)
ONum :: Int -> Formatting -> Output

-- | The citation number
OCitNum :: Int -> Formatting -> Output

-- | The year and the citeId
OYear :: String -> String -> Formatting -> Output

-- | The year suffix, the citeId and a holder for collision data
OYearSuf :: String -> String -> [Output] -> Formatting -> Output

-- | A (family) name with the list of given names.
OName :: String -> [Output] -> [[Output]] -> Formatting -> 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.
OContrib :: String -> String -> [Output] -> [Output] -> [[Output]] -> Output

-- | A uniform resource locator (URL)
OUrl :: String -> Formatting -> Output

-- | The citation's locator
OLoc :: [Output] -> Formatting -> Output

-- | Some nested <a>Output</a>
Output :: [Output] -> Formatting -> Output
data Affix
PlainText :: String -> Affix
PandocText :: [Inline] -> Affix
type Citations = [[Cite]]
data Cite
Cite :: String -> Affix -> Affix -> String -> String -> String -> String -> Bool -> Bool -> Bool -> Int -> Cite
citeId :: Cite -> String
citePrefix :: Cite -> Affix
citeSuffix :: Cite -> Affix
citeLabel :: Cite -> String
citeLocator :: Cite -> String
citeNoteNumber :: Cite -> String
citePosition :: Cite -> String
nearNote :: Cite -> Bool
authorInText :: Cite -> Bool
suppressAuthor :: Cite -> Bool
citeHash :: Cite -> Int
emptyAffix :: Affix
emptyCite :: Cite

-- | A citation group: the first list has a single member when the citation
--   group starts with an <a>author-in-text</a> cite, the <a>Formatting</a>
--   to be applied, the <a>Delimiter</a> between individual citations and
--   the list of evaluated citations.
data CitationGroup
CG :: [(Cite, Output)] -> Formatting -> Delimiter -> [(Cite, Output)] -> CitationGroup
data BiblioData
BD :: [[FormattedOutput]] -> [[FormattedOutput]] -> BiblioData
citations :: BiblioData -> [[FormattedOutput]]
bibliography :: BiblioData -> [[FormattedOutput]]

-- | A record with all the data to produce the <a>FormattedOutput</a> 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.
data CiteData
CD :: String -> [Output] -> [Output] -> [[Output]] -> [Output] -> [String] -> String -> CiteData
key :: CiteData -> String
collision :: CiteData -> [Output]
disambYS :: CiteData -> [Output]
disambData :: CiteData -> [[Output]]
disambed :: CiteData -> [Output]
sameAs :: CiteData -> [String]
citYear :: CiteData -> String
data NameData
ND :: String -> [Output] -> [[Output]] -> [Output] -> NameData
nameKey :: NameData -> String
nameCollision :: NameData -> [Output]
nameDisambData :: NameData -> [[Output]]
nameDataSolved :: NameData -> [Output]
formatOutputList :: [Output] -> [FormattedOutput]

-- | Convert evaluated <a>Output</a> into <a>FormattedOutput</a>, ready for
--   the output filters.
formatOutput :: Output -> FormattedOutput

-- | Map the evaluated output of a citation group.
mapGroupOutput :: (Output -> [a]) -> CitationGroup -> [a]

-- | A generic processing function.
proc :: (Typeable a, Data b) => (a -> a) -> b -> b

-- | A generic processing function: process a data structure in top-down
--   manner.
proc' :: (Typeable a, Data b) => (a -> a) -> b -> b

-- | A generic query function.
query :: (Typeable a, Data b) => (a -> [c]) -> b -> [c]

-- | Removes all given names form a <a>OName</a> element with <a>proc</a>.
rmGivenNames :: Output -> Output
rmNameHash :: Output -> Output

-- | Add, with <a>proc</a>, a give name to the family name. Needed for
--   disambiguation.
addGivenNames :: [Output] -> [Output]

-- | Add the year suffix to the year. Needed for disambiguation.
addYearSuffix :: Output -> Output
hasYear :: Output -> Bool
hasYearSuf :: Output -> Bool
betterThen :: Eq a => [a] -> [a] -> [a]
instance Typeable Condition
instance Typeable Match
instance Typeable Sorting
instance Typeable Sort
instance Typeable Form
instance Typeable NumericForm
instance Typeable DateForm
instance Typeable Plural
instance Typeable Formatting
instance Typeable NamePart
instance Typeable Name
instance Typeable DatePart
instance Typeable Element
instance Typeable IfThen
instance Typeable Locale
instance Typeable Layout
instance Typeable Bibliography
instance Typeable Citation
instance Typeable CSAuthor
instance Typeable CSCategory
instance Typeable CSInfo
instance Typeable Style
instance Typeable Output
instance Typeable Affix
instance Typeable Cite
instance Typeable CitationGroup
instance Typeable CiteData
instance Typeable NameData
instance Eq Condition
instance Show Condition
instance Read Condition
instance Data Condition
instance Show Match
instance Read Match
instance Eq Match
instance Data Match
instance Read Sorting
instance Show Sorting
instance Eq Sorting
instance Data Sorting
instance Eq Sort
instance Show Sort
instance Read Sort
instance Data Sort
instance Eq Form
instance Show Form
instance Read Form
instance Data Form
instance Eq NumericForm
instance Show NumericForm
instance Read NumericForm
instance Data NumericForm
instance Eq DateForm
instance Show DateForm
instance Read DateForm
instance Data DateForm
instance Eq Plural
instance Show Plural
instance Read Plural
instance Data Plural
instance Read Formatting
instance Eq Formatting
instance Ord Formatting
instance Data Formatting
instance Show NamePart
instance Read NamePart
instance Eq NamePart
instance Data NamePart
instance Eq Name
instance Show Name
instance Read Name
instance Data Name
instance Show DatePart
instance Read DatePart
instance Eq DatePart
instance Data DatePart
instance Show Element
instance Read Element
instance Eq Element
instance Data Element
instance Eq IfThen
instance Show IfThen
instance Read IfThen
instance Data IfThen
instance Show Locale
instance Read Locale
instance Eq Locale
instance Data Locale
instance Show Layout
instance Read Layout
instance Data Layout
instance Show Bibliography
instance Read Bibliography
instance Data Bibliography
instance Show Citation
instance Read Citation
instance Data Citation
instance Show CSAuthor
instance Read CSAuthor
instance Eq CSAuthor
instance Data CSAuthor
instance Show CSCategory
instance Read CSCategory
instance Eq CSCategory
instance Data CSCategory
instance Show CSInfo
instance Read CSInfo
instance Data CSInfo
instance Show Style
instance Read Style
instance Data Style
instance Eq FormattedOutput
instance Show FormattedOutput
instance Eq Output
instance Ord Output
instance Show Output
instance Data Output
instance Show Affix
instance Read Affix
instance Eq Affix
instance Ord Affix
instance Data Affix
instance Show Cite
instance Eq Cite
instance Data Cite
instance Show CitationGroup
instance Eq CitationGroup
instance Data CitationGroup
instance Show BiblioData
instance Show CiteData
instance Data CiteData
instance Show NameData
instance Data NameData
instance Eq NameData
instance Eq CiteData
instance JSON Affix
instance Show Formatting
instance Ord Sorting


-- | The plain ascii output formatter for CSL
module Text.CSL.Output.Plain

-- | Render the <a>FormattedOutput</a> into a plain text string.
renderPlain :: [FormattedOutput] -> String

-- | Same as <a>renderPlain</a> , but will not clean up the produced
--   output.
renderPlainStrict :: [FormattedOutput] -> String
procList :: Eq a => [a] -> ([a] -> [b]) -> [b]
(<+>) :: String -> String -> String
(<>) :: String -> String -> String
capitalize :: String -> String
entityToChar :: String -> String
head' :: [a] -> [a]
tail' :: Eq a => [a] -> [a]


-- | The pandoc output formatter for CSL
module Text.CSL.Output.Pandoc

-- | With a <a>Style</a> and the formatted output generate a <a>String</a>
--   in the native <a>Pandoc</a> formats (i.e. immediately readable by
--   pandoc).
renderPandoc :: Style -> [FormattedOutput] -> [Inline]

-- | Same as <a>renderPandoc</a>, but the output is wrapped in a pandoc
--   paragraph block.
renderPandoc' :: Style -> [FormattedOutput] -> Block

-- | For the testsuite: we use <a>Link</a> and <a>Strikeout</a> to store
--   <a>nocase</a> and <a>nodecor</a> rich text formatting classes.
renderPandoc_ :: Style -> [FormattedOutput] -> [Inline]
headInline :: [Inline] -> String
initInline :: [Inline] -> [Inline]
tailFirstInlineStr :: [Inline] -> [Inline]
toCapital :: [Inline] -> [Inline]
endWithPunct, startWithPunct :: [Inline] -> Bool


-- | The CSL implementation
module Text.CSL.Eval.Output
output :: Formatting -> String -> [Output]
appendOutput :: Formatting -> [Output] -> [Output]
outputList :: Formatting -> Delimiter -> [Output] -> [Output]
cleanOutput :: [Output] -> [Output]
addDelim :: String -> [Output] -> [Output]
noOutputError :: Output
noBibDataError :: Cite -> Output
oStr :: String -> [Output]
oStr' :: String -> Formatting -> [Output]
(<++>) :: [Output] -> [Output] -> [Output]
rtfTags :: [(String, (String, Formatting))]
rtfParser :: Formatting -> String -> [Output]


-- | The Reference type
module Text.CSL.Reference

-- | An existential type to wrap the different types a <a>Reference</a> is
--   made of. This way we can create a map to make queries easier.
data Value
Value :: a -> Value
type ReferenceMap = [(String, Value)]
mkRefMap :: Data a => a -> ReferenceMap
formatField :: String -> String
fromValue :: Data a => Value -> Maybe a
isValueSet :: Value -> Bool
data Empty
Empty :: Empty
data Agent
Agent :: [String] -> String -> String -> String -> String -> String -> Bool -> Agent
givenName :: Agent -> [String]
droppingPart :: Agent -> String
nonDroppingPart :: Agent -> String
familyName :: Agent -> String
nameSuffix :: Agent -> String
literal :: Agent -> String
commaSuffix :: Agent -> Bool
data RefDate
RefDate :: String -> String -> String -> String -> String -> String -> RefDate
year :: RefDate -> String
month :: RefDate -> String
season :: RefDate -> String
day :: RefDate -> String
other :: RefDate -> String
circa :: RefDate -> String
data RefType
NoType :: RefType
Article :: RefType
ArticleMagazine :: RefType
ArticleNewspaper :: RefType
ArticleJournal :: RefType
Bill :: RefType
Book :: RefType
Broadcast :: RefType
Chapter :: RefType
Dataset :: RefType
Entry :: RefType
EntryDictionary :: RefType
EntryEncyclopedia :: RefType
Figure :: RefType
Graphic :: RefType
Interview :: RefType
Legislation :: RefType
LegalCase :: RefType
Manuscript :: RefType
Map :: RefType
MotionPicture :: RefType
MusicalScore :: RefType
Pamphlet :: RefType
PaperConference :: RefType
Patent :: RefType
Post :: RefType
PostWeblog :: RefType
PersonalCommunication :: RefType
Report :: RefType
Review :: RefType
ReviewBook :: RefType
Song :: RefType
Speech :: RefType
Thesis :: RefType
Treaty :: RefType
Webpage :: RefType
newtype CNum
CNum :: Int -> CNum
unCNum :: CNum -> Int

-- | The <a>Reference</a> record.
data Reference
Reference :: String -> RefType -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [RefDate] -> [RefDate] -> [RefDate] -> [RefDate] -> [RefDate] -> [RefDate] -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> [String] -> CNum -> Int -> String -> Reference
refId :: Reference -> String
refType :: Reference -> RefType
author :: Reference -> [Agent]
editor :: Reference -> [Agent]
translator :: Reference -> [Agent]
recipient :: Reference -> [Agent]
interviewer :: Reference -> [Agent]
composer :: Reference -> [Agent]
illustrator :: Reference -> [Agent]
originalAuthor :: Reference -> [Agent]
containerAuthor :: Reference -> [Agent]
collectionEditor :: Reference -> [Agent]
editorialDirector :: Reference -> [Agent]
reviewedAuthor :: Reference -> [Agent]
issued :: Reference -> [RefDate]
eventDate :: Reference -> [RefDate]
accessed :: Reference -> [RefDate]
container :: Reference -> [RefDate]
originalDate :: Reference -> [RefDate]
submitted :: Reference -> [RefDate]
title :: Reference -> String
titleShort :: Reference -> String
reviewedTitle :: Reference -> String
containerTitle :: Reference -> String
collectionTitle :: Reference -> String
containerTitleShort :: Reference -> String
collectionNumber :: Reference -> String
originalTitle :: Reference -> String
publisher :: Reference -> String
originalPublisher :: Reference -> String
publisherPlace :: Reference -> String
originalPublisherPlace :: Reference -> String
authority :: Reference -> String
jurisdiction :: Reference -> String
archive :: Reference -> String
archivePlace :: Reference -> String
archiveLocation :: Reference -> String
event :: Reference -> String
eventPlace :: Reference -> String
page :: Reference -> String
pageFirst :: Reference -> String
numberOfPages :: Reference -> String
version :: Reference -> String
volume :: Reference -> String
numberOfVolumes :: Reference -> String
issue :: Reference -> String
chapterNumber :: Reference -> String
medium :: Reference -> String
status :: Reference -> String
edition :: Reference -> String
section :: Reference -> String
source :: Reference -> String
genre :: Reference -> String
note :: Reference -> String
annote :: Reference -> String
abstract :: Reference -> String
keyword :: Reference -> String
number :: Reference -> String
references :: Reference -> String
url :: Reference -> String
doi :: Reference -> String
isbn :: Reference -> String
issn :: Reference -> String
pmcid :: Reference -> String
pmid :: Reference -> String
callNumber :: Reference -> String
dimensions :: Reference -> String
scale :: Reference -> String
categories :: Reference -> [String]
citationNumber :: Reference -> CNum
firstReferenceNoteNumber :: Reference -> Int
citationLabel :: Reference -> String
emptyReference :: Reference
numericVars :: [String]
parseLocator :: String -> (String, String)
getReference :: [Reference] -> Cite -> Reference
processCites :: [Reference] -> [[Cite]] -> [[(Cite, Reference)]]
setCitationNumber :: [[(Cite, Reference)]] -> [[(Cite, Reference)]]
setPageFirst :: Reference -> Reference
setNearNote :: Style -> [[Cite]] -> [[Cite]]
readNum :: String -> Int
instance Typeable Empty
instance Typeable Agent
instance Typeable RefDate
instance Typeable RefType
instance Typeable CNum
instance Typeable Reference
instance Data Empty
instance Read Agent
instance Eq Agent
instance Data Agent
instance Show RefDate
instance Read RefDate
instance Eq RefDate
instance Data RefDate
instance Read RefType
instance Eq RefType
instance Data RefType
instance Show CNum
instance Read CNum
instance Eq CNum
instance Num CNum
instance Data CNum
instance Eq Reference
instance Show Reference
instance Read Reference
instance Data Reference
instance Show RefType
instance Show Agent
instance Show Value


-- | A module for reading Json CSL data.
module Text.CSL.Input.Json
readJsonInput :: FilePath -> IO [Reference]
readJsonInputString :: String -> [Reference]
readJsonFile :: FilePath -> IO JSValue
readJsonString :: String -> JSValue
readJsonAbbrevFile :: FilePath -> IO [Abbrev]
readJsonAbbrev :: JSValue -> [Abbrev]
readJsonCitations :: JSValue -> [Cite]
editJsonCiteItems :: (String, JSValue) -> (String, JSValue)
editJsonInput :: (String, JSValue) -> (String, JSValue)
toString :: JSValue -> JSValue
toJSBool :: JSValue -> JSValue
procJSObject :: ((String, JSValue) -> (String, JSValue)) -> JSValue -> JSValue
mapJSArray :: (JSValue -> JSValue) -> JSValue -> JSValue
isRefDate :: String -> Bool
readJSData :: Data a => JSValue -> Result a

-- | Build a datatype from a JSON object. Uses selectFields which allows to
--   provied default values for fields not present in the JSON object.
--   Useble with non algebraic datatype with record fields.
readType :: Data a => JSValue -> Result a
selectFields :: [(String, JSValue)] -> [String] -> Result [JSValue]
fromObj :: JSValue -> [(String, JSValue)]
fromJString :: JSValue -> String
defaultJson :: [(String, JSValue)]


-- | The CSL implementation
module Text.CSL.Eval.Common
data EvalState
EvalState :: ReferenceMap -> Environment -> [String] -> EvalMode -> Bool -> Bool -> String -> [String] -> Bool -> [[Output]] -> [Agent] -> [Output] -> EvalState
ref :: EvalState -> ReferenceMap
env :: EvalState -> Environment
debug :: EvalState -> [String]
mode :: EvalState -> EvalMode
disamb :: EvalState -> Bool
consume :: EvalState -> Bool
authSub :: EvalState -> String
consumed :: EvalState -> [String]
edtrans :: EvalState -> Bool
etal :: EvalState -> [[Output]]
contNum :: EvalState -> [Agent]
lastName :: EvalState -> [Output]
data Environment
Env :: Cite -> [TermMap] -> [MacroMap] -> [Element] -> [Option] -> [Element] -> [Abbrev] -> Environment
cite :: Environment -> Cite
terms :: Environment -> [TermMap]
macros :: Environment -> [MacroMap]
dates :: Environment -> [Element]
options :: Environment -> [Option]
names :: Environment -> [Element]
abbrevs :: Environment -> [Abbrev]
data EvalMode
EvalSorting :: Cite -> EvalMode
EvalCite :: Cite -> EvalMode
EvalBiblio :: String -> EvalMode
getCite :: EvalMode -> Cite
isSorting :: EvalMode -> Bool

-- | If the first parameter is <a>True</a> the plural form will be
--   retrieved.
getTerm :: Bool -> Form -> String -> State EvalState String
getStringVar :: String -> State EvalState String
getDateVar :: String -> State EvalState [RefDate]
getLocVar :: State EvalState (String, String)
getVar :: a -> (Value -> a) -> String -> State EvalState a
getAgents :: String -> State EvalState [Agent]
getAgents' :: String -> State EvalState [Agent]
getStringValue :: Value -> String
getOptionVal :: String -> [Option] -> String
isOptionSet :: String -> [Option] -> Bool
isVarSet :: String -> State EvalState Bool
withRefMap :: (ReferenceMap -> a) -> State EvalState a

-- | Convert variable to lower case, translating underscores (<a>_</a>) to
--   dashes (<a>-</a>)
formatVariable :: String -> String
consumeVariable :: String -> State EvalState ()
consuming :: State EvalState a -> State EvalState a
when' :: Monad m => m Bool -> m [a] -> m [a]
whenElse :: Monad m => m Bool -> m a -> m a -> m a
concatMapM :: (Monad m, Functor m, Eq b) => (a -> m [b]) -> [a] -> m [b]
trace :: String -> State EvalState ()
instance Show Environment
instance Show EvalMode
instance Eq EvalMode
instance Show EvalState


module Text.CSL.Pickle.Xml
showXML :: Content -> String
getText :: [Content] -> Maybe String
getChildren :: Content -> [Content]
getElemName :: Content -> Maybe QName
dropFirstElem :: [Content] -> [Content]
dropText :: [Content] -> [Content]
getAttName :: Attr -> String
getAttrl :: Content -> [Attr]
getAttrVal :: [Content] -> String
mkText :: String -> Content
attrToCont :: Attr -> Content
mkName :: String -> QName
mkElement :: String -> [Attr] -> [Content] -> Content
mkAttribute :: String -> String -> Attr
qualifiedName :: QName -> String
onlyElems' :: [Content] -> [Content]
parseXML' :: ByteString -> [Content]


-- | This module is mostly copied from Text.XML.HXT.Arrow.Pickle.Xml which
--   is an adaptation of the pickler combinators developed by Andrew
--   Kennedy.
--   
--   See:
--   <a>http://research.microsoft.com/~akenn/fun/picklercombinators.pdf</a>
module Text.CSL.Pickle
data St
St :: [Attr] -> [Content] -> St
attributes :: St -> [Attr]
contents :: St -> [Content]
data PU a
PU :: ((a, St) -> St) -> (St -> (Maybe a, St)) -> PU a
appPickle :: PU a -> (a, St) -> St
appUnPickle :: PU a -> St -> (Maybe a, St)
pickleXML :: PU a -> a -> String
unpickleXML :: PU a -> [Content] -> Maybe a
emptySt :: St
addAtt :: Attr -> St -> St
addCont :: Content -> St -> St
dropCont :: St -> St
getAtt :: String -> St -> Maybe Attr
getCont :: St -> Maybe Content
class XmlPickler a
xpickle :: XmlPickler a => PU a
xpPrim :: (Read a, Show a) => PU a
xpUnit :: PU ()
xpZero :: PU a
xpLift :: a -> PU a
xpCondSeq :: PU b -> (b -> a) -> PU a -> (a -> PU b) -> PU b
xpSeq :: (b -> a) -> PU a -> (a -> PU b) -> PU b
xpChoice :: PU b -> PU a -> (a -> PU b) -> PU b
xpWrap :: (a -> b, b -> a) -> PU a -> PU b
xpDefault :: Eq a => a -> PU a -> PU a
xpOption :: PU a -> PU (Maybe a)
xpAlt :: (a -> Int) -> [PU a] -> PU a
xpList :: PU a -> PU [a]
xpLiftMaybe :: Maybe a -> PU a
xpWrapMaybe :: (a -> Maybe b, b -> a) -> PU a -> PU b
xpPair :: PU a -> PU b -> PU (a, b)
xpTriple :: PU a -> PU b -> PU c -> PU (a, b, c)
xp4Tuple :: PU a -> PU b -> PU c -> PU d -> PU (a, b, c, d)
xp5Tuple :: PU a -> PU b -> PU c -> PU d -> PU e -> PU (a, b, c, d, e)
xp6Tuple :: PU a -> PU b -> PU c -> PU d -> PU e -> PU f -> PU (a, b, c, d, e, f)
xpText :: PU String
xpText0 :: PU String
xpElem :: String -> PU a -> PU a

-- | A pickler for interleaved elements.
xpIElem :: String -> PU a -> PU a
xpAttr :: String -> PU a -> PU a
xpElemWithAttrValue :: String -> String -> String -> PU a -> PU a
xpAttrFixed :: String -> String -> PU ()
xpAddFixedAttr :: String -> String -> PU a -> PU a
uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d
uncurry4 :: (a -> b -> c -> d -> e) -> (a, b, c, d) -> e
uncurry5 :: (a -> b -> c -> d -> e -> f) -> (a, b, c, d, e) -> f
unescape :: String -> String
readXmlString :: Show a => PU a -> ByteString -> a
readXmlFile :: Show a => PU a -> FilePath -> IO a
readFile' :: FilePath -> IO ByteString
instance XmlPickler a => XmlPickler (Maybe a)
instance XmlPickler a => XmlPickler [a]
instance XmlPickler ()
instance XmlPickler Integer
instance XmlPickler Int


-- | The CS Language parsers
module Text.CSL.Parser

-- | Read and parse a CSL style file into the internal style
--   representation, the <a>Style</a>.
readCSLFile :: FilePath -> IO Style

-- | Parse a <a>String</a> into a fully localized <a>Style</a>
parseCSL :: String -> IO Style
parseCSL' :: ByteString -> IO Style
readLocaleFile :: String -> IO Locale
xpStyle :: PU Style
xpInfo :: PU (Maybe CSInfo)
xpLocale :: PU Locale
xpTerms :: PU [TermMap]
xpMacros :: PU [MacroMap]
xpCitation :: PU Citation
xpBibliography :: PU Bibliography
xpOpt :: String -> PU [Option]
xpNamesOpt :: PU [Option]
xpNameFormat :: PU [Option]
xpNameAttrs :: PU NameAttrs
xpNameOpt :: PU [Option]
xpBibOpts :: PU [Option]
xpCitOpts :: PU [Option]
xpStyleOpts :: PU [Option]
xpSort :: PU [Sort]
xpChoose :: PU Element
xpMacro :: PU Element
xpConst :: PU Element
xpVariable :: PU Element
xpTerm :: PU Element
xpNames :: PU Element
xpShortNames :: PU Element
xpLabel :: PU Element
xpSubStitute :: PU Element
xpGroup :: PU Element
xpNumber :: PU Element
xpDate :: PU Element
xpLocaleDate :: PU Element
xpTextElem :: PU a -> PU a
xpDelimiter :: PU String
xpPlural :: PU Plural
xpCommon :: (XmlPickler b, XmlPickler c) => String -> PU (String, b, c)

-- | For mandatory attributes.
xpAttrText :: String -> PU String

-- | For optional attributes.
xpAttrText' :: String -> PU String
xpAttrWithDefault :: Eq a => a -> String -> PU a -> PU a
xpIElemWithDefault :: Eq a => a -> String -> PU a -> PU a
readable :: (Read a, Show b) => (String -> a, b -> String)
toShow :: String -> String
toRead :: String -> String
langBase :: [(String, String)]
instance XmlPickler CSCategory
instance XmlPickler CSAuthor
instance XmlPickler CSInfo
instance XmlPickler NamePart
instance XmlPickler Name
instance XmlPickler DatePart
instance XmlPickler Match
instance XmlPickler DateForm
instance XmlPickler NumericForm
instance XmlPickler Form
instance XmlPickler Bool
instance XmlPickler Sort
instance XmlPickler Formatting
instance XmlPickler Condition
instance XmlPickler IfThen
instance XmlPickler Element
instance XmlPickler Layout


-- | The CSL implementation
module Text.CSL.Eval.Date
evalDate :: Element -> State EvalState [Output]
getDate :: DateForm -> State EvalState Element
formatDate :: EvalMode -> String -> [TermMap] -> [DatePart] -> [RefDate] -> [Output]
ordinal :: [TermMap] -> String -> String
longOrdinal :: [TermMap] -> String -> String
parseRefDate :: RefDate -> [RefDate]


-- | The CSL implementation
module Text.CSL.Eval.Names
evalNames :: Bool -> [String] -> [Name] -> String -> State EvalState [Output]

-- | The <a>Bool</a> is <a>True</a> when formatting a name with a final
--   <a>et-al</a>. The first <a>String</a> represents the position and the
--   second the role (e.i. editor, translator, etc.).
formatNames :: Bool -> Delimiter -> String -> String -> [Agent] -> Name -> State EvalState [Output]

-- | The first <a>Bool</a> is <a>True</a> if we are evaluating the
--   bibliography. The <a>String</a> is the cite position. The function
--   also returns the number of contributors to be displayed.
isEtAl :: Bool -> [Option] -> String -> [Agent] -> (Bool, Int)

-- | Generate the <a>Agent</a>s names applying et-al options, with all
--   possible permutations to disambiguate colliding citations. The
--   <a>Bool</a> indicate whether we are formatting the first name or not.
formatName :: EvalMode -> Bool -> Form -> Formatting -> [Option] -> [NamePart] -> Agent -> [Output]
unwords' :: [String] -> String
formatLabel :: Form -> Formatting -> Bool -> String -> State EvalState [Output]
(<+>) :: String -> String -> String


-- | The CSL implementation
module Text.CSL.Eval

-- | Produce the output with a <a>Layout</a>, the <a>EvalMode</a>, a
--   <a>Bool</a> <a>True</a> if the evaluation happens for disambiguation
--   purposes, the <a>Locale</a>, the <a>MacroMap</a>, the position of the
--   cite and the <a>Reference</a>.
evalLayout :: Layout -> EvalMode -> Bool -> [Locale] -> [MacroMap] -> [Option] -> [Abbrev] -> Reference -> [Output]
evalSorting :: EvalMode -> [Locale] -> [MacroMap] -> [Option] -> [Sort] -> [Abbrev] -> Reference -> [Sorting]
last' :: [a] -> [a]
split :: (Char -> Bool) -> String -> [String]
trim :: String -> String


-- | This module provides functions for processing the evaluated
--   <a>Output</a> for citation disambiguation.
--   
--   Describe the disambiguation process.
module Text.CSL.Proc.Disamb

-- | Given the <a>Style</a>, the list of references and the citation
--   groups, disambiguate citations according to the style options.
disambCitations :: Style -> [Reference] -> Citations -> [CitationGroup] -> ([(String, String)], [CitationGroup])
mapDisambData :: (Output -> Output) -> CiteData -> CiteData
mapCitationGroup :: ([Output] -> [Output]) -> CitationGroup -> CitationGroup
data GiveNameDisambiguation
NoGiven :: GiveNameDisambiguation
ByCite :: GiveNameDisambiguation
AllNames :: GiveNameDisambiguation
disambAddNames :: GiveNameDisambiguation -> [CiteData] -> [CiteData]
disambAddGivenNames :: [NameData] -> [NameData]
updateContrib :: GiveNameDisambiguation -> [CiteData] -> [NameData] -> Output -> Output
updateOName :: [NameData] -> Output -> Output

-- | Evaluate again a citation group with the <a>EvalState</a>
--   <a>disamb</a> field set to <a>True</a> (for matching the
--   <tt>"disambiguate"</tt> condition).
reEvaluate :: Style -> [CiteData] -> [(Cite, Reference)] -> CitationGroup -> CitationGroup

-- | Check if the <a>Style</a> 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 <a>query</a>
--   function.
hasIfDis :: IfThen -> [Bool]

-- | Get the list of disambiguation options set in the <a>Style</a> for
--   citations.
getCitDisambOptions :: Style -> [String]

-- | Group citation data (with possible alternative names) of citations
--   which have a duplicate (same <a>collision</a>, and same <a>citYear</a>
--   if year suffix disambiiguation is used). If the first <a>Bool</a> is
--   <a>False</a>, then we need to retrieve data for year suffix
--   disambiguation. The second <a>Bool</a> is <a>True</a> when comparing
--   both year and contributors' names for finding duplicates (when the
--   year-suffix option is set).
getDuplCiteData :: Bool -> Bool -> [CitationGroup] -> [[CiteData]]
rmExtras :: [Output] -> [Output]

-- | For an evaluated citation get its <a>CiteData</a>. The disambiguated
--   citation and the year fields are empty. Only the first list of
--   contributors' disambiguation data are collected for disambiguation
--   purposes.
getCiteData :: Output -> [CiteData]
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]

-- | Try to disambiguate a list of lists by returning the first non
--   colliding element, if any, of each list:
--   
--   <pre>
--   disambiguate [[1,2],[1,3],[2]] = [[2],[3],[2]]
--   </pre>
disambiguate :: Eq a => [[a]] -> [[a]]

-- | For each element a list of <a>Bool</a>: <a>True</a> if the element has
--   a duplicate in the list:
--   
--   <pre>
--   same [1,2,1] = [True,False,True]
--   </pre>
same :: Eq a => [a] -> [Bool]
hasDuplicates :: Eq a => [a] -> Bool
allTheSame :: Eq a => [a] -> Bool
instance Show GiveNameDisambiguation
instance Eq GiveNameDisambiguation


-- | This module provides functions for processing the evaluated
--   <a>Output</a> for citation collapsing.
module Text.CSL.Proc.Collapse

-- | Collapse citations according to the style options.
collapseCitGroups :: Style -> [CitationGroup] -> [CitationGroup]

-- | Get the collapse option set in the <a>Style</a> for citations.
getCollapseOptions :: Style -> [String]
collapseNumber :: CitationGroup -> CitationGroup
collapseYear :: Style -> String -> CitationGroup -> CitationGroup
collapseYearSuf :: Bool -> String -> [(Cite, Output)] -> [Output]
collapseYearSufRanged :: [Output] -> [Output]
addCiteAffixes :: Cite -> Output -> Output
isNumStyle :: [Output] -> Bool

-- | Group consecutive integers:
--   
--   <pre>
--   groupConsec [1,2,3,5,6,8,9] == [[1,2,3],[5,6],[8,9]]
--   </pre>
groupConsec :: [Int] -> [[Int]]


-- | This module provides functions for processing the evaluated
--   <a>Output</a> for disambiguation and citation collapsing.
module Text.CSL.Proc
data ProcOpts
ProcOpts :: BibOpts -> ProcOpts
bibOpts :: ProcOpts -> BibOpts
data BibOpts
Select :: [(String, String)] -> [(String, String)] -> BibOpts
Include :: [(String, String)] -> [(String, String)] -> BibOpts
Exclude :: [(String, String)] -> [(String, String)] -> BibOpts
procOpts :: ProcOpts

-- | With a <a>Style</a>, a list of <a>Reference</a>s and the list of
--   citation groups (the list of citations with their locator), produce
--   the <a>FormattedOutput</a> for each citation group.
processCitations :: ProcOpts -> Style -> [Reference] -> Citations -> [[FormattedOutput]]

-- | With a <a>Style</a> and the list of <a>Reference</a>s produce the
--   <a>FormattedOutput</a> for the bibliography.
processBibliography :: ProcOpts -> Style -> [Reference] -> [[FormattedOutput]]

-- | With a <a>Style</a>, a list of <a>Reference</a>s and the list of
--   <a>Citations</a>, produce the <a>FormattedOutput</a> for each citation
--   group and the bibliography.
citeproc :: ProcOpts -> Style -> [Reference] -> Citations -> BiblioData

-- | Given the CSL <a>Style</a> and the list of <a>Reference</a>s sort the
--   list according to the <a>Style</a> and assign the citation number to
--   each <a>Reference</a>.
procRefs :: Style -> [Reference] -> [Reference]
sortItems :: Show a => [(a, [Sorting])] -> [a]

-- | With a <a>Style</a> and a sorted list of <a>Reference</a>s produce the
--   evaluated output for the bibliography.
procBiblio :: BibOpts -> Style -> [Reference] -> [[Output]]
filterRefs :: BibOpts -> [Reference] -> [Reference]

-- | Given the CSL <a>Style</a> and the list of <a>Cite</a>s coupled with
--   their <a>Reference</a>s, generate a <a>CitationGroup</a>. The
--   citations are sorted according to the <a>Style</a>.
procGroup :: Style -> [(Cite, Reference)] -> CitationGroup
formatBiblioLayout :: Formatting -> Delimiter -> [Output] -> [Output]
formatCitLayout :: Style -> CitationGroup -> [FormattedOutput]
addAffixes :: Formatting -> [Output] -> [Output]

-- | The <a>Bool</a> is <a>True</a> if we are formatting a textual citation
--   (in pandoc terminology).
localModifiers :: Style -> Bool -> Cite -> Output -> Output
instance Show BibOpts
instance Read BibOpts
instance Eq BibOpts
instance Show ProcOpts
instance Read ProcOpts
instance Eq ProcOpts


-- | An ugly MODS parser
module Text.CSL.Input.MODS

-- | Read a file with a single MODS record.
readModsFile :: FilePath -> IO Reference

-- | Read a file with a collection of MODS records.
readModsCollectionFile :: FilePath -> IO [Reference]
xpModsCollection :: PU [Reference]
xpMods :: PU Reference
xpReference :: PU Reference
xpCiteKey :: PU String
xpOrigin :: PU ([RefDate], [RefDate], [Agent], String, String)
xpRefType :: PU RefType
xpGenre :: PU [String]
xpRelatedItem :: PU Reference
xpTitle :: PU String
xpAgents :: PU (([Agent], [Agent], [Agent]), ([Agent], [Agent], [Agent]), ([Agent], [Agent], [Agent], [Agent]))
xpAgent :: String -> String -> PU [Agent]

-- | <a>von Hicks,! Jr., Michael</a> or <a>la Martine,! III, Martin B.
--   de</a> or <a>Rossato, Jr., Andrea G. B.</a> or <a>Paul, III, Juan</a>.
parseName :: [String] -> String -> Agent
xpNameData :: PU ([String], String)
xpPart :: PU (([RefDate], String, String, String), (String, String, String))
data Detail
Date :: [RefDate] -> Detail
Page :: String -> Detail
Volume :: String -> Detail
Issue :: String -> Detail
Number :: String -> Detail
ChapterNr :: String -> Detail
Section :: String -> Detail
xpDetail :: PU Detail
xpPage :: PU String
xpUrl :: PU ([RefDate], String)
xpIsbn :: PU String
xpDoi :: PU String
xpIdentifier :: String -> PU String
xpNote :: PU (String)
readDate :: String -> [RefDate]

-- | Possible formats: <a>YYYY</a>, <a>YYYY-MM</a>, <a>YYYY-MM-DD</a>.
parseDate :: String -> [RefDate]
emptyAgents :: [Agent]
fromAgent :: [Agent] -> String
readRefType :: [String] -> RefType
genreTypeMapping :: Map String RefType
instance Eq Detail
instance Show Detail
instance XmlPickler Agent


module Text.CSL.Input.Bibutils

-- | Read a file with a bibliographic database. The database format is
--   recognized by the file extension.
--   
--   Supported formats are: <tt>json</tt>, <tt>mods</tt>, <tt>bibtex</tt>,
--   <tt>biblatex</tt>, <tt>ris</tt>, <tt>endnote</tt>,
--   <tt>endnotexml</tt>, <tt>isi</tt>, <tt>medline</tt>, and
--   <tt>copac</tt>.
readBiblioFile :: FilePath -> IO [Reference]
readBiblioString :: BibFormat -> String -> IO [Reference]
data BibFormat
Mods :: BibFormat
Json :: BibFormat
Native :: BibFormat
Bibtex :: BibFormat
BibLatex :: BibFormat
Ris :: BibFormat
Endnote :: BibFormat
EndnotXml :: BibFormat
Isi :: BibFormat
Medline :: BibFormat
Copac :: BibFormat


-- | <i>citeproc-hs</i> is a library for automatically formatting
--   bibliographic reference citations into a variety of styles using a
--   macro language called Citation Style Language (CSL). More details on
--   CSL can be found here: <a>http://citationstyles.org/</a>.
--   
--   This module documents and exports the library API.
module Text.CSL

-- | Read a file with a bibliographic database. The database format is
--   recognized by the file extension.
--   
--   Supported formats are: <tt>json</tt>, <tt>mods</tt>, <tt>bibtex</tt>,
--   <tt>biblatex</tt>, <tt>ris</tt>, <tt>endnote</tt>,
--   <tt>endnotexml</tt>, <tt>isi</tt>, <tt>medline</tt>, and
--   <tt>copac</tt>.
readBiblioFile :: FilePath -> IO [Reference]
data BibFormat
Mods :: BibFormat
Json :: BibFormat
Native :: BibFormat
Bibtex :: BibFormat
BibLatex :: BibFormat
Ris :: BibFormat
Endnote :: BibFormat
EndnotXml :: BibFormat
Isi :: BibFormat
Medline :: BibFormat
Copac :: BibFormat
readBiblioString :: BibFormat -> String -> IO [Reference]

-- | Read a file with a single MODS record.
readModsFile :: FilePath -> IO Reference

-- | Read a file with a collection of MODS records.
readModsCollectionFile :: FilePath -> IO [Reference]
readJsonInput :: FilePath -> IO [Reference]
readJsonInputString :: String -> [Reference]
readJsonAbbrevFile :: FilePath -> IO [Abbrev]

-- | The <a>Reference</a> record.
data Reference
Reference :: String -> RefType -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [Agent] -> [RefDate] -> [RefDate] -> [RefDate] -> [RefDate] -> [RefDate] -> [RefDate] -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> [String] -> CNum -> Int -> String -> Reference
refId :: Reference -> String
refType :: Reference -> RefType
author :: Reference -> [Agent]
editor :: Reference -> [Agent]
translator :: Reference -> [Agent]
recipient :: Reference -> [Agent]
interviewer :: Reference -> [Agent]
composer :: Reference -> [Agent]
illustrator :: Reference -> [Agent]
originalAuthor :: Reference -> [Agent]
containerAuthor :: Reference -> [Agent]
collectionEditor :: Reference -> [Agent]
editorialDirector :: Reference -> [Agent]
reviewedAuthor :: Reference -> [Agent]
issued :: Reference -> [RefDate]
eventDate :: Reference -> [RefDate]
accessed :: Reference -> [RefDate]
container :: Reference -> [RefDate]
originalDate :: Reference -> [RefDate]
submitted :: Reference -> [RefDate]
title :: Reference -> String
titleShort :: Reference -> String
reviewedTitle :: Reference -> String
containerTitle :: Reference -> String
collectionTitle :: Reference -> String
containerTitleShort :: Reference -> String
collectionNumber :: Reference -> String
originalTitle :: Reference -> String
publisher :: Reference -> String
originalPublisher :: Reference -> String
publisherPlace :: Reference -> String
originalPublisherPlace :: Reference -> String
authority :: Reference -> String
jurisdiction :: Reference -> String
archive :: Reference -> String
archivePlace :: Reference -> String
archiveLocation :: Reference -> String
event :: Reference -> String
eventPlace :: Reference -> String
page :: Reference -> String
pageFirst :: Reference -> String
numberOfPages :: Reference -> String
version :: Reference -> String
volume :: Reference -> String
numberOfVolumes :: Reference -> String
issue :: Reference -> String
chapterNumber :: Reference -> String
medium :: Reference -> String
status :: Reference -> String
edition :: Reference -> String
section :: Reference -> String
source :: Reference -> String
genre :: Reference -> String
note :: Reference -> String
annote :: Reference -> String
abstract :: Reference -> String
keyword :: Reference -> String
number :: Reference -> String
references :: Reference -> String
url :: Reference -> String
doi :: Reference -> String
isbn :: Reference -> String
issn :: Reference -> String
pmcid :: Reference -> String
pmid :: Reference -> String
callNumber :: Reference -> String
dimensions :: Reference -> String
scale :: Reference -> String
categories :: Reference -> [String]
citationNumber :: Reference -> CNum
firstReferenceNoteNumber :: Reference -> Int
citationLabel :: Reference -> String
getReference :: [Reference] -> Cite -> Reference
parseLocator :: String -> (String, String)
setNearNote :: Style -> [[Cite]] -> [[Cite]]

-- | Read and parse a CSL style file into the internal style
--   representation, the <a>Style</a>.
readCSLFile :: FilePath -> IO Style

-- | Parse a <a>String</a> into a fully localized <a>Style</a>
parseCSL :: String -> IO Style

-- | The representation of a parsed CSL style.
data Style
Style :: String -> String -> Maybe CSInfo -> String -> [Locale] -> [Abbrev] -> [Option] -> [MacroMap] -> Citation -> Maybe Bibliography -> Style
styleVersion :: Style -> String
styleClass :: Style -> String
styleInfo :: Style -> Maybe CSInfo
styleDefaultLocale :: Style -> String
styleLocale :: Style -> [Locale]
styleAbbrevs :: Style -> [Abbrev]
csOptions :: Style -> [Option]
csMacros :: Style -> [MacroMap]
citation :: Style -> Citation
biblio :: Style -> Maybe Bibliography
data Citation
Citation :: [Option] -> [Sort] -> Layout -> Citation
citOptions :: Citation -> [Option]
citSort :: Citation -> [Sort]
citLayout :: Citation -> Layout
data Bibliography
Bibliography :: [Option] -> [Sort] -> Layout -> Bibliography
bibOptions :: Bibliography -> [Option]
bibSort :: Bibliography -> [Sort]
bibLayout :: Bibliography -> Layout
data Cite
Cite :: String -> Affix -> Affix -> String -> String -> String -> String -> Bool -> Bool -> Bool -> Int -> Cite
citeId :: Cite -> String
citePrefix :: Cite -> Affix
citeSuffix :: Cite -> Affix
citeLabel :: Cite -> String
citeLocator :: Cite -> String
citeNoteNumber :: Cite -> String
citePosition :: Cite -> String
nearNote :: Cite -> Bool
authorInText :: Cite -> Bool
suppressAuthor :: Cite -> Bool
citeHash :: Cite -> Int
data Affix
PlainText :: String -> Affix
PandocText :: [Inline] -> Affix
emptyCite :: Cite
data ProcOpts
ProcOpts :: BibOpts -> ProcOpts
bibOpts :: ProcOpts -> BibOpts
procOpts :: ProcOpts
data BibOpts
Select :: [(String, String)] -> [(String, String)] -> BibOpts
Include :: [(String, String)] -> [(String, String)] -> BibOpts
Exclude :: [(String, String)] -> [(String, String)] -> BibOpts

-- | With a <a>Style</a>, a list of <a>Reference</a>s and the list of
--   <a>Citations</a>, produce the <a>FormattedOutput</a> for each citation
--   group and the bibliography.
citeproc :: ProcOpts -> Style -> [Reference] -> Citations -> BiblioData

-- | With a <a>Style</a>, a list of <a>Reference</a>s and the list of
--   citation groups (the list of citations with their locator), produce
--   the <a>FormattedOutput</a> for each citation group.
processCitations :: ProcOpts -> Style -> [Reference] -> Citations -> [[FormattedOutput]]

-- | With a <a>Style</a> and the list of <a>Reference</a>s produce the
--   <a>FormattedOutput</a> for the bibliography.
processBibliography :: ProcOpts -> Style -> [Reference] -> [[FormattedOutput]]
data BiblioData
BD :: [[FormattedOutput]] -> [[FormattedOutput]] -> BiblioData
citations :: BiblioData -> [[FormattedOutput]]
bibliography :: BiblioData -> [[FormattedOutput]]

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

-- | List of <tt>FormatOutput</tt> items
FO :: Formatting -> [FormattedOutput] -> FormattedOutput

-- | Formatted number
FN :: String -> Formatting -> FormattedOutput

-- | Formatted string
FS :: String -> Formatting -> FormattedOutput

-- | Formatted uniform resource locator (URL)
FUrl :: String -> Formatting -> FormattedOutput

-- | Delimeter string
FDel :: String -> FormattedOutput

-- | Pandoc inline elements
FPan :: [Inline] -> FormattedOutput

-- | Null formatting item
FNull :: FormattedOutput

-- | Render the <a>FormattedOutput</a> into a plain text string.
renderPlain :: [FormattedOutput] -> String

-- | Same as <a>renderPlain</a> , but will not clean up the produced
--   output.
renderPlainStrict :: [FormattedOutput] -> String

-- | With a <a>Style</a> and the formatted output generate a <a>String</a>
--   in the native <a>Pandoc</a> formats (i.e. immediately readable by
--   pandoc).
renderPandoc :: Style -> [FormattedOutput] -> [Inline]

-- | Same as <a>renderPandoc</a>, but the output is wrapped in a pandoc
--   paragraph block.
renderPandoc' :: Style -> [FormattedOutput] -> Block
headInline :: [Inline] -> String
initInline :: [Inline] -> [Inline]
tailFirstInlineStr :: [Inline] -> [Inline]
toCapital :: [Inline] -> [Inline]
endWithPunct, startWithPunct :: [Inline] -> Bool


-- | A module for reading Frank's citeproc-js testsuite.
module Text.CSL.Test
toTest :: JSValue -> Test
runTS :: [String] -> Int -> FilePath -> IO ()
test :: FilePath -> IO Bool
test' :: Int -> FilePath -> IO Bool
test_ :: Int -> FilePath -> IO Bool
runTest :: Test -> IO (Bool, String)
data Test
Test :: String -> [Reference] -> Style -> [Abbrev] -> String -> BibOpts -> Maybe Citations -> Maybe Citations -> Test
testMode :: Test -> String
testInput :: Test -> [Reference]
testCSL :: Test -> Style
testAbbrevs :: Test -> [Abbrev]
testResult :: Test -> String
testBibSect :: Test -> BibOpts
testCitItems :: Test -> Maybe Citations
testCitations :: Test -> Maybe Citations
instance Show Test
