{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternGuards #-}
{-# LANGUAGE ScopedTypeVariables #-}
#if MIN_VERSION_base(4,8,0)
#define OVERLAPS {-# OVERLAPPING #-}
#else
{-# LANGUAGE OverlappingInstances #-}
#define OVERLAPS
#endif
module Text.CSL.Style ( readCSLString
, writeCSLString
, Formatted(..)
, Style(..)
, Locale(..)
, mergeLocales
, CslTerm(..)
, newTerm
, findTerm
, findTerm'
, Abbreviations(..)
, MacroMap
, Citation(..)
, Bibliography(..)
, Option
, mergeOptions
, Layout(..)
, Element(..)
, IfThen(..)
, Condition(..)
, Delimiter
, Match(..)
, match
, DatePart(..)
, defaultDate
, Sort(..)
, Sorting(..)
, compare'
, Form(..)
, Gender(..)
, NumericForm(..)
, DateForm(..)
, Plural(..)
, Name(..)
, NameAttrs
, NamePart(..)
, isPlural
, isName
, isNames
, hasEtAl
, Formatting(..)
, emptyFormatting
, rmTitleCase
, rmTitleCase'
, Quote(..)
, mergeFM
, CSInfo(..)
, CSAuthor(..)
, CSCategory(..)
, CiteprocError(..)
, Output(..)
, Citations
, Cite(..)
, emptyCite
, CitationGroup(..)
, BiblioData(..)
, CiteData(..)
, NameData(..)
, isPunctuationInQuote
, object'
, Agent(..)
, emptyAgent
)
where
import Prelude
import Control.Applicative ((<|>), (<$>))
import Control.Arrow hiding (left, right)
import Control.Monad (mplus)
import Data.Aeson hiding (Number)
import qualified Data.Aeson as Aeson
import Data.Aeson.Types (Pair)
import Data.Char (isLetter, isPunctuation, isUpper, toLower, isDigit)
import qualified Data.Char as Char
import Data.Generics (Data, Typeable)
import Data.List (intercalate, intersperse, isInfixOf,
isPrefixOf, nubBy)
import Data.List.Split (splitWhen, wordsBy)
import qualified Data.Map as M
import Data.Maybe (listToMaybe, isNothing)
import Data.String
import qualified Data.Text as T
import Data.Yaml.Builder (ToYaml (..))
import qualified Data.Yaml.Builder as Y
import GHC.Generics (Generic)
import Text.CSL.Compat.Pandoc (readHtml, writeMarkdown)
import Text.CSL.Util (orIfNull, headInline, initInline,
lastInline, mapping', mb, parseBool,
parseString, query, splitStrWhen,
tailInline, trimr, (.#:), (.#?),
AddYaml(..), addSpaceAfterPeriod)
import qualified Text.Pandoc.Builder as B
import Text.Pandoc.Definition hiding (Citation, Cite)
import qualified Text.Pandoc.Walk as Walk
import Text.Pandoc.XML (fromEntities)
#ifdef UNICODE_COLLATION
import qualified Data.Text as T
import qualified Data.Text.ICU as T
#else
import Data.RFC5051 (compareUnicode)
#endif
import qualified Data.Vector as V
readCSLString :: String -> [Inline]
readCSLString :: String -> [Inline]
readCSLString s :: String
s = (Inline -> Inline) -> [Inline] -> [Inline]
forall a b. Walkable a b => (a -> a) -> b -> b
Walk.walk Inline -> Inline
handleSmallCapsSpans
([Inline] -> [Inline]) -> [Inline] -> [Inline]
forall a b. (a -> b) -> a -> b
$ case String -> Pandoc
readHtml (String -> String
adjustScTags String
s) of
Pandoc _ [Plain ils :: [Inline]
ils] -> [Inline]
ils
Pandoc _ [Para ils :: [Inline]
ils] -> [Inline]
ils
Pandoc _ x :: [Block]
x -> (Inline -> [Inline]) -> [Block] -> [Inline]
forall a b c. (Walkable a b, Monoid c) => (a -> c) -> b -> c
Walk.query (Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
:[]) [Block]
x
where handleSmallCapsSpans :: Inline -> Inline
handleSmallCapsSpans (Span ("",[],[("style",sty :: Text
sty)]) ils :: [Inline]
ils)
| (Char -> Bool) -> Text -> Text
T.filter (Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` (" \t;" :: String)) Text
sty Text -> Text -> Bool
forall a. Eq a => a -> a -> Bool
== "font-variant:small-caps" =
[Inline] -> Inline
SmallCaps [Inline]
ils
handleSmallCapsSpans x :: Inline
x = Inline
x
adjustScTags :: String -> String
adjustScTags :: String -> String
adjustScTags zs :: String
zs =
case String
zs of
('<':'s':'c':'>':xs :: String
xs) -> "<span style=\"font-variant:small-caps;\">" String -> String -> String
forall a. [a] -> [a] -> [a]
++
String -> String
adjustScTags String
xs
('<':'/':'s':'c':'>':xs :: String
xs) -> "</span>" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
adjustScTags String
xs
(x :: Char
x:xs :: String
xs) -> Char
x Char -> String -> String
forall a. a -> [a] -> [a]
: String -> String
adjustScTags String
xs
[] -> []
writeYAMLString :: [Inline] -> String
writeYAMLString :: [Inline] -> String
writeYAMLString ils :: [Inline]
ils =
String -> String
trimr (String -> String) -> String -> String
forall a b. (a -> b) -> a -> b
$ Pandoc -> String
writeMarkdown
(Pandoc -> String) -> Pandoc -> String
forall a b. (a -> b) -> a -> b
$ Meta -> [Block] -> Pandoc
Pandoc Meta
nullMeta
[[Inline] -> Block
Plain ([Inline] -> Block) -> [Inline] -> Block
forall a b. (a -> b) -> a -> b
$ ([Inline] -> [Inline]) -> [Inline] -> [Inline]
forall a b. Walkable a b => (a -> a) -> b -> b
Walk.walk ((Inline -> [Inline]) -> [Inline] -> [Inline]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap (Bool -> Inline -> [Inline]
adjustCSL Bool
False)) [Inline]
ils]
writeCSLString :: [Inline] -> String
writeCSLString :: [Inline] -> String
writeCSLString ils :: [Inline]
ils =
String -> String
trimr (String -> String) -> String -> String
forall a b. (a -> b) -> a -> b
$ Pandoc -> String
writeMarkdown
(Pandoc -> String) -> Pandoc -> String
forall a b. (a -> b) -> a -> b
$ Meta -> [Block] -> Pandoc
Pandoc Meta
nullMeta
[[Inline] -> Block
Plain ([Inline] -> Block) -> [Inline] -> Block
forall a b. (a -> b) -> a -> b
$ ([Inline] -> [Inline]) -> [Inline] -> [Inline]
forall a b. Walkable a b => (a -> a) -> b -> b
Walk.walk ((Inline -> [Inline]) -> [Inline] -> [Inline]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap (Bool -> Inline -> [Inline]
adjustCSL Bool
True)) [Inline]
ils]
adjustCSL :: Bool -> Inline -> [Inline]
adjustCSL :: Bool -> Inline -> [Inline]
adjustCSL _ (Span ("",[],[]) xs :: [Inline]
xs) = [Inline]
xs
adjustCSL _ (Span ("",["citeproc-no-output"],[]) _) =
[Text -> Inline
Str "[CSL STYLE ERROR: reference with no printed form.]"]
adjustCSL True (SmallCaps xs :: [Inline]
xs) =
Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "<sc>" Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline]
xs
[Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "</sc>"]
adjustCSL True (Subscript xs :: [Inline]
xs) =
Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "<sub>" Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline]
xs
[Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "</sub>"]
adjustCSL True (Superscript xs :: [Inline]
xs) =
Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "<sup>" Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline]
xs
[Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "</sup>"]
adjustCSL True (Emph xs :: [Inline]
xs) =
Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "<i>" Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline]
xs
[Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "</i>"]
adjustCSL True (Strong xs :: [Inline]
xs) =
Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "<b>" Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline]
xs
[Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Format -> Text -> Inline
RawInline (Text -> Format
Format "html") "</b>"]
adjustCSL _ x :: Inline
x = [Inline
x]
newtype Formatted = Formatted { Formatted -> [Inline]
unFormatted :: [Inline] }
deriving ( Int -> Formatted -> String -> String
[Formatted] -> String -> String
Formatted -> String
(Int -> Formatted -> String -> String)
-> (Formatted -> String)
-> ([Formatted] -> String -> String)
-> Show Formatted
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Formatted] -> String -> String
$cshowList :: [Formatted] -> String -> String
show :: Formatted -> String
$cshow :: Formatted -> String
showsPrec :: Int -> Formatted -> String -> String
$cshowsPrec :: Int -> Formatted -> String -> String
Show, ReadPrec [Formatted]
ReadPrec Formatted
Int -> ReadS Formatted
ReadS [Formatted]
(Int -> ReadS Formatted)
-> ReadS [Formatted]
-> ReadPrec Formatted
-> ReadPrec [Formatted]
-> Read Formatted
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Formatted]
$creadListPrec :: ReadPrec [Formatted]
readPrec :: ReadPrec Formatted
$creadPrec :: ReadPrec Formatted
readList :: ReadS [Formatted]
$creadList :: ReadS [Formatted]
readsPrec :: Int -> ReadS Formatted
$creadsPrec :: Int -> ReadS Formatted
Read, Formatted -> Formatted -> Bool
(Formatted -> Formatted -> Bool)
-> (Formatted -> Formatted -> Bool) -> Eq Formatted
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Formatted -> Formatted -> Bool
$c/= :: Formatted -> Formatted -> Bool
== :: Formatted -> Formatted -> Bool
$c== :: Formatted -> Formatted -> Bool
Eq, Eq Formatted
Eq Formatted =>
(Formatted -> Formatted -> Ordering)
-> (Formatted -> Formatted -> Bool)
-> (Formatted -> Formatted -> Bool)
-> (Formatted -> Formatted -> Bool)
-> (Formatted -> Formatted -> Bool)
-> (Formatted -> Formatted -> Formatted)
-> (Formatted -> Formatted -> Formatted)
-> Ord Formatted
Formatted -> Formatted -> Bool
Formatted -> Formatted -> Ordering
Formatted -> Formatted -> Formatted
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Formatted -> Formatted -> Formatted
$cmin :: Formatted -> Formatted -> Formatted
max :: Formatted -> Formatted -> Formatted
$cmax :: Formatted -> Formatted -> Formatted
>= :: Formatted -> Formatted -> Bool
$c>= :: Formatted -> Formatted -> Bool
> :: Formatted -> Formatted -> Bool
$c> :: Formatted -> Formatted -> Bool
<= :: Formatted -> Formatted -> Bool
$c<= :: Formatted -> Formatted -> Bool
< :: Formatted -> Formatted -> Bool
$c< :: Formatted -> Formatted -> Bool
compare :: Formatted -> Formatted -> Ordering
$ccompare :: Formatted -> Formatted -> Ordering
$cp1Ord :: Eq Formatted
Ord, Typeable Formatted
DataType
Constr
Typeable Formatted =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatted -> c Formatted)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatted)
-> (Formatted -> Constr)
-> (Formatted -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Formatted))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Formatted))
-> ((forall b. Data b => b -> b) -> Formatted -> Formatted)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Formatted -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Formatted -> r)
-> (forall u. (forall d. Data d => d -> u) -> Formatted -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> Formatted -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Formatted -> m Formatted)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatted -> m Formatted)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatted -> m Formatted)
-> Data Formatted
Formatted -> DataType
Formatted -> Constr
(forall b. Data b => b -> b) -> Formatted -> Formatted
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatted -> c Formatted
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatted
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Formatted -> u
forall u. (forall d. Data d => d -> u) -> Formatted -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Formatted -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Formatted -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Formatted -> m Formatted
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatted -> m Formatted
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatted
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatted -> c Formatted
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Formatted)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Formatted)
$cFormatted :: Constr
$tFormatted :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Formatted -> m Formatted
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatted -> m Formatted
gmapMp :: (forall d. Data d => d -> m d) -> Formatted -> m Formatted
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatted -> m Formatted
gmapM :: (forall d. Data d => d -> m d) -> Formatted -> m Formatted
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Formatted -> m Formatted
gmapQi :: Int -> (forall d. Data d => d -> u) -> Formatted -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Formatted -> u
gmapQ :: (forall d. Data d => d -> u) -> Formatted -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Formatted -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Formatted -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Formatted -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Formatted -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Formatted -> r
gmapT :: (forall b. Data b => b -> b) -> Formatted -> Formatted
$cgmapT :: (forall b. Data b => b -> b) -> Formatted -> Formatted
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Formatted)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Formatted)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Formatted)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Formatted)
dataTypeOf :: Formatted -> DataType
$cdataTypeOf :: Formatted -> DataType
toConstr :: Formatted -> Constr
$ctoConstr :: Formatted -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatted
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatted
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatted -> c Formatted
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatted -> c Formatted
$cp1Data :: Typeable Formatted
Data, Typeable, (forall x. Formatted -> Rep Formatted x)
-> (forall x. Rep Formatted x -> Formatted) -> Generic Formatted
forall x. Rep Formatted x -> Formatted
forall x. Formatted -> Rep Formatted x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Formatted x -> Formatted
$cfrom :: forall x. Formatted -> Rep Formatted x
Generic )
instance FromJSON Formatted where
parseJSON :: Value -> Parser Formatted
parseJSON v :: Value
v@(Array _) =
[Inline] -> Formatted
Formatted ([Inline] -> Formatted) -> Parser [Inline] -> Parser Formatted
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Value -> Parser [Inline]
forall a. FromJSON a => Value -> Parser a
parseJSON Value
v
Parser [Inline] -> Parser [Inline] -> Parser [Inline]
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> (((Inline -> [Inline]) -> [Block] -> [Inline]
forall a b m. (Typeable a, Data b, Monoid m) => (a -> m) -> b -> m
query (Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
:[]) :: [Block] -> [Inline]) ([Block] -> [Inline]) -> Parser [Block] -> Parser [Inline]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser [Block]
forall a. FromJSON a => Value -> Parser a
parseJSON Value
v))
parseJSON v :: Value
v = ([Inline] -> Formatted
Formatted ([Inline] -> Formatted)
-> (String -> [Inline]) -> String -> Formatted
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [Inline]
readCSLString) (String -> Formatted) -> Parser String -> Parser Formatted
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Control.Applicative.<$> Value -> Parser String
parseString Value
v
instance ToJSON Formatted where
toJSON :: Formatted -> Value
toJSON = String -> Value
forall a. ToJSON a => a -> Value
toJSON (String -> Value) -> (Formatted -> String) -> Formatted -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Inline] -> String
writeCSLString ([Inline] -> String)
-> (Formatted -> [Inline]) -> Formatted -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatted -> [Inline]
unFormatted
instance ToYaml Formatted where
toYaml :: Formatted -> YamlBuilder
toYaml = Text -> YamlBuilder
Y.string (Text -> YamlBuilder)
-> (Formatted -> Text) -> Formatted -> YamlBuilder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (Formatted -> String) -> Formatted -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Inline] -> String
writeYAMLString ([Inline] -> String)
-> (Formatted -> [Inline]) -> Formatted -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatted -> [Inline]
unFormatted
instance IsString Formatted where
fromString :: String -> Formatted
fromString = [Inline] -> Formatted
Formatted ([Inline] -> Formatted)
-> (String -> [Inline]) -> String -> Formatted
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [Inline]
toStr
instance AddYaml Formatted where
x :: Text
x &= :: Text -> Formatted -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
&= (Formatted y :: [Inline]
y) =
\acc :: [(Text, YamlBuilder)]
acc -> if [Inline] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [Inline]
y
then [(Text, YamlBuilder)]
acc
else (Text
x Text -> Formatted -> (Text, YamlBuilder)
forall a. ToYaml a => Text -> a -> (Text, YamlBuilder)
Y..= [Inline] -> Formatted
Formatted [Inline]
y) (Text, YamlBuilder)
-> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a. a -> [a] -> [a]
: [(Text, YamlBuilder)]
acc
instance Semigroup Formatted where
<> :: Formatted -> Formatted -> Formatted
(<>) = Formatted -> Formatted -> Formatted
appendWithPunct
instance Monoid Formatted where
mempty :: Formatted
mempty = [Inline] -> Formatted
Formatted []
mappend :: Formatted -> Formatted -> Formatted
mappend = Formatted -> Formatted -> Formatted
forall a. Semigroup a => a -> a -> a
(<>)
mconcat :: [Formatted] -> Formatted
mconcat = (Formatted -> Formatted -> Formatted)
-> Formatted -> [Formatted] -> Formatted
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr Formatted -> Formatted -> Formatted
forall a. Monoid a => a -> a -> a
mappend Formatted
forall a. Monoid a => a
mempty
instance Walk.Walkable Inline Formatted where
walk :: (Inline -> Inline) -> Formatted -> Formatted
walk f :: Inline -> Inline
f = [Inline] -> Formatted
Formatted ([Inline] -> Formatted)
-> (Formatted -> [Inline]) -> Formatted -> Formatted
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Inline -> Inline) -> [Inline] -> [Inline]
forall a b. Walkable a b => (a -> a) -> b -> b
Walk.walk Inline -> Inline
f ([Inline] -> [Inline])
-> (Formatted -> [Inline]) -> Formatted -> [Inline]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatted -> [Inline]
unFormatted
walkM :: (Inline -> m Inline) -> Formatted -> m Formatted
walkM f :: Inline -> m Inline
f = ([Inline] -> Formatted) -> m [Inline] -> m Formatted
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Inline] -> Formatted
Formatted (m [Inline] -> m Formatted)
-> (Formatted -> m [Inline]) -> Formatted -> m Formatted
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Inline -> m Inline) -> [Inline] -> m [Inline]
forall a b (m :: * -> *).
(Walkable a b, Monad m, Applicative m, Functor m) =>
(a -> m a) -> b -> m b
Walk.walkM Inline -> m Inline
f ([Inline] -> m [Inline])
-> (Formatted -> [Inline]) -> Formatted -> m [Inline]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatted -> [Inline]
unFormatted
query :: (Inline -> c) -> Formatted -> c
query f :: Inline -> c
f = (Inline -> c) -> [Inline] -> c
forall a b c. (Walkable a b, Monoid c) => (a -> c) -> b -> c
Walk.query Inline -> c
f ([Inline] -> c) -> (Formatted -> [Inline]) -> Formatted -> c
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatted -> [Inline]
unFormatted
instance Walk.Walkable Formatted Formatted where
walk :: (Formatted -> Formatted) -> Formatted -> Formatted
walk f :: Formatted -> Formatted
f = Formatted -> Formatted
f
walkM :: (Formatted -> m Formatted) -> Formatted -> m Formatted
walkM f :: Formatted -> m Formatted
f = Formatted -> m Formatted
f
query :: (Formatted -> c) -> Formatted -> c
query f :: Formatted -> c
f = Formatted -> c
f
toStr :: String -> [Inline]
toStr :: String -> [Inline]
toStr = [Inline] -> [[Inline]] -> [Inline]
forall a. [a] -> [[a]] -> [a]
intercalate [Text -> Inline
Str "\n"] ([[Inline]] -> [Inline])
-> (String -> [[Inline]]) -> String -> [Inline]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
(String -> [Inline]) -> [String] -> [[Inline]]
forall a b. (a -> b) -> [a] -> [b]
map (Many Inline -> [Inline]
forall a. Many a -> [a]
B.toList (Many Inline -> [Inline])
-> (String -> Many Inline) -> String -> [Inline]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Many Inline
B.text (Text -> Many Inline) -> (String -> Text) -> String -> Many Inline
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (String -> String) -> String -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
tweak (String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
T.unpack (Text -> String) -> (String -> Text) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Text
fromEntities (Text -> Text) -> (String -> Text) -> String -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack) ([String] -> [[Inline]])
-> (String -> [String]) -> String -> [[Inline]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
(Char -> Bool) -> String -> [String]
forall a. (a -> Bool) -> [a] -> [[a]]
splitWhen (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
=='\n')
where
tweak :: String -> String
tweak ('«':' ':xs :: String
xs) = "«\8239" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
tweak String
xs
tweak (' ':'»':xs :: String
xs) = "\8239»" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
tweak String
xs
tweak (' ':';':xs :: String
xs) = "\8239;" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
tweak String
xs
tweak (' ':':':xs :: String
xs) = "\8239:" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
tweak String
xs
tweak (' ':'!':xs :: String
xs) = "\8239!" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
tweak String
xs
tweak (' ':'?':xs :: String
xs) = "\8239?" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
tweak String
xs
tweak ( x :: Char
x :xs :: String
xs ) = Char
x Char -> String -> String
forall a. a -> [a] -> [a]
: String -> String
tweak String
xs
tweak [] = []
appendWithPunct :: Formatted -> Formatted -> Formatted
appendWithPunct :: Formatted -> Formatted -> Formatted
appendWithPunct (Formatted left :: [Inline]
left) (Formatted right :: [Inline]
right) =
[Inline] -> Formatted
Formatted ([Inline] -> Formatted) -> [Inline] -> Formatted
forall a b. (a -> b) -> a -> b
$
case String
lastleft String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
firstright of
[' ',d :: Char
d] | Char
d Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` (",.:;" :: String) -> [Inline] -> [Inline]
initInline [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline]
right
[c :: Char
c,d :: Char
d] | Char
c Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` (" ,.:;" :: String), Char
d Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
c -> [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline] -> [Inline]
tailInline [Inline]
right
[c :: Char
c,'.'] | Char
c Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` (",.!:;?" :: String) -> [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline] -> [Inline]
tailInline [Inline]
right
[c :: Char
c,':'] | Char
c Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` (",!:;?" :: String) -> [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline] -> [Inline]
tailInline [Inline]
right
[c :: Char
c,'!'] | Char
c Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` (",.!:;?" :: String) -> [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline] -> [Inline]
tailInline [Inline]
right
[c :: Char
c,'?'] | Char
c Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` (",.!:;?" :: String) -> [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline] -> [Inline]
tailInline [Inline]
right
[c :: Char
c,';'] | Char
c Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` (",:;" :: String) -> [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline] -> [Inline]
tailInline [Inline]
right
[':',c :: Char
c] | Char
c Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` (",.!:;?" :: String) -> [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline] -> [Inline]
tailInline [Inline]
right
[';',c :: Char
c] | Char
c Char -> String -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` (",.!:;?" :: String) -> [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline] -> [Inline]
tailInline [Inline]
right
_ -> [Inline]
left [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline]
right
where lastleft :: String
lastleft = [Inline] -> String
lastInline [Inline]
left
firstright :: String
firstright = [Inline] -> String
headInline [Inline]
right
data Style
= Style
{ Style -> String
styleVersion :: String
, Style -> String
styleClass :: String
, Style -> Maybe CSInfo
styleInfo :: Maybe CSInfo
, Style -> String
styleDefaultLocale :: String
, Style -> [Locale]
styleLocale :: [Locale]
, Style -> Abbreviations
styleAbbrevs :: Abbreviations
, Style -> [Option]
csOptions :: [Option]
, Style -> [MacroMap]
csMacros :: [MacroMap]
, Style -> Citation
citation :: Citation
, Style -> Maybe Bibliography
biblio :: Maybe Bibliography
} deriving ( Int -> Style -> String -> String
[Style] -> String -> String
Style -> String
(Int -> Style -> String -> String)
-> (Style -> String) -> ([Style] -> String -> String) -> Show Style
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Style] -> String -> String
$cshowList :: [Style] -> String -> String
show :: Style -> String
$cshow :: Style -> String
showsPrec :: Int -> Style -> String -> String
$cshowsPrec :: Int -> Style -> String -> String
Show, ReadPrec [Style]
ReadPrec Style
Int -> ReadS Style
ReadS [Style]
(Int -> ReadS Style)
-> ReadS [Style]
-> ReadPrec Style
-> ReadPrec [Style]
-> Read Style
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Style]
$creadListPrec :: ReadPrec [Style]
readPrec :: ReadPrec Style
$creadPrec :: ReadPrec Style
readList :: ReadS [Style]
$creadList :: ReadS [Style]
readsPrec :: Int -> ReadS Style
$creadsPrec :: Int -> ReadS Style
Read, Typeable, Typeable Style
DataType
Constr
Typeable Style =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Style -> c Style)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Style)
-> (Style -> Constr)
-> (Style -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Style))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Style))
-> ((forall b. Data b => b -> b) -> Style -> Style)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Style -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Style -> r)
-> (forall u. (forall d. Data d => d -> u) -> Style -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Style -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Style -> m Style)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Style -> m Style)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Style -> m Style)
-> Data Style
Style -> DataType
Style -> Constr
(forall b. Data b => b -> b) -> Style -> Style
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Style -> c Style
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Style
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Style -> u
forall u. (forall d. Data d => d -> u) -> Style -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Style -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Style -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Style -> m Style
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Style -> m Style
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Style
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Style -> c Style
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Style)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Style)
$cStyle :: Constr
$tStyle :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Style -> m Style
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Style -> m Style
gmapMp :: (forall d. Data d => d -> m d) -> Style -> m Style
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Style -> m Style
gmapM :: (forall d. Data d => d -> m d) -> Style -> m Style
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Style -> m Style
gmapQi :: Int -> (forall d. Data d => d -> u) -> Style -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Style -> u
gmapQ :: (forall d. Data d => d -> u) -> Style -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Style -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Style -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Style -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Style -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Style -> r
gmapT :: (forall b. Data b => b -> b) -> Style -> Style
$cgmapT :: (forall b. Data b => b -> b) -> Style -> Style
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Style)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Style)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Style)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Style)
dataTypeOf :: Style -> DataType
$cdataTypeOf :: Style -> DataType
toConstr :: Style -> Constr
$ctoConstr :: Style -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Style
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Style
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Style -> c Style
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Style -> c Style
$cp1Data :: Typeable Style
Data, (forall x. Style -> Rep Style x)
-> (forall x. Rep Style x -> Style) -> Generic Style
forall x. Rep Style x -> Style
forall x. Style -> Rep Style x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Style x -> Style
$cfrom :: forall x. Style -> Rep Style x
Generic )
data Locale
= Locale
{ Locale -> String
localeVersion :: String
, Locale -> String
localeLang :: String
, Locale -> [Option]
localeOptions :: [Option]
, Locale -> [CslTerm]
localeTerms :: [CslTerm]
, Locale -> [Element]
localeDate :: [Element]
} deriving ( Int -> Locale -> String -> String
[Locale] -> String -> String
Locale -> String
(Int -> Locale -> String -> String)
-> (Locale -> String)
-> ([Locale] -> String -> String)
-> Show Locale
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Locale] -> String -> String
$cshowList :: [Locale] -> String -> String
show :: Locale -> String
$cshow :: Locale -> String
showsPrec :: Int -> Locale -> String -> String
$cshowsPrec :: Int -> Locale -> String -> String
Show, ReadPrec [Locale]
ReadPrec Locale
Int -> ReadS Locale
ReadS [Locale]
(Int -> ReadS Locale)
-> ReadS [Locale]
-> ReadPrec Locale
-> ReadPrec [Locale]
-> Read Locale
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Locale]
$creadListPrec :: ReadPrec [Locale]
readPrec :: ReadPrec Locale
$creadPrec :: ReadPrec Locale
readList :: ReadS [Locale]
$creadList :: ReadS [Locale]
readsPrec :: Int -> ReadS Locale
$creadsPrec :: Int -> ReadS Locale
Read, Locale -> Locale -> Bool
(Locale -> Locale -> Bool)
-> (Locale -> Locale -> Bool) -> Eq Locale
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Locale -> Locale -> Bool
$c/= :: Locale -> Locale -> Bool
== :: Locale -> Locale -> Bool
$c== :: Locale -> Locale -> Bool
Eq, Typeable, Typeable Locale
DataType
Constr
Typeable Locale =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Locale -> c Locale)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Locale)
-> (Locale -> Constr)
-> (Locale -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Locale))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Locale))
-> ((forall b. Data b => b -> b) -> Locale -> Locale)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Locale -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Locale -> r)
-> (forall u. (forall d. Data d => d -> u) -> Locale -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Locale -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Locale -> m Locale)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Locale -> m Locale)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Locale -> m Locale)
-> Data Locale
Locale -> DataType
Locale -> Constr
(forall b. Data b => b -> b) -> Locale -> Locale
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Locale -> c Locale
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Locale
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Locale -> u
forall u. (forall d. Data d => d -> u) -> Locale -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Locale -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Locale -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Locale -> m Locale
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Locale -> m Locale
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Locale
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Locale -> c Locale
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Locale)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Locale)
$cLocale :: Constr
$tLocale :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Locale -> m Locale
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Locale -> m Locale
gmapMp :: (forall d. Data d => d -> m d) -> Locale -> m Locale
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Locale -> m Locale
gmapM :: (forall d. Data d => d -> m d) -> Locale -> m Locale
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Locale -> m Locale
gmapQi :: Int -> (forall d. Data d => d -> u) -> Locale -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Locale -> u
gmapQ :: (forall d. Data d => d -> u) -> Locale -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Locale -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Locale -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Locale -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Locale -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Locale -> r
gmapT :: (forall b. Data b => b -> b) -> Locale -> Locale
$cgmapT :: (forall b. Data b => b -> b) -> Locale -> Locale
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Locale)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Locale)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Locale)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Locale)
dataTypeOf :: Locale -> DataType
$cdataTypeOf :: Locale -> DataType
toConstr :: Locale -> Constr
$ctoConstr :: Locale -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Locale
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Locale
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Locale -> c Locale
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Locale -> c Locale
$cp1Data :: Typeable Locale
Data, (forall x. Locale -> Rep Locale x)
-> (forall x. Rep Locale x -> Locale) -> Generic Locale
forall x. Rep Locale x -> Locale
forall x. Locale -> Rep Locale x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Locale x -> Locale
$cfrom :: forall x. Locale -> Rep Locale x
Generic )
mergeLocales :: String -> Locale -> [Locale] -> [Locale]
mergeLocales :: String -> Locale -> [Locale] -> [Locale]
mergeLocales s :: String
s l :: Locale
l ls :: [Locale]
ls = [Locale] -> [Locale]
forall (m :: * -> *) (t :: * -> *).
(Monad m, Foldable t) =>
t Locale -> m Locale
doMerge [Locale]
list
where
list :: [Locale]
list = (Locale -> Bool) -> [Locale] -> [Locale]
forall a. (a -> Bool) -> [a] -> [a]
filter (String -> String -> Bool
forall a. Eq a => a -> a -> Bool
(==) String
s (String -> Bool) -> (Locale -> String) -> Locale -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Locale -> String
localeLang) [Locale]
ls [Locale] -> [Locale] -> [Locale]
forall a. [a] -> [a] -> [a]
++
(Locale -> Bool) -> [Locale] -> [Locale]
forall a. (a -> Bool) -> [a] -> [a]
filter ((\x :: String
x -> String
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
/= [] Bool -> Bool -> Bool
&& String
x String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isPrefixOf` String
s) (String -> Bool) -> (Locale -> String) -> Locale -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Locale -> String
localeLang) [Locale]
ls [Locale] -> [Locale] -> [Locale]
forall a. [a] -> [a] -> [a]
++
(Locale -> Bool) -> [Locale] -> [Locale]
forall a. (a -> Bool) -> [a] -> [a]
filter (String -> String -> Bool
forall a. Eq a => a -> a -> Bool
(==) [] (String -> Bool) -> (Locale -> String) -> Locale -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Locale -> String
localeLang) [Locale]
ls
doMerge :: t Locale -> m Locale
doMerge x :: t Locale
x = Locale -> m Locale
forall (m :: * -> *) a. Monad m => a -> m a
return Locale
l { localeOptions :: [Option]
localeOptions = t Locale -> [Option]
forall (t :: * -> *). Foldable t => t Locale -> [Option]
newOpt t Locale
x
, localeTerms :: [CslTerm]
localeTerms = t Locale -> [CslTerm]
forall (t :: * -> *). Foldable t => t Locale -> [CslTerm]
newTerms t Locale
x
, localeDate :: [Element]
localeDate = t Locale -> [Element]
forall (t :: * -> *). Foldable t => t Locale -> [Element]
newDate t Locale
x
}
cht :: CslTerm -> (String, (Form, Gender))
cht = CslTerm -> String
cslTerm (CslTerm -> String)
-> (CslTerm -> (Form, Gender))
-> CslTerm
-> (String, (Form, Gender))
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& CslTerm -> Form
termForm (CslTerm -> Form)
-> (CslTerm -> Gender) -> CslTerm -> (Form, Gender)
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& CslTerm -> Gender
termGenderForm
checkedLoc :: [CslTerm]
checkedLoc = if [Locale] -> Bool
hasOrdinals [Locale]
ls then [CslTerm] -> [CslTerm]
rmOrdinals (Locale -> [CslTerm]
localeTerms Locale
l) else Locale -> [CslTerm]
localeTerms Locale
l
newTerms :: t Locale -> [CslTerm]
newTerms x :: t Locale
x = (CslTerm -> CslTerm -> Bool) -> [CslTerm] -> [CslTerm]
forall a. (a -> a -> Bool) -> [a] -> [a]
nubBy (\a :: CslTerm
a b :: CslTerm
b -> CslTerm -> (String, (Form, Gender))
cht CslTerm
a (String, (Form, Gender)) -> (String, (Form, Gender)) -> Bool
forall a. Eq a => a -> a -> Bool
== CslTerm -> (String, (Form, Gender))
cht CslTerm
b) ((Locale -> [CslTerm]) -> t Locale -> [CslTerm]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap Locale -> [CslTerm]
localeTerms t Locale
x [CslTerm] -> [CslTerm] -> [CslTerm]
forall a. [a] -> [a] -> [a]
++ [CslTerm]
checkedLoc)
newOpt :: t Locale -> [Option]
newOpt x :: t Locale
x = (Option -> Option -> Bool) -> [Option] -> [Option]
forall a. (a -> a -> Bool) -> [a] -> [a]
nubBy (\a :: Option
a b :: Option
b -> Option -> String
forall a b. (a, b) -> a
fst Option
a String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== Option -> String
forall a b. (a, b) -> a
fst Option
b) ((Locale -> [Option]) -> t Locale -> [Option]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap Locale -> [Option]
localeOptions t Locale
x [Option] -> [Option] -> [Option]
forall a. [a] -> [a] -> [a]
++ Locale -> [Option]
localeOptions Locale
l)
newDate :: t Locale -> [Element]
newDate x :: t Locale
x = (Element -> Element -> Bool) -> [Element] -> [Element]
forall a. (a -> a -> Bool) -> [a] -> [a]
nubBy (\(Date _ a :: DateForm
a _ _ _ _)
(Date _ b :: DateForm
b _ _ _ _) -> DateForm
a DateForm -> DateForm -> Bool
forall a. Eq a => a -> a -> Bool
== DateForm
b) ((Locale -> [Element]) -> t Locale -> [Element]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap Locale -> [Element]
localeDate t Locale
x [Element] -> [Element] -> [Element]
forall a. [a] -> [a] -> [a]
++ Locale -> [Element]
localeDate Locale
l)
data CslTerm
= CT
{ CslTerm -> String
cslTerm :: String
, CslTerm -> Form
termForm :: Form
, CslTerm -> Gender
termGender :: Gender
, CslTerm -> Gender
termGenderForm :: Gender
, CslTerm -> String
termSingular :: String
, CslTerm -> String
termPlural :: String
, CslTerm -> String
termMatch :: String
} deriving ( Int -> CslTerm -> String -> String
[CslTerm] -> String -> String
CslTerm -> String
(Int -> CslTerm -> String -> String)
-> (CslTerm -> String)
-> ([CslTerm] -> String -> String)
-> Show CslTerm
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [CslTerm] -> String -> String
$cshowList :: [CslTerm] -> String -> String
show :: CslTerm -> String
$cshow :: CslTerm -> String
showsPrec :: Int -> CslTerm -> String -> String
$cshowsPrec :: Int -> CslTerm -> String -> String
Show, ReadPrec [CslTerm]
ReadPrec CslTerm
Int -> ReadS CslTerm
ReadS [CslTerm]
(Int -> ReadS CslTerm)
-> ReadS [CslTerm]
-> ReadPrec CslTerm
-> ReadPrec [CslTerm]
-> Read CslTerm
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CslTerm]
$creadListPrec :: ReadPrec [CslTerm]
readPrec :: ReadPrec CslTerm
$creadPrec :: ReadPrec CslTerm
readList :: ReadS [CslTerm]
$creadList :: ReadS [CslTerm]
readsPrec :: Int -> ReadS CslTerm
$creadsPrec :: Int -> ReadS CslTerm
Read, CslTerm -> CslTerm -> Bool
(CslTerm -> CslTerm -> Bool)
-> (CslTerm -> CslTerm -> Bool) -> Eq CslTerm
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CslTerm -> CslTerm -> Bool
$c/= :: CslTerm -> CslTerm -> Bool
== :: CslTerm -> CslTerm -> Bool
$c== :: CslTerm -> CslTerm -> Bool
Eq, Typeable, Typeable CslTerm
DataType
Constr
Typeable CslTerm =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CslTerm -> c CslTerm)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CslTerm)
-> (CslTerm -> Constr)
-> (CslTerm -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CslTerm))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CslTerm))
-> ((forall b. Data b => b -> b) -> CslTerm -> CslTerm)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CslTerm -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CslTerm -> r)
-> (forall u. (forall d. Data d => d -> u) -> CslTerm -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> CslTerm -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CslTerm -> m CslTerm)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CslTerm -> m CslTerm)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CslTerm -> m CslTerm)
-> Data CslTerm
CslTerm -> DataType
CslTerm -> Constr
(forall b. Data b => b -> b) -> CslTerm -> CslTerm
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CslTerm -> c CslTerm
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CslTerm
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> CslTerm -> u
forall u. (forall d. Data d => d -> u) -> CslTerm -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CslTerm -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CslTerm -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CslTerm -> m CslTerm
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CslTerm -> m CslTerm
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CslTerm
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CslTerm -> c CslTerm
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CslTerm)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CslTerm)
$cCT :: Constr
$tCslTerm :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> CslTerm -> m CslTerm
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CslTerm -> m CslTerm
gmapMp :: (forall d. Data d => d -> m d) -> CslTerm -> m CslTerm
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CslTerm -> m CslTerm
gmapM :: (forall d. Data d => d -> m d) -> CslTerm -> m CslTerm
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CslTerm -> m CslTerm
gmapQi :: Int -> (forall d. Data d => d -> u) -> CslTerm -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> CslTerm -> u
gmapQ :: (forall d. Data d => d -> u) -> CslTerm -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> CslTerm -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CslTerm -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CslTerm -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CslTerm -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CslTerm -> r
gmapT :: (forall b. Data b => b -> b) -> CslTerm -> CslTerm
$cgmapT :: (forall b. Data b => b -> b) -> CslTerm -> CslTerm
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CslTerm)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CslTerm)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c CslTerm)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CslTerm)
dataTypeOf :: CslTerm -> DataType
$cdataTypeOf :: CslTerm -> DataType
toConstr :: CslTerm -> Constr
$ctoConstr :: CslTerm -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CslTerm
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CslTerm
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CslTerm -> c CslTerm
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CslTerm -> c CslTerm
$cp1Data :: Typeable CslTerm
Data, (forall x. CslTerm -> Rep CslTerm x)
-> (forall x. Rep CslTerm x -> CslTerm) -> Generic CslTerm
forall x. Rep CslTerm x -> CslTerm
forall x. CslTerm -> Rep CslTerm x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CslTerm x -> CslTerm
$cfrom :: forall x. CslTerm -> Rep CslTerm x
Generic )
newTerm :: CslTerm
newTerm :: CslTerm
newTerm = String
-> Form
-> Gender
-> Gender
-> String
-> String
-> String
-> CslTerm
CT [] Form
Long Gender
Neuter Gender
Neuter [] [] []
findTerm :: String -> Form -> [CslTerm] -> Maybe CslTerm
findTerm :: String -> Form -> [CslTerm] -> Maybe CslTerm
findTerm s :: String
s f :: Form
f = String -> Form -> Maybe Gender -> [CslTerm] -> Maybe CslTerm
findTerm'' String
s Form
f Maybe Gender
forall a. Maybe a
Nothing
findTerm' :: String -> Form -> Gender -> [CslTerm] -> Maybe CslTerm
findTerm' :: String -> Form -> Gender -> [CslTerm] -> Maybe CslTerm
findTerm' s :: String
s f :: Form
f g :: Gender
g = String -> Form -> Maybe Gender -> [CslTerm] -> Maybe CslTerm
findTerm'' String
s Form
f (Gender -> Maybe Gender
forall a. a -> Maybe a
Just Gender
g)
findTerm'' :: String -> Form -> Maybe Gender -> [CslTerm] -> Maybe CslTerm
findTerm'' :: String -> Form -> Maybe Gender -> [CslTerm] -> Maybe CslTerm
findTerm'' s :: String
s f :: Form
f mbg :: Maybe Gender
mbg ts :: [CslTerm]
ts
= [CslTerm] -> Maybe CslTerm
forall a. [a] -> Maybe a
listToMaybe [ CslTerm
t | CslTerm
t <- [CslTerm]
ts, CslTerm -> String
cslTerm CslTerm
t String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
s, CslTerm -> Form
termForm CslTerm
t Form -> Form -> Bool
forall a. Eq a => a -> a -> Bool
== Form
f,
Maybe Gender -> Bool
forall a. Maybe a -> Bool
isNothing Maybe Gender
mbg Bool -> Bool -> Bool
|| Maybe Gender
mbg Maybe Gender -> Maybe Gender -> Bool
forall a. Eq a => a -> a -> Bool
== Gender -> Maybe Gender
forall a. a -> Maybe a
Just (CslTerm -> Gender
termGenderForm CslTerm
t) ]
Maybe CslTerm -> Maybe CslTerm -> Maybe CslTerm
forall (m :: * -> *) a. MonadPlus m => m a -> m a -> m a
`mplus`
case Form
f of
VerbShort -> String -> Form -> Maybe Gender -> [CslTerm] -> Maybe CslTerm
findTerm'' String
s Form
Verb Maybe Gender
forall a. Maybe a
Nothing [CslTerm]
ts
Symbol -> String -> Form -> Maybe Gender -> [CslTerm] -> Maybe CslTerm
findTerm'' String
s Form
Short Maybe Gender
forall a. Maybe a
Nothing [CslTerm]
ts
Verb -> String -> Form -> Maybe Gender -> [CslTerm] -> Maybe CslTerm
findTerm'' String
s Form
Long Maybe Gender
forall a. Maybe a
Nothing [CslTerm]
ts
Short -> String -> Form -> Maybe Gender -> [CslTerm] -> Maybe CslTerm
findTerm'' String
s Form
Long Maybe Gender
forall a. Maybe a
Nothing [CslTerm]
ts
_ -> Maybe CslTerm
forall a. Maybe a
Nothing
hasOrdinals :: [Locale] -> Bool
hasOrdinals :: [Locale] -> Bool
hasOrdinals = (Locale -> Bool) -> [Locale] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any ((CslTerm -> Bool) -> [CslTerm] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any CslTerm -> Bool
hasOrd ([CslTerm] -> Bool) -> (Locale -> [CslTerm]) -> Locale -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Locale -> [CslTerm]
localeTerms)
where
hasOrd :: CslTerm -> Bool
hasOrd o :: CslTerm
o
| CT {cslTerm :: CslTerm -> String
cslTerm = String
t} <- CslTerm
o
, "ordinal" String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isInfixOf` String
t = Bool
True
| Bool
otherwise = Bool
False
rmOrdinals :: [CslTerm] -> [CslTerm]
rmOrdinals :: [CslTerm] -> [CslTerm]
rmOrdinals [] = []
rmOrdinals (o :: CslTerm
o:os :: [CslTerm]
os)
| CT {cslTerm :: CslTerm -> String
cslTerm = String
t} <- CslTerm
o
, "ordinal" String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isInfixOf` String
t = [CslTerm] -> [CslTerm]
rmOrdinals [CslTerm]
os
| Bool
otherwise = CslTerm
oCslTerm -> [CslTerm] -> [CslTerm]
forall a. a -> [a] -> [a]
:[CslTerm] -> [CslTerm]
rmOrdinals [CslTerm]
os
newtype Abbreviations = Abbreviations {
Abbreviations -> Map String (Map String (Map String String))
unAbbreviations :: M.Map String (M.Map String (M.Map String String))
} deriving ( Int -> Abbreviations -> String -> String
[Abbreviations] -> String -> String
Abbreviations -> String
(Int -> Abbreviations -> String -> String)
-> (Abbreviations -> String)
-> ([Abbreviations] -> String -> String)
-> Show Abbreviations
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Abbreviations] -> String -> String
$cshowList :: [Abbreviations] -> String -> String
show :: Abbreviations -> String
$cshow :: Abbreviations -> String
showsPrec :: Int -> Abbreviations -> String -> String
$cshowsPrec :: Int -> Abbreviations -> String -> String
Show, ReadPrec [Abbreviations]
ReadPrec Abbreviations
Int -> ReadS Abbreviations
ReadS [Abbreviations]
(Int -> ReadS Abbreviations)
-> ReadS [Abbreviations]
-> ReadPrec Abbreviations
-> ReadPrec [Abbreviations]
-> Read Abbreviations
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Abbreviations]
$creadListPrec :: ReadPrec [Abbreviations]
readPrec :: ReadPrec Abbreviations
$creadPrec :: ReadPrec Abbreviations
readList :: ReadS [Abbreviations]
$creadList :: ReadS [Abbreviations]
readsPrec :: Int -> ReadS Abbreviations
$creadsPrec :: Int -> ReadS Abbreviations
Read, Typeable, Typeable Abbreviations
DataType
Constr
Typeable Abbreviations =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Abbreviations -> c Abbreviations)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Abbreviations)
-> (Abbreviations -> Constr)
-> (Abbreviations -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Abbreviations))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c Abbreviations))
-> ((forall b. Data b => b -> b) -> Abbreviations -> Abbreviations)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Abbreviations -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Abbreviations -> r)
-> (forall u. (forall d. Data d => d -> u) -> Abbreviations -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> Abbreviations -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations)
-> Data Abbreviations
Abbreviations -> DataType
Abbreviations -> Constr
(forall b. Data b => b -> b) -> Abbreviations -> Abbreviations
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Abbreviations -> c Abbreviations
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Abbreviations
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Abbreviations -> u
forall u. (forall d. Data d => d -> u) -> Abbreviations -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Abbreviations -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Abbreviations -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Abbreviations
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Abbreviations -> c Abbreviations
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Abbreviations)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c Abbreviations)
$cAbbreviations :: Constr
$tAbbreviations :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations
gmapMp :: (forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations
gmapM :: (forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Abbreviations -> m Abbreviations
gmapQi :: Int -> (forall d. Data d => d -> u) -> Abbreviations -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Abbreviations -> u
gmapQ :: (forall d. Data d => d -> u) -> Abbreviations -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Abbreviations -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Abbreviations -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Abbreviations -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Abbreviations -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Abbreviations -> r
gmapT :: (forall b. Data b => b -> b) -> Abbreviations -> Abbreviations
$cgmapT :: (forall b. Data b => b -> b) -> Abbreviations -> Abbreviations
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c Abbreviations)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c Abbreviations)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Abbreviations)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Abbreviations)
dataTypeOf :: Abbreviations -> DataType
$cdataTypeOf :: Abbreviations -> DataType
toConstr :: Abbreviations -> Constr
$ctoConstr :: Abbreviations -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Abbreviations
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Abbreviations
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Abbreviations -> c Abbreviations
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Abbreviations -> c Abbreviations
$cp1Data :: Typeable Abbreviations
Data, (forall x. Abbreviations -> Rep Abbreviations x)
-> (forall x. Rep Abbreviations x -> Abbreviations)
-> Generic Abbreviations
forall x. Rep Abbreviations x -> Abbreviations
forall x. Abbreviations -> Rep Abbreviations x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Abbreviations x -> Abbreviations
$cfrom :: forall x. Abbreviations -> Rep Abbreviations x
Generic )
instance FromJSON Abbreviations where
parseJSON :: Value -> Parser Abbreviations
parseJSON (Object v :: Object
v) = Map String (Map String (Map String String)) -> Abbreviations
Abbreviations (Map String (Map String (Map String String)) -> Abbreviations)
-> Parser (Map String (Map String (Map String String)))
-> Parser Abbreviations
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser (Map String (Map String (Map String String)))
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
v)
parseJSON (Bool False) = Abbreviations -> Parser Abbreviations
forall (m :: * -> *) a. Monad m => a -> m a
return (Abbreviations -> Parser Abbreviations)
-> Abbreviations -> Parser Abbreviations
forall a b. (a -> b) -> a -> b
$ Map String (Map String (Map String String)) -> Abbreviations
Abbreviations Map String (Map String (Map String String))
forall k a. Map k a
M.empty
parseJSON _ = String -> Parser Abbreviations
forall (m :: * -> *) a. MonadFail m => String -> m a
fail "Could not read Abbreviations"
type MacroMap
= (String,[Element])
data Citation
= Citation
{ Citation -> [Option]
citOptions :: [Option]
, Citation -> [Sort]
citSort :: [Sort]
, Citation -> Layout
citLayout :: Layout
} deriving ( Int -> Citation -> String -> String
[Citation] -> String -> String
Citation -> String
(Int -> Citation -> String -> String)
-> (Citation -> String)
-> ([Citation] -> String -> String)
-> Show Citation
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Citation] -> String -> String
$cshowList :: [Citation] -> String -> String
show :: Citation -> String
$cshow :: Citation -> String
showsPrec :: Int -> Citation -> String -> String
$cshowsPrec :: Int -> Citation -> String -> String
Show, ReadPrec [Citation]
ReadPrec Citation
Int -> ReadS Citation
ReadS [Citation]
(Int -> ReadS Citation)
-> ReadS [Citation]
-> ReadPrec Citation
-> ReadPrec [Citation]
-> Read Citation
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Citation]
$creadListPrec :: ReadPrec [Citation]
readPrec :: ReadPrec Citation
$creadPrec :: ReadPrec Citation
readList :: ReadS [Citation]
$creadList :: ReadS [Citation]
readsPrec :: Int -> ReadS Citation
$creadsPrec :: Int -> ReadS Citation
Read, Typeable, Typeable Citation
DataType
Constr
Typeable Citation =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Citation -> c Citation)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Citation)
-> (Citation -> Constr)
-> (Citation -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Citation))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Citation))
-> ((forall b. Data b => b -> b) -> Citation -> Citation)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Citation -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Citation -> r)
-> (forall u. (forall d. Data d => d -> u) -> Citation -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Citation -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Citation -> m Citation)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Citation -> m Citation)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Citation -> m Citation)
-> Data Citation
Citation -> DataType
Citation -> Constr
(forall b. Data b => b -> b) -> Citation -> Citation
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Citation -> c Citation
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Citation
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Citation -> u
forall u. (forall d. Data d => d -> u) -> Citation -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Citation -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Citation -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Citation -> m Citation
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Citation -> m Citation
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Citation
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Citation -> c Citation
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Citation)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Citation)
$cCitation :: Constr
$tCitation :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Citation -> m Citation
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Citation -> m Citation
gmapMp :: (forall d. Data d => d -> m d) -> Citation -> m Citation
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Citation -> m Citation
gmapM :: (forall d. Data d => d -> m d) -> Citation -> m Citation
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Citation -> m Citation
gmapQi :: Int -> (forall d. Data d => d -> u) -> Citation -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Citation -> u
gmapQ :: (forall d. Data d => d -> u) -> Citation -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Citation -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Citation -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Citation -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Citation -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Citation -> r
gmapT :: (forall b. Data b => b -> b) -> Citation -> Citation
$cgmapT :: (forall b. Data b => b -> b) -> Citation -> Citation
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Citation)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Citation)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Citation)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Citation)
dataTypeOf :: Citation -> DataType
$cdataTypeOf :: Citation -> DataType
toConstr :: Citation -> Constr
$ctoConstr :: Citation -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Citation
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Citation
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Citation -> c Citation
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Citation -> c Citation
$cp1Data :: Typeable Citation
Data, (forall x. Citation -> Rep Citation x)
-> (forall x. Rep Citation x -> Citation) -> Generic Citation
forall x. Rep Citation x -> Citation
forall x. Citation -> Rep Citation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Citation x -> Citation
$cfrom :: forall x. Citation -> Rep Citation x
Generic )
data Bibliography
= Bibliography
{ Bibliography -> [Option]
bibOptions :: [Option]
, Bibliography -> [Sort]
bibSort :: [Sort]
, Bibliography -> Layout
bibLayout :: Layout
} deriving ( Int -> Bibliography -> String -> String
[Bibliography] -> String -> String
Bibliography -> String
(Int -> Bibliography -> String -> String)
-> (Bibliography -> String)
-> ([Bibliography] -> String -> String)
-> Show Bibliography
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Bibliography] -> String -> String
$cshowList :: [Bibliography] -> String -> String
show :: Bibliography -> String
$cshow :: Bibliography -> String
showsPrec :: Int -> Bibliography -> String -> String
$cshowsPrec :: Int -> Bibliography -> String -> String
Show, ReadPrec [Bibliography]
ReadPrec Bibliography
Int -> ReadS Bibliography
ReadS [Bibliography]
(Int -> ReadS Bibliography)
-> ReadS [Bibliography]
-> ReadPrec Bibliography
-> ReadPrec [Bibliography]
-> Read Bibliography
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Bibliography]
$creadListPrec :: ReadPrec [Bibliography]
readPrec :: ReadPrec Bibliography
$creadPrec :: ReadPrec Bibliography
readList :: ReadS [Bibliography]
$creadList :: ReadS [Bibliography]
readsPrec :: Int -> ReadS Bibliography
$creadsPrec :: Int -> ReadS Bibliography
Read, Typeable, Typeable Bibliography
DataType
Constr
Typeable Bibliography =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Bibliography -> c Bibliography)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Bibliography)
-> (Bibliography -> Constr)
-> (Bibliography -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Bibliography))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c Bibliography))
-> ((forall b. Data b => b -> b) -> Bibliography -> Bibliography)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Bibliography -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Bibliography -> r)
-> (forall u. (forall d. Data d => d -> u) -> Bibliography -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> Bibliography -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Bibliography -> m Bibliography)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Bibliography -> m Bibliography)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Bibliography -> m Bibliography)
-> Data Bibliography
Bibliography -> DataType
Bibliography -> Constr
(forall b. Data b => b -> b) -> Bibliography -> Bibliography
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Bibliography -> c Bibliography
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Bibliography
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Bibliography -> u
forall u. (forall d. Data d => d -> u) -> Bibliography -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Bibliography -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Bibliography -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Bibliography -> m Bibliography
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Bibliography -> m Bibliography
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Bibliography
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Bibliography -> c Bibliography
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Bibliography)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c Bibliography)
$cBibliography :: Constr
$tBibliography :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Bibliography -> m Bibliography
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Bibliography -> m Bibliography
gmapMp :: (forall d. Data d => d -> m d) -> Bibliography -> m Bibliography
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Bibliography -> m Bibliography
gmapM :: (forall d. Data d => d -> m d) -> Bibliography -> m Bibliography
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Bibliography -> m Bibliography
gmapQi :: Int -> (forall d. Data d => d -> u) -> Bibliography -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Bibliography -> u
gmapQ :: (forall d. Data d => d -> u) -> Bibliography -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Bibliography -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Bibliography -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Bibliography -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Bibliography -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Bibliography -> r
gmapT :: (forall b. Data b => b -> b) -> Bibliography -> Bibliography
$cgmapT :: (forall b. Data b => b -> b) -> Bibliography -> Bibliography
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c Bibliography)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c Bibliography)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Bibliography)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Bibliography)
dataTypeOf :: Bibliography -> DataType
$cdataTypeOf :: Bibliography -> DataType
toConstr :: Bibliography -> Constr
$ctoConstr :: Bibliography -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Bibliography
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Bibliography
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Bibliography -> c Bibliography
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Bibliography -> c Bibliography
$cp1Data :: Typeable Bibliography
Data, (forall x. Bibliography -> Rep Bibliography x)
-> (forall x. Rep Bibliography x -> Bibliography)
-> Generic Bibliography
forall x. Rep Bibliography x -> Bibliography
forall x. Bibliography -> Rep Bibliography x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Bibliography x -> Bibliography
$cfrom :: forall x. Bibliography -> Rep Bibliography x
Generic )
type Option = (String,String)
mergeOptions :: [Option] -> [Option] -> [Option]
mergeOptions :: [Option] -> [Option] -> [Option]
mergeOptions os :: [Option]
os = (Option -> Option -> Bool) -> [Option] -> [Option]
forall a. (a -> a -> Bool) -> [a] -> [a]
nubBy (\x :: Option
x y :: Option
y -> Option -> String
forall a b. (a, b) -> a
fst Option
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== Option -> String
forall a b. (a, b) -> a
fst Option
y) ([Option] -> [Option])
-> ([Option] -> [Option]) -> [Option] -> [Option]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Option] -> [Option] -> [Option]
forall a. [a] -> [a] -> [a]
(++) [Option]
os
data Layout
= Layout
{ Layout -> Formatting
layFormat :: Formatting
, Layout -> String
layDelim :: Delimiter
, Layout -> [Element]
elements :: [Element]
} deriving ( Int -> Layout -> String -> String
[Layout] -> String -> String
Layout -> String
(Int -> Layout -> String -> String)
-> (Layout -> String)
-> ([Layout] -> String -> String)
-> Show Layout
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Layout] -> String -> String
$cshowList :: [Layout] -> String -> String
show :: Layout -> String
$cshow :: Layout -> String
showsPrec :: Int -> Layout -> String -> String
$cshowsPrec :: Int -> Layout -> String -> String
Show, ReadPrec [Layout]
ReadPrec Layout
Int -> ReadS Layout
ReadS [Layout]
(Int -> ReadS Layout)
-> ReadS [Layout]
-> ReadPrec Layout
-> ReadPrec [Layout]
-> Read Layout
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Layout]
$creadListPrec :: ReadPrec [Layout]
readPrec :: ReadPrec Layout
$creadPrec :: ReadPrec Layout
readList :: ReadS [Layout]
$creadList :: ReadS [Layout]
readsPrec :: Int -> ReadS Layout
$creadsPrec :: Int -> ReadS Layout
Read, Typeable, Typeable Layout
DataType
Constr
Typeable Layout =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Layout -> c Layout)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Layout)
-> (Layout -> Constr)
-> (Layout -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Layout))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Layout))
-> ((forall b. Data b => b -> b) -> Layout -> Layout)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Layout -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Layout -> r)
-> (forall u. (forall d. Data d => d -> u) -> Layout -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Layout -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Layout -> m Layout)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Layout -> m Layout)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Layout -> m Layout)
-> Data Layout
Layout -> DataType
Layout -> Constr
(forall b. Data b => b -> b) -> Layout -> Layout
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Layout -> c Layout
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Layout
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Layout -> u
forall u. (forall d. Data d => d -> u) -> Layout -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Layout -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Layout -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Layout -> m Layout
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Layout -> m Layout
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Layout
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Layout -> c Layout
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Layout)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Layout)
$cLayout :: Constr
$tLayout :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Layout -> m Layout
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Layout -> m Layout
gmapMp :: (forall d. Data d => d -> m d) -> Layout -> m Layout
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Layout -> m Layout
gmapM :: (forall d. Data d => d -> m d) -> Layout -> m Layout
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Layout -> m Layout
gmapQi :: Int -> (forall d. Data d => d -> u) -> Layout -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Layout -> u
gmapQ :: (forall d. Data d => d -> u) -> Layout -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Layout -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Layout -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Layout -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Layout -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Layout -> r
gmapT :: (forall b. Data b => b -> b) -> Layout -> Layout
$cgmapT :: (forall b. Data b => b -> b) -> Layout -> Layout
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Layout)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Layout)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Layout)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Layout)
dataTypeOf :: Layout -> DataType
$cdataTypeOf :: Layout -> DataType
toConstr :: Layout -> Constr
$ctoConstr :: Layout -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Layout
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Layout
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Layout -> c Layout
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Layout -> c Layout
$cp1Data :: Typeable Layout
Data, (forall x. Layout -> Rep Layout x)
-> (forall x. Rep Layout x -> Layout) -> Generic Layout
forall x. Rep Layout x -> Layout
forall x. Layout -> Rep Layout x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Layout x -> Layout
$cfrom :: forall x. Layout -> Rep Layout x
Generic )
data Element
= Choose IfThen [IfThen] [Element]
| Macro String Formatting
| Const String Formatting
| Variable [String] Form Formatting Delimiter
| Term String Form Formatting Bool
| Label String Form Formatting Plural
| Number String NumericForm Formatting
| Names [String] [Name] Formatting Delimiter [Element]
| Substitute [Element]
| Group Formatting Delimiter [Element]
| Date [String] DateForm Formatting Delimiter [DatePart] String
deriving ( Int -> Element -> String -> String
[Element] -> String -> String
Element -> String
(Int -> Element -> String -> String)
-> (Element -> String)
-> ([Element] -> String -> String)
-> Show Element
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Element] -> String -> String
$cshowList :: [Element] -> String -> String
show :: Element -> String
$cshow :: Element -> String
showsPrec :: Int -> Element -> String -> String
$cshowsPrec :: Int -> Element -> String -> String
Show, ReadPrec [Element]
ReadPrec Element
Int -> ReadS Element
ReadS [Element]
(Int -> ReadS Element)
-> ReadS [Element]
-> ReadPrec Element
-> ReadPrec [Element]
-> Read Element
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Element]
$creadListPrec :: ReadPrec [Element]
readPrec :: ReadPrec Element
$creadPrec :: ReadPrec Element
readList :: ReadS [Element]
$creadList :: ReadS [Element]
readsPrec :: Int -> ReadS Element
$creadsPrec :: Int -> ReadS Element
Read, Element -> Element -> Bool
(Element -> Element -> Bool)
-> (Element -> Element -> Bool) -> Eq Element
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Element -> Element -> Bool
$c/= :: Element -> Element -> Bool
== :: Element -> Element -> Bool
$c== :: Element -> Element -> Bool
Eq, Typeable, Typeable Element
DataType
Constr
Typeable Element =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Element -> c Element)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Element)
-> (Element -> Constr)
-> (Element -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Element))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Element))
-> ((forall b. Data b => b -> b) -> Element -> Element)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Element -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Element -> r)
-> (forall u. (forall d. Data d => d -> u) -> Element -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Element -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Element -> m Element)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Element -> m Element)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Element -> m Element)
-> Data Element
Element -> DataType
Element -> Constr
(forall b. Data b => b -> b) -> Element -> Element
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Element -> c Element
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Element
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Element -> u
forall u. (forall d. Data d => d -> u) -> Element -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Element -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Element -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Element -> m Element
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Element -> m Element
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Element
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Element -> c Element
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Element)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Element)
$cDate :: Constr
$cGroup :: Constr
$cSubstitute :: Constr
$cNames :: Constr
$cNumber :: Constr
$cLabel :: Constr
$cTerm :: Constr
$cVariable :: Constr
$cConst :: Constr
$cMacro :: Constr
$cChoose :: Constr
$tElement :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Element -> m Element
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Element -> m Element
gmapMp :: (forall d. Data d => d -> m d) -> Element -> m Element
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Element -> m Element
gmapM :: (forall d. Data d => d -> m d) -> Element -> m Element
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Element -> m Element
gmapQi :: Int -> (forall d. Data d => d -> u) -> Element -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Element -> u
gmapQ :: (forall d. Data d => d -> u) -> Element -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Element -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Element -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Element -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Element -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Element -> r
gmapT :: (forall b. Data b => b -> b) -> Element -> Element
$cgmapT :: (forall b. Data b => b -> b) -> Element -> Element
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Element)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Element)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Element)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Element)
dataTypeOf :: Element -> DataType
$cdataTypeOf :: Element -> DataType
toConstr :: Element -> Constr
$ctoConstr :: Element -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Element
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Element
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Element -> c Element
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Element -> c Element
$cp1Data :: Typeable Element
Data, (forall x. Element -> Rep Element x)
-> (forall x. Rep Element x -> Element) -> Generic Element
forall x. Rep Element x -> Element
forall x. Element -> Rep Element x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Element x -> Element
$cfrom :: forall x. Element -> Rep Element x
Generic )
data IfThen
= IfThen Condition Match [Element]
deriving ( IfThen -> IfThen -> Bool
(IfThen -> IfThen -> Bool)
-> (IfThen -> IfThen -> Bool) -> Eq IfThen
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IfThen -> IfThen -> Bool
$c/= :: IfThen -> IfThen -> Bool
== :: IfThen -> IfThen -> Bool
$c== :: IfThen -> IfThen -> Bool
Eq, Int -> IfThen -> String -> String
[IfThen] -> String -> String
IfThen -> String
(Int -> IfThen -> String -> String)
-> (IfThen -> String)
-> ([IfThen] -> String -> String)
-> Show IfThen
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [IfThen] -> String -> String
$cshowList :: [IfThen] -> String -> String
show :: IfThen -> String
$cshow :: IfThen -> String
showsPrec :: Int -> IfThen -> String -> String
$cshowsPrec :: Int -> IfThen -> String -> String
Show, ReadPrec [IfThen]
ReadPrec IfThen
Int -> ReadS IfThen
ReadS [IfThen]
(Int -> ReadS IfThen)
-> ReadS [IfThen]
-> ReadPrec IfThen
-> ReadPrec [IfThen]
-> Read IfThen
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [IfThen]
$creadListPrec :: ReadPrec [IfThen]
readPrec :: ReadPrec IfThen
$creadPrec :: ReadPrec IfThen
readList :: ReadS [IfThen]
$creadList :: ReadS [IfThen]
readsPrec :: Int -> ReadS IfThen
$creadsPrec :: Int -> ReadS IfThen
Read, Typeable, Typeable IfThen
DataType
Constr
Typeable IfThen =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IfThen -> c IfThen)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IfThen)
-> (IfThen -> Constr)
-> (IfThen -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IfThen))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IfThen))
-> ((forall b. Data b => b -> b) -> IfThen -> IfThen)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IfThen -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IfThen -> r)
-> (forall u. (forall d. Data d => d -> u) -> IfThen -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> IfThen -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IfThen -> m IfThen)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IfThen -> m IfThen)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IfThen -> m IfThen)
-> Data IfThen
IfThen -> DataType
IfThen -> Constr
(forall b. Data b => b -> b) -> IfThen -> IfThen
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IfThen -> c IfThen
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IfThen
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> IfThen -> u
forall u. (forall d. Data d => d -> u) -> IfThen -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IfThen -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IfThen -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IfThen -> m IfThen
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IfThen -> m IfThen
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IfThen
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IfThen -> c IfThen
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IfThen)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IfThen)
$cIfThen :: Constr
$tIfThen :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> IfThen -> m IfThen
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IfThen -> m IfThen
gmapMp :: (forall d. Data d => d -> m d) -> IfThen -> m IfThen
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IfThen -> m IfThen
gmapM :: (forall d. Data d => d -> m d) -> IfThen -> m IfThen
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IfThen -> m IfThen
gmapQi :: Int -> (forall d. Data d => d -> u) -> IfThen -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> IfThen -> u
gmapQ :: (forall d. Data d => d -> u) -> IfThen -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> IfThen -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IfThen -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IfThen -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IfThen -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IfThen -> r
gmapT :: (forall b. Data b => b -> b) -> IfThen -> IfThen
$cgmapT :: (forall b. Data b => b -> b) -> IfThen -> IfThen
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IfThen)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IfThen)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c IfThen)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IfThen)
dataTypeOf :: IfThen -> DataType
$cdataTypeOf :: IfThen -> DataType
toConstr :: IfThen -> Constr
$ctoConstr :: IfThen -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IfThen
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IfThen
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IfThen -> c IfThen
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IfThen -> c IfThen
$cp1Data :: Typeable IfThen
Data, (forall x. IfThen -> Rep IfThen x)
-> (forall x. Rep IfThen x -> IfThen) -> Generic IfThen
forall x. Rep IfThen x -> IfThen
forall x. IfThen -> Rep IfThen x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep IfThen x -> IfThen
$cfrom :: forall x. IfThen -> Rep IfThen x
Generic )
data Condition
= Condition
{ Condition -> [String]
isType :: [String]
, Condition -> [String]
isSet :: [String]
, Condition -> [String]
isNumeric :: [String]
, Condition -> [String]
isUncertainDate :: [String]
, Condition -> [String]
isPosition :: [String]
, Condition -> [String]
disambiguation :: [String]
, Condition -> [String]
isLocator :: [String]
} deriving ( Condition -> Condition -> Bool
(Condition -> Condition -> Bool)
-> (Condition -> Condition -> Bool) -> Eq Condition
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Condition -> Condition -> Bool
$c/= :: Condition -> Condition -> Bool
== :: Condition -> Condition -> Bool
$c== :: Condition -> Condition -> Bool
Eq, Int -> Condition -> String -> String
[Condition] -> String -> String
Condition -> String
(Int -> Condition -> String -> String)
-> (Condition -> String)
-> ([Condition] -> String -> String)
-> Show Condition
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Condition] -> String -> String
$cshowList :: [Condition] -> String -> String
show :: Condition -> String
$cshow :: Condition -> String
showsPrec :: Int -> Condition -> String -> String
$cshowsPrec :: Int -> Condition -> String -> String
Show, ReadPrec [Condition]
ReadPrec Condition
Int -> ReadS Condition
ReadS [Condition]
(Int -> ReadS Condition)
-> ReadS [Condition]
-> ReadPrec Condition
-> ReadPrec [Condition]
-> Read Condition
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Condition]
$creadListPrec :: ReadPrec [Condition]
readPrec :: ReadPrec Condition
$creadPrec :: ReadPrec Condition
readList :: ReadS [Condition]
$creadList :: ReadS [Condition]
readsPrec :: Int -> ReadS Condition
$creadsPrec :: Int -> ReadS Condition
Read, Typeable, Typeable Condition
DataType
Constr
Typeable Condition =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Condition -> c Condition)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Condition)
-> (Condition -> Constr)
-> (Condition -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Condition))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Condition))
-> ((forall b. Data b => b -> b) -> Condition -> Condition)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Condition -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Condition -> r)
-> (forall u. (forall d. Data d => d -> u) -> Condition -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> Condition -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Condition -> m Condition)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Condition -> m Condition)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Condition -> m Condition)
-> Data Condition
Condition -> DataType
Condition -> Constr
(forall b. Data b => b -> b) -> Condition -> Condition
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Condition -> c Condition
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Condition
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Condition -> u
forall u. (forall d. Data d => d -> u) -> Condition -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Condition -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Condition -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Condition -> m Condition
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Condition -> m Condition
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Condition
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Condition -> c Condition
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Condition)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Condition)
$cCondition :: Constr
$tCondition :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Condition -> m Condition
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Condition -> m Condition
gmapMp :: (forall d. Data d => d -> m d) -> Condition -> m Condition
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Condition -> m Condition
gmapM :: (forall d. Data d => d -> m d) -> Condition -> m Condition
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Condition -> m Condition
gmapQi :: Int -> (forall d. Data d => d -> u) -> Condition -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Condition -> u
gmapQ :: (forall d. Data d => d -> u) -> Condition -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Condition -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Condition -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Condition -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Condition -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Condition -> r
gmapT :: (forall b. Data b => b -> b) -> Condition -> Condition
$cgmapT :: (forall b. Data b => b -> b) -> Condition -> Condition
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Condition)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Condition)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Condition)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Condition)
dataTypeOf :: Condition -> DataType
$cdataTypeOf :: Condition -> DataType
toConstr :: Condition -> Constr
$ctoConstr :: Condition -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Condition
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Condition
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Condition -> c Condition
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Condition -> c Condition
$cp1Data :: Typeable Condition
Data, (forall x. Condition -> Rep Condition x)
-> (forall x. Rep Condition x -> Condition) -> Generic Condition
forall x. Rep Condition x -> Condition
forall x. Condition -> Rep Condition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Condition x -> Condition
$cfrom :: forall x. Condition -> Rep Condition x
Generic )
type Delimiter = String
data Match
= Any
| All
| None
deriving ( Int -> Match -> String -> String
[Match] -> String -> String
Match -> String
(Int -> Match -> String -> String)
-> (Match -> String) -> ([Match] -> String -> String) -> Show Match
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Match] -> String -> String
$cshowList :: [Match] -> String -> String
show :: Match -> String
$cshow :: Match -> String
showsPrec :: Int -> Match -> String -> String
$cshowsPrec :: Int -> Match -> String -> String
Show, ReadPrec [Match]
ReadPrec Match
Int -> ReadS Match
ReadS [Match]
(Int -> ReadS Match)
-> ReadS [Match]
-> ReadPrec Match
-> ReadPrec [Match]
-> Read Match
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Match]
$creadListPrec :: ReadPrec [Match]
readPrec :: ReadPrec Match
$creadPrec :: ReadPrec Match
readList :: ReadS [Match]
$creadList :: ReadS [Match]
readsPrec :: Int -> ReadS Match
$creadsPrec :: Int -> ReadS Match
Read, Match -> Match -> Bool
(Match -> Match -> Bool) -> (Match -> Match -> Bool) -> Eq Match
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Match -> Match -> Bool
$c/= :: Match -> Match -> Bool
== :: Match -> Match -> Bool
$c== :: Match -> Match -> Bool
Eq, Typeable, Typeable Match
DataType
Constr
Typeable Match =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Match -> c Match)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Match)
-> (Match -> Constr)
-> (Match -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Match))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Match))
-> ((forall b. Data b => b -> b) -> Match -> Match)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r)
-> (forall u. (forall d. Data d => d -> u) -> Match -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Match -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Match -> m Match)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Match -> m Match)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Match -> m Match)
-> Data Match
Match -> DataType
Match -> Constr
(forall b. Data b => b -> b) -> Match -> Match
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Match -> c Match
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Match
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Match -> u
forall u. (forall d. Data d => d -> u) -> Match -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Match -> m Match
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Match -> m Match
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Match
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Match -> c Match
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Match)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Match)
$cNone :: Constr
$cAll :: Constr
$cAny :: Constr
$tMatch :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Match -> m Match
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Match -> m Match
gmapMp :: (forall d. Data d => d -> m d) -> Match -> m Match
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Match -> m Match
gmapM :: (forall d. Data d => d -> m d) -> Match -> m Match
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Match -> m Match
gmapQi :: Int -> (forall d. Data d => d -> u) -> Match -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Match -> u
gmapQ :: (forall d. Data d => d -> u) -> Match -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Match -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r
gmapT :: (forall b. Data b => b -> b) -> Match -> Match
$cgmapT :: (forall b. Data b => b -> b) -> Match -> Match
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Match)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Match)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Match)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Match)
dataTypeOf :: Match -> DataType
$cdataTypeOf :: Match -> DataType
toConstr :: Match -> Constr
$ctoConstr :: Match -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Match
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Match
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Match -> c Match
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Match -> c Match
$cp1Data :: Typeable Match
Data, (forall x. Match -> Rep Match x)
-> (forall x. Rep Match x -> Match) -> Generic Match
forall x. Rep Match x -> Match
forall x. Match -> Rep Match x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Match x -> Match
$cfrom :: forall x. Match -> Rep Match x
Generic )
match :: Match -> [Bool] -> Bool
match :: Match -> [Bool] -> Bool
match All = [Bool] -> Bool
forall (t :: * -> *). Foldable t => t Bool -> Bool
and
match Any = [Bool] -> Bool
forall (t :: * -> *). Foldable t => t Bool -> Bool
or
match None = (Bool -> Bool) -> [Bool] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all Bool -> Bool
not
data DatePart
= DatePart
{ DatePart -> String
dpName :: String
, DatePart -> String
dpForm :: String
, DatePart -> String
dpRangeDelim :: String
, DatePart -> Formatting
dpFormatting :: Formatting
} deriving ( Int -> DatePart -> String -> String
[DatePart] -> String -> String
DatePart -> String
(Int -> DatePart -> String -> String)
-> (DatePart -> String)
-> ([DatePart] -> String -> String)
-> Show DatePart
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [DatePart] -> String -> String
$cshowList :: [DatePart] -> String -> String
show :: DatePart -> String
$cshow :: DatePart -> String
showsPrec :: Int -> DatePart -> String -> String
$cshowsPrec :: Int -> DatePart -> String -> String
Show, ReadPrec [DatePart]
ReadPrec DatePart
Int -> ReadS DatePart
ReadS [DatePart]
(Int -> ReadS DatePart)
-> ReadS [DatePart]
-> ReadPrec DatePart
-> ReadPrec [DatePart]
-> Read DatePart
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DatePart]
$creadListPrec :: ReadPrec [DatePart]
readPrec :: ReadPrec DatePart
$creadPrec :: ReadPrec DatePart
readList :: ReadS [DatePart]
$creadList :: ReadS [DatePart]
readsPrec :: Int -> ReadS DatePart
$creadsPrec :: Int -> ReadS DatePart
Read, DatePart -> DatePart -> Bool
(DatePart -> DatePart -> Bool)
-> (DatePart -> DatePart -> Bool) -> Eq DatePart
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DatePart -> DatePart -> Bool
$c/= :: DatePart -> DatePart -> Bool
== :: DatePart -> DatePart -> Bool
$c== :: DatePart -> DatePart -> Bool
Eq, Typeable, Typeable DatePart
DataType
Constr
Typeable DatePart =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DatePart -> c DatePart)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DatePart)
-> (DatePart -> Constr)
-> (DatePart -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DatePart))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DatePart))
-> ((forall b. Data b => b -> b) -> DatePart -> DatePart)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DatePart -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DatePart -> r)
-> (forall u. (forall d. Data d => d -> u) -> DatePart -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> DatePart -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DatePart -> m DatePart)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DatePart -> m DatePart)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DatePart -> m DatePart)
-> Data DatePart
DatePart -> DataType
DatePart -> Constr
(forall b. Data b => b -> b) -> DatePart -> DatePart
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DatePart -> c DatePart
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DatePart
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> DatePart -> u
forall u. (forall d. Data d => d -> u) -> DatePart -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DatePart -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DatePart -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DatePart -> m DatePart
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DatePart -> m DatePart
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DatePart
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DatePart -> c DatePart
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DatePart)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DatePart)
$cDatePart :: Constr
$tDatePart :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> DatePart -> m DatePart
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DatePart -> m DatePart
gmapMp :: (forall d. Data d => d -> m d) -> DatePart -> m DatePart
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DatePart -> m DatePart
gmapM :: (forall d. Data d => d -> m d) -> DatePart -> m DatePart
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DatePart -> m DatePart
gmapQi :: Int -> (forall d. Data d => d -> u) -> DatePart -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> DatePart -> u
gmapQ :: (forall d. Data d => d -> u) -> DatePart -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> DatePart -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DatePart -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DatePart -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DatePart -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DatePart -> r
gmapT :: (forall b. Data b => b -> b) -> DatePart -> DatePart
$cgmapT :: (forall b. Data b => b -> b) -> DatePart -> DatePart
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DatePart)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DatePart)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c DatePart)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DatePart)
dataTypeOf :: DatePart -> DataType
$cdataTypeOf :: DatePart -> DataType
toConstr :: DatePart -> Constr
$ctoConstr :: DatePart -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DatePart
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DatePart
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DatePart -> c DatePart
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DatePart -> c DatePart
$cp1Data :: Typeable DatePart
Data, (forall x. DatePart -> Rep DatePart x)
-> (forall x. Rep DatePart x -> DatePart) -> Generic DatePart
forall x. Rep DatePart x -> DatePart
forall x. DatePart -> Rep DatePart x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DatePart x -> DatePart
$cfrom :: forall x. DatePart -> Rep DatePart x
Generic )
defaultDate :: [DatePart]
defaultDate :: [DatePart]
defaultDate
= [ String -> String -> String -> Formatting -> DatePart
DatePart "year" "" "-" Formatting
emptyFormatting
, String -> String -> String -> Formatting -> DatePart
DatePart "month" "" "-" Formatting
emptyFormatting
, String -> String -> String -> Formatting -> DatePart
DatePart "day" "" "-" Formatting
emptyFormatting]
data Sort
= SortVariable String Sorting
| SortMacro String Sorting Int Int String
deriving ( Sort -> Sort -> Bool
(Sort -> Sort -> Bool) -> (Sort -> Sort -> Bool) -> Eq Sort
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Sort -> Sort -> Bool
$c/= :: Sort -> Sort -> Bool
== :: Sort -> Sort -> Bool
$c== :: Sort -> Sort -> Bool
Eq, Int -> Sort -> String -> String
[Sort] -> String -> String
Sort -> String
(Int -> Sort -> String -> String)
-> (Sort -> String) -> ([Sort] -> String -> String) -> Show Sort
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Sort] -> String -> String
$cshowList :: [Sort] -> String -> String
show :: Sort -> String
$cshow :: Sort -> String
showsPrec :: Int -> Sort -> String -> String
$cshowsPrec :: Int -> Sort -> String -> String
Show, ReadPrec [Sort]
ReadPrec Sort
Int -> ReadS Sort
ReadS [Sort]
(Int -> ReadS Sort)
-> ReadS [Sort] -> ReadPrec Sort -> ReadPrec [Sort] -> Read Sort
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Sort]
$creadListPrec :: ReadPrec [Sort]
readPrec :: ReadPrec Sort
$creadPrec :: ReadPrec Sort
readList :: ReadS [Sort]
$creadList :: ReadS [Sort]
readsPrec :: Int -> ReadS Sort
$creadsPrec :: Int -> ReadS Sort
Read, Typeable, Typeable Sort
DataType
Constr
Typeable Sort =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sort -> c Sort)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sort)
-> (Sort -> Constr)
-> (Sort -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Sort))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sort))
-> ((forall b. Data b => b -> b) -> Sort -> Sort)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r)
-> (forall u. (forall d. Data d => d -> u) -> Sort -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Sort -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Sort -> m Sort)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sort -> m Sort)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sort -> m Sort)
-> Data Sort
Sort -> DataType
Sort -> Constr
(forall b. Data b => b -> b) -> Sort -> Sort
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sort -> c Sort
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sort
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Sort -> u
forall u. (forall d. Data d => d -> u) -> Sort -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Sort -> m Sort
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sort -> m Sort
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sort
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sort -> c Sort
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Sort)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sort)
$cSortMacro :: Constr
$cSortVariable :: Constr
$tSort :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Sort -> m Sort
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sort -> m Sort
gmapMp :: (forall d. Data d => d -> m d) -> Sort -> m Sort
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sort -> m Sort
gmapM :: (forall d. Data d => d -> m d) -> Sort -> m Sort
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Sort -> m Sort
gmapQi :: Int -> (forall d. Data d => d -> u) -> Sort -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Sort -> u
gmapQ :: (forall d. Data d => d -> u) -> Sort -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Sort -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r
gmapT :: (forall b. Data b => b -> b) -> Sort -> Sort
$cgmapT :: (forall b. Data b => b -> b) -> Sort -> Sort
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sort)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sort)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Sort)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Sort)
dataTypeOf :: Sort -> DataType
$cdataTypeOf :: Sort -> DataType
toConstr :: Sort -> Constr
$ctoConstr :: Sort -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sort
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sort
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sort -> c Sort
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sort -> c Sort
$cp1Data :: Typeable Sort
Data, (forall x. Sort -> Rep Sort x)
-> (forall x. Rep Sort x -> Sort) -> Generic Sort
forall x. Rep Sort x -> Sort
forall x. Sort -> Rep Sort x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Sort x -> Sort
$cfrom :: forall x. Sort -> Rep Sort x
Generic )
data Sorting
= Ascending String
| Descending String
deriving ( ReadPrec [Sorting]
ReadPrec Sorting
Int -> ReadS Sorting
ReadS [Sorting]
(Int -> ReadS Sorting)
-> ReadS [Sorting]
-> ReadPrec Sorting
-> ReadPrec [Sorting]
-> Read Sorting
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Sorting]
$creadListPrec :: ReadPrec [Sorting]
readPrec :: ReadPrec Sorting
$creadPrec :: ReadPrec Sorting
readList :: ReadS [Sorting]
$creadList :: ReadS [Sorting]
readsPrec :: Int -> ReadS Sorting
$creadsPrec :: Int -> ReadS Sorting
Read, Int -> Sorting -> String -> String
[Sorting] -> String -> String
Sorting -> String
(Int -> Sorting -> String -> String)
-> (Sorting -> String)
-> ([Sorting] -> String -> String)
-> Show Sorting
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Sorting] -> String -> String
$cshowList :: [Sorting] -> String -> String
show :: Sorting -> String
$cshow :: Sorting -> String
showsPrec :: Int -> Sorting -> String -> String
$cshowsPrec :: Int -> Sorting -> String -> String
Show, Sorting -> Sorting -> Bool
(Sorting -> Sorting -> Bool)
-> (Sorting -> Sorting -> Bool) -> Eq Sorting
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Sorting -> Sorting -> Bool
$c/= :: Sorting -> Sorting -> Bool
== :: Sorting -> Sorting -> Bool
$c== :: Sorting -> Sorting -> Bool
Eq, Typeable, Typeable Sorting
DataType
Constr
Typeable Sorting =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sorting -> c Sorting)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sorting)
-> (Sorting -> Constr)
-> (Sorting -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Sorting))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sorting))
-> ((forall b. Data b => b -> b) -> Sorting -> Sorting)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Sorting -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Sorting -> r)
-> (forall u. (forall d. Data d => d -> u) -> Sorting -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Sorting -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Sorting -> m Sorting)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sorting -> m Sorting)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sorting -> m Sorting)
-> Data Sorting
Sorting -> DataType
Sorting -> Constr
(forall b. Data b => b -> b) -> Sorting -> Sorting
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sorting -> c Sorting
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sorting
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Sorting -> u
forall u. (forall d. Data d => d -> u) -> Sorting -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Sorting -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Sorting -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Sorting -> m Sorting
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sorting -> m Sorting
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sorting
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sorting -> c Sorting
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Sorting)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sorting)
$cDescending :: Constr
$cAscending :: Constr
$tSorting :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Sorting -> m Sorting
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sorting -> m Sorting
gmapMp :: (forall d. Data d => d -> m d) -> Sorting -> m Sorting
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Sorting -> m Sorting
gmapM :: (forall d. Data d => d -> m d) -> Sorting -> m Sorting
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Sorting -> m Sorting
gmapQi :: Int -> (forall d. Data d => d -> u) -> Sorting -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Sorting -> u
gmapQ :: (forall d. Data d => d -> u) -> Sorting -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Sorting -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Sorting -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Sorting -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Sorting -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Sorting -> r
gmapT :: (forall b. Data b => b -> b) -> Sorting -> Sorting
$cgmapT :: (forall b. Data b => b -> b) -> Sorting -> Sorting
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sorting)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sorting)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Sorting)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Sorting)
dataTypeOf :: Sorting -> DataType
$cdataTypeOf :: Sorting -> DataType
toConstr :: Sorting -> Constr
$ctoConstr :: Sorting -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sorting
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Sorting
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sorting -> c Sorting
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Sorting -> c Sorting
$cp1Data :: Typeable Sorting
Data, (forall x. Sorting -> Rep Sorting x)
-> (forall x. Rep Sorting x -> Sorting) -> Generic Sorting
forall x. Rep Sorting x -> Sorting
forall x. Sorting -> Rep Sorting x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Sorting x -> Sorting
$cfrom :: forall x. Sorting -> Rep Sorting x
Generic )
instance Ord Sorting where
compare :: Sorting -> Sorting -> Ordering
compare (Ascending []) (Ascending []) = Ordering
EQ
compare (Ascending []) (Ascending _) = Ordering
GT
compare (Ascending _) (Ascending []) = Ordering
LT
compare (Ascending a :: String
a) (Ascending b :: String
b) = String -> String -> Ordering
compare' String
a String
b
compare (Descending []) (Descending []) = Ordering
EQ
compare (Descending []) (Descending _) = Ordering
GT
compare (Descending _) (Descending []) = Ordering
LT
compare (Descending a :: String
a) (Descending b :: String
b) = String -> String -> Ordering
compare' String
b String
a
compare _ _ = Ordering
EQ
compare' :: String -> String -> Ordering
compare' :: String -> String -> Ordering
compare' x :: String
x y :: String
y
= case (String
x, String
y) of
('-':_,'-':_) -> String -> String -> Ordering
comp (String -> String
normalize String
y) (String -> String
normalize String
x)
('-':_, _ ) -> Ordering
LT
(_ ,'-':_) -> Ordering
GT
_ -> String -> String -> Ordering
comp (String -> String
normalize String
x) (String -> String
normalize String
y)
where
zeropad :: String -> String
zeropad [] = []
zeropad xs :: String
xs = if (Char -> Bool) -> String -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all Char -> Bool
isDigit String
xs
then Int -> Char -> String
forall a. Int -> a -> [a]
replicate (10 Int -> Int -> Int
forall a. Num a => a -> a -> a
- String -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
xs) '0' String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
xs
else String
xs
normalize :: String -> String
normalize = String -> String
zeropad (String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
(Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
map (\c :: Char
c -> if Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== ',' Bool -> Bool -> Bool
|| Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== '.' then ' ' else Char
c) (String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
(Char -> Bool) -> String -> String
forall a. (a -> Bool) -> [a] -> [a]
filter (\c :: Char
c -> Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== ',' Bool -> Bool -> Bool
||
Bool -> Bool
not (Char -> Bool
isPunctuation Char
c Bool -> Bool -> Bool
|| Char -> Bool
Char.isSpace Char
c
Bool -> Bool -> Bool
|| Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== 'ʾ' Bool -> Bool -> Bool
|| Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== 'ʿ'
))
#ifdef UNICODE_COLLATION
comp :: String -> String -> Ordering
comp a :: String
a b :: String
b = Collator -> Text -> Text -> Ordering
T.collate (LocaleName -> Collator
T.collator LocaleName
T.Current) (String -> Text
T.pack String
a) (String -> Text
T.pack String
b)
#else
comp a b = compareUnicode (map toLower a) (map toLower b)
#endif
data Form
= Long
| Short
| Count
| Verb
| VerbShort
| Symbol
| NotSet
deriving ( Form -> Form -> Bool
(Form -> Form -> Bool) -> (Form -> Form -> Bool) -> Eq Form
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Form -> Form -> Bool
$c/= :: Form -> Form -> Bool
== :: Form -> Form -> Bool
$c== :: Form -> Form -> Bool
Eq, Int -> Form -> String -> String
[Form] -> String -> String
Form -> String
(Int -> Form -> String -> String)
-> (Form -> String) -> ([Form] -> String -> String) -> Show Form
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Form] -> String -> String
$cshowList :: [Form] -> String -> String
show :: Form -> String
$cshow :: Form -> String
showsPrec :: Int -> Form -> String -> String
$cshowsPrec :: Int -> Form -> String -> String
Show, ReadPrec [Form]
ReadPrec Form
Int -> ReadS Form
ReadS [Form]
(Int -> ReadS Form)
-> ReadS [Form] -> ReadPrec Form -> ReadPrec [Form] -> Read Form
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Form]
$creadListPrec :: ReadPrec [Form]
readPrec :: ReadPrec Form
$creadPrec :: ReadPrec Form
readList :: ReadS [Form]
$creadList :: ReadS [Form]
readsPrec :: Int -> ReadS Form
$creadsPrec :: Int -> ReadS Form
Read, Typeable, Typeable Form
DataType
Constr
Typeable Form =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Form -> c Form)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Form)
-> (Form -> Constr)
-> (Form -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Form))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Form))
-> ((forall b. Data b => b -> b) -> Form -> Form)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Form -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Form -> r)
-> (forall u. (forall d. Data d => d -> u) -> Form -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Form -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Form -> m Form)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Form -> m Form)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Form -> m Form)
-> Data Form
Form -> DataType
Form -> Constr
(forall b. Data b => b -> b) -> Form -> Form
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Form -> c Form
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Form
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Form -> u
forall u. (forall d. Data d => d -> u) -> Form -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Form -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Form -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Form -> m Form
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Form -> m Form
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Form
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Form -> c Form
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Form)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Form)
$cNotSet :: Constr
$cSymbol :: Constr
$cVerbShort :: Constr
$cVerb :: Constr
$cCount :: Constr
$cShort :: Constr
$cLong :: Constr
$tForm :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Form -> m Form
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Form -> m Form
gmapMp :: (forall d. Data d => d -> m d) -> Form -> m Form
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Form -> m Form
gmapM :: (forall d. Data d => d -> m d) -> Form -> m Form
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Form -> m Form
gmapQi :: Int -> (forall d. Data d => d -> u) -> Form -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Form -> u
gmapQ :: (forall d. Data d => d -> u) -> Form -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Form -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Form -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Form -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Form -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Form -> r
gmapT :: (forall b. Data b => b -> b) -> Form -> Form
$cgmapT :: (forall b. Data b => b -> b) -> Form -> Form
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Form)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Form)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Form)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Form)
dataTypeOf :: Form -> DataType
$cdataTypeOf :: Form -> DataType
toConstr :: Form -> Constr
$ctoConstr :: Form -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Form
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Form
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Form -> c Form
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Form -> c Form
$cp1Data :: Typeable Form
Data, (forall x. Form -> Rep Form x)
-> (forall x. Rep Form x -> Form) -> Generic Form
forall x. Rep Form x -> Form
forall x. Form -> Rep Form x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Form x -> Form
$cfrom :: forall x. Form -> Rep Form x
Generic )
data Gender
= Feminine
| Masculine
| Neuter
deriving ( Gender -> Gender -> Bool
(Gender -> Gender -> Bool)
-> (Gender -> Gender -> Bool) -> Eq Gender
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Gender -> Gender -> Bool
$c/= :: Gender -> Gender -> Bool
== :: Gender -> Gender -> Bool
$c== :: Gender -> Gender -> Bool
Eq, Int -> Gender -> String -> String
[Gender] -> String -> String
Gender -> String
(Int -> Gender -> String -> String)
-> (Gender -> String)
-> ([Gender] -> String -> String)
-> Show Gender
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Gender] -> String -> String
$cshowList :: [Gender] -> String -> String
show :: Gender -> String
$cshow :: Gender -> String
showsPrec :: Int -> Gender -> String -> String
$cshowsPrec :: Int -> Gender -> String -> String
Show, ReadPrec [Gender]
ReadPrec Gender
Int -> ReadS Gender
ReadS [Gender]
(Int -> ReadS Gender)
-> ReadS [Gender]
-> ReadPrec Gender
-> ReadPrec [Gender]
-> Read Gender
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Gender]
$creadListPrec :: ReadPrec [Gender]
readPrec :: ReadPrec Gender
$creadPrec :: ReadPrec Gender
readList :: ReadS [Gender]
$creadList :: ReadS [Gender]
readsPrec :: Int -> ReadS Gender
$creadsPrec :: Int -> ReadS Gender
Read, Typeable, Typeable Gender
DataType
Constr
Typeable Gender =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Gender -> c Gender)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Gender)
-> (Gender -> Constr)
-> (Gender -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Gender))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Gender))
-> ((forall b. Data b => b -> b) -> Gender -> Gender)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Gender -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Gender -> r)
-> (forall u. (forall d. Data d => d -> u) -> Gender -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Gender -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Gender -> m Gender)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Gender -> m Gender)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Gender -> m Gender)
-> Data Gender
Gender -> DataType
Gender -> Constr
(forall b. Data b => b -> b) -> Gender -> Gender
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Gender -> c Gender
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Gender
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Gender -> u
forall u. (forall d. Data d => d -> u) -> Gender -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Gender -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Gender -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Gender -> m Gender
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Gender -> m Gender
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Gender
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Gender -> c Gender
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Gender)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Gender)
$cNeuter :: Constr
$cMasculine :: Constr
$cFeminine :: Constr
$tGender :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Gender -> m Gender
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Gender -> m Gender
gmapMp :: (forall d. Data d => d -> m d) -> Gender -> m Gender
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Gender -> m Gender
gmapM :: (forall d. Data d => d -> m d) -> Gender -> m Gender
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Gender -> m Gender
gmapQi :: Int -> (forall d. Data d => d -> u) -> Gender -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Gender -> u
gmapQ :: (forall d. Data d => d -> u) -> Gender -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Gender -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Gender -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Gender -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Gender -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Gender -> r
gmapT :: (forall b. Data b => b -> b) -> Gender -> Gender
$cgmapT :: (forall b. Data b => b -> b) -> Gender -> Gender
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Gender)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Gender)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Gender)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Gender)
dataTypeOf :: Gender -> DataType
$cdataTypeOf :: Gender -> DataType
toConstr :: Gender -> Constr
$ctoConstr :: Gender -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Gender
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Gender
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Gender -> c Gender
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Gender -> c Gender
$cp1Data :: Typeable Gender
Data, (forall x. Gender -> Rep Gender x)
-> (forall x. Rep Gender x -> Gender) -> Generic Gender
forall x. Rep Gender x -> Gender
forall x. Gender -> Rep Gender x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Gender x -> Gender
$cfrom :: forall x. Gender -> Rep Gender x
Generic )
data NumericForm
= Numeric
| Ordinal
| Roman
| LongOrdinal
deriving ( NumericForm -> NumericForm -> Bool
(NumericForm -> NumericForm -> Bool)
-> (NumericForm -> NumericForm -> Bool) -> Eq NumericForm
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NumericForm -> NumericForm -> Bool
$c/= :: NumericForm -> NumericForm -> Bool
== :: NumericForm -> NumericForm -> Bool
$c== :: NumericForm -> NumericForm -> Bool
Eq, Int -> NumericForm -> String -> String
[NumericForm] -> String -> String
NumericForm -> String
(Int -> NumericForm -> String -> String)
-> (NumericForm -> String)
-> ([NumericForm] -> String -> String)
-> Show NumericForm
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [NumericForm] -> String -> String
$cshowList :: [NumericForm] -> String -> String
show :: NumericForm -> String
$cshow :: NumericForm -> String
showsPrec :: Int -> NumericForm -> String -> String
$cshowsPrec :: Int -> NumericForm -> String -> String
Show, ReadPrec [NumericForm]
ReadPrec NumericForm
Int -> ReadS NumericForm
ReadS [NumericForm]
(Int -> ReadS NumericForm)
-> ReadS [NumericForm]
-> ReadPrec NumericForm
-> ReadPrec [NumericForm]
-> Read NumericForm
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [NumericForm]
$creadListPrec :: ReadPrec [NumericForm]
readPrec :: ReadPrec NumericForm
$creadPrec :: ReadPrec NumericForm
readList :: ReadS [NumericForm]
$creadList :: ReadS [NumericForm]
readsPrec :: Int -> ReadS NumericForm
$creadsPrec :: Int -> ReadS NumericForm
Read, Typeable, Typeable NumericForm
DataType
Constr
Typeable NumericForm =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NumericForm -> c NumericForm)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NumericForm)
-> (NumericForm -> Constr)
-> (NumericForm -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NumericForm))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c NumericForm))
-> ((forall b. Data b => b -> b) -> NumericForm -> NumericForm)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NumericForm -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NumericForm -> r)
-> (forall u. (forall d. Data d => d -> u) -> NumericForm -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> NumericForm -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NumericForm -> m NumericForm)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NumericForm -> m NumericForm)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NumericForm -> m NumericForm)
-> Data NumericForm
NumericForm -> DataType
NumericForm -> Constr
(forall b. Data b => b -> b) -> NumericForm -> NumericForm
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NumericForm -> c NumericForm
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NumericForm
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> NumericForm -> u
forall u. (forall d. Data d => d -> u) -> NumericForm -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NumericForm -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NumericForm -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NumericForm -> m NumericForm
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NumericForm -> m NumericForm
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NumericForm
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NumericForm -> c NumericForm
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NumericForm)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c NumericForm)
$cLongOrdinal :: Constr
$cRoman :: Constr
$cOrdinal :: Constr
$cNumeric :: Constr
$tNumericForm :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> NumericForm -> m NumericForm
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NumericForm -> m NumericForm
gmapMp :: (forall d. Data d => d -> m d) -> NumericForm -> m NumericForm
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NumericForm -> m NumericForm
gmapM :: (forall d. Data d => d -> m d) -> NumericForm -> m NumericForm
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NumericForm -> m NumericForm
gmapQi :: Int -> (forall d. Data d => d -> u) -> NumericForm -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> NumericForm -> u
gmapQ :: (forall d. Data d => d -> u) -> NumericForm -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> NumericForm -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NumericForm -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NumericForm -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NumericForm -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NumericForm -> r
gmapT :: (forall b. Data b => b -> b) -> NumericForm -> NumericForm
$cgmapT :: (forall b. Data b => b -> b) -> NumericForm -> NumericForm
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c NumericForm)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c NumericForm)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c NumericForm)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NumericForm)
dataTypeOf :: NumericForm -> DataType
$cdataTypeOf :: NumericForm -> DataType
toConstr :: NumericForm -> Constr
$ctoConstr :: NumericForm -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NumericForm
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NumericForm
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NumericForm -> c NumericForm
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NumericForm -> c NumericForm
$cp1Data :: Typeable NumericForm
Data, (forall x. NumericForm -> Rep NumericForm x)
-> (forall x. Rep NumericForm x -> NumericForm)
-> Generic NumericForm
forall x. Rep NumericForm x -> NumericForm
forall x. NumericForm -> Rep NumericForm x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NumericForm x -> NumericForm
$cfrom :: forall x. NumericForm -> Rep NumericForm x
Generic )
data DateForm
= TextDate
| NumericDate
| NoFormDate
deriving ( DateForm -> DateForm -> Bool
(DateForm -> DateForm -> Bool)
-> (DateForm -> DateForm -> Bool) -> Eq DateForm
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DateForm -> DateForm -> Bool
$c/= :: DateForm -> DateForm -> Bool
== :: DateForm -> DateForm -> Bool
$c== :: DateForm -> DateForm -> Bool
Eq, Int -> DateForm -> String -> String
[DateForm] -> String -> String
DateForm -> String
(Int -> DateForm -> String -> String)
-> (DateForm -> String)
-> ([DateForm] -> String -> String)
-> Show DateForm
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [DateForm] -> String -> String
$cshowList :: [DateForm] -> String -> String
show :: DateForm -> String
$cshow :: DateForm -> String
showsPrec :: Int -> DateForm -> String -> String
$cshowsPrec :: Int -> DateForm -> String -> String
Show, ReadPrec [DateForm]
ReadPrec DateForm
Int -> ReadS DateForm
ReadS [DateForm]
(Int -> ReadS DateForm)
-> ReadS [DateForm]
-> ReadPrec DateForm
-> ReadPrec [DateForm]
-> Read DateForm
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DateForm]
$creadListPrec :: ReadPrec [DateForm]
readPrec :: ReadPrec DateForm
$creadPrec :: ReadPrec DateForm
readList :: ReadS [DateForm]
$creadList :: ReadS [DateForm]
readsPrec :: Int -> ReadS DateForm
$creadsPrec :: Int -> ReadS DateForm
Read, Typeable, Typeable DateForm
DataType
Constr
Typeable DateForm =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DateForm -> c DateForm)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DateForm)
-> (DateForm -> Constr)
-> (DateForm -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DateForm))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DateForm))
-> ((forall b. Data b => b -> b) -> DateForm -> DateForm)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DateForm -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DateForm -> r)
-> (forall u. (forall d. Data d => d -> u) -> DateForm -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> DateForm -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DateForm -> m DateForm)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DateForm -> m DateForm)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DateForm -> m DateForm)
-> Data DateForm
DateForm -> DataType
DateForm -> Constr
(forall b. Data b => b -> b) -> DateForm -> DateForm
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DateForm -> c DateForm
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DateForm
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> DateForm -> u
forall u. (forall d. Data d => d -> u) -> DateForm -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DateForm -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DateForm -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DateForm -> m DateForm
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DateForm -> m DateForm
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DateForm
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DateForm -> c DateForm
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DateForm)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DateForm)
$cNoFormDate :: Constr
$cNumericDate :: Constr
$cTextDate :: Constr
$tDateForm :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> DateForm -> m DateForm
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DateForm -> m DateForm
gmapMp :: (forall d. Data d => d -> m d) -> DateForm -> m DateForm
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DateForm -> m DateForm
gmapM :: (forall d. Data d => d -> m d) -> DateForm -> m DateForm
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DateForm -> m DateForm
gmapQi :: Int -> (forall d. Data d => d -> u) -> DateForm -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> DateForm -> u
gmapQ :: (forall d. Data d => d -> u) -> DateForm -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> DateForm -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DateForm -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DateForm -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DateForm -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DateForm -> r
gmapT :: (forall b. Data b => b -> b) -> DateForm -> DateForm
$cgmapT :: (forall b. Data b => b -> b) -> DateForm -> DateForm
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DateForm)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DateForm)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c DateForm)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DateForm)
dataTypeOf :: DateForm -> DataType
$cdataTypeOf :: DateForm -> DataType
toConstr :: DateForm -> Constr
$ctoConstr :: DateForm -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DateForm
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DateForm
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DateForm -> c DateForm
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DateForm -> c DateForm
$cp1Data :: Typeable DateForm
Data, (forall x. DateForm -> Rep DateForm x)
-> (forall x. Rep DateForm x -> DateForm) -> Generic DateForm
forall x. Rep DateForm x -> DateForm
forall x. DateForm -> Rep DateForm x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DateForm x -> DateForm
$cfrom :: forall x. DateForm -> Rep DateForm x
Generic )
data Plural
= Contextual
| Always
| Never
deriving ( Plural -> Plural -> Bool
(Plural -> Plural -> Bool)
-> (Plural -> Plural -> Bool) -> Eq Plural
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Plural -> Plural -> Bool
$c/= :: Plural -> Plural -> Bool
== :: Plural -> Plural -> Bool
$c== :: Plural -> Plural -> Bool
Eq, Int -> Plural -> String -> String
[Plural] -> String -> String
Plural -> String
(Int -> Plural -> String -> String)
-> (Plural -> String)
-> ([Plural] -> String -> String)
-> Show Plural
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Plural] -> String -> String
$cshowList :: [Plural] -> String -> String
show :: Plural -> String
$cshow :: Plural -> String
showsPrec :: Int -> Plural -> String -> String
$cshowsPrec :: Int -> Plural -> String -> String
Show, ReadPrec [Plural]
ReadPrec Plural
Int -> ReadS Plural
ReadS [Plural]
(Int -> ReadS Plural)
-> ReadS [Plural]
-> ReadPrec Plural
-> ReadPrec [Plural]
-> Read Plural
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Plural]
$creadListPrec :: ReadPrec [Plural]
readPrec :: ReadPrec Plural
$creadPrec :: ReadPrec Plural
readList :: ReadS [Plural]
$creadList :: ReadS [Plural]
readsPrec :: Int -> ReadS Plural
$creadsPrec :: Int -> ReadS Plural
Read, Typeable, Typeable Plural
DataType
Constr
Typeable Plural =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Plural -> c Plural)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Plural)
-> (Plural -> Constr)
-> (Plural -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Plural))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Plural))
-> ((forall b. Data b => b -> b) -> Plural -> Plural)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Plural -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Plural -> r)
-> (forall u. (forall d. Data d => d -> u) -> Plural -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Plural -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Plural -> m Plural)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Plural -> m Plural)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Plural -> m Plural)
-> Data Plural
Plural -> DataType
Plural -> Constr
(forall b. Data b => b -> b) -> Plural -> Plural
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Plural -> c Plural
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Plural
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Plural -> u
forall u. (forall d. Data d => d -> u) -> Plural -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Plural -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Plural -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Plural -> m Plural
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Plural -> m Plural
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Plural
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Plural -> c Plural
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Plural)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Plural)
$cNever :: Constr
$cAlways :: Constr
$cContextual :: Constr
$tPlural :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Plural -> m Plural
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Plural -> m Plural
gmapMp :: (forall d. Data d => d -> m d) -> Plural -> m Plural
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Plural -> m Plural
gmapM :: (forall d. Data d => d -> m d) -> Plural -> m Plural
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Plural -> m Plural
gmapQi :: Int -> (forall d. Data d => d -> u) -> Plural -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Plural -> u
gmapQ :: (forall d. Data d => d -> u) -> Plural -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Plural -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Plural -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Plural -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Plural -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Plural -> r
gmapT :: (forall b. Data b => b -> b) -> Plural -> Plural
$cgmapT :: (forall b. Data b => b -> b) -> Plural -> Plural
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Plural)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Plural)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Plural)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Plural)
dataTypeOf :: Plural -> DataType
$cdataTypeOf :: Plural -> DataType
toConstr :: Plural -> Constr
$ctoConstr :: Plural -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Plural
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Plural
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Plural -> c Plural
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Plural -> c Plural
$cp1Data :: Typeable Plural
Data, (forall x. Plural -> Rep Plural x)
-> (forall x. Rep Plural x -> Plural) -> Generic Plural
forall x. Rep Plural x -> Plural
forall x. Plural -> Rep Plural x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Plural x -> Plural
$cfrom :: forall x. Plural -> Rep Plural x
Generic )
data Name
= Name Form Formatting NameAttrs Delimiter [NamePart]
| NameLabel Form Formatting Plural
| EtAl Formatting String
deriving ( Name -> Name -> Bool
(Name -> Name -> Bool) -> (Name -> Name -> Bool) -> Eq Name
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Name -> Name -> Bool
$c/= :: Name -> Name -> Bool
== :: Name -> Name -> Bool
$c== :: Name -> Name -> Bool
Eq, Int -> Name -> String -> String
[Name] -> String -> String
Name -> String
(Int -> Name -> String -> String)
-> (Name -> String) -> ([Name] -> String -> String) -> Show Name
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Name] -> String -> String
$cshowList :: [Name] -> String -> String
show :: Name -> String
$cshow :: Name -> String
showsPrec :: Int -> Name -> String -> String
$cshowsPrec :: Int -> Name -> String -> String
Show, ReadPrec [Name]
ReadPrec Name
Int -> ReadS Name
ReadS [Name]
(Int -> ReadS Name)
-> ReadS [Name] -> ReadPrec Name -> ReadPrec [Name] -> Read Name
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Name]
$creadListPrec :: ReadPrec [Name]
readPrec :: ReadPrec Name
$creadPrec :: ReadPrec Name
readList :: ReadS [Name]
$creadList :: ReadS [Name]
readsPrec :: Int -> ReadS Name
$creadsPrec :: Int -> ReadS Name
Read, Typeable, Typeable Name
DataType
Constr
Typeable Name =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Name -> c Name)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Name)
-> (Name -> Constr)
-> (Name -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Name))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Name))
-> ((forall b. Data b => b -> b) -> Name -> Name)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r)
-> (forall u. (forall d. Data d => d -> u) -> Name -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Name -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Name -> m Name)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Name -> m Name)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Name -> m Name)
-> Data Name
Name -> DataType
Name -> Constr
(forall b. Data b => b -> b) -> Name -> Name
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Name -> c Name
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Name
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Name -> u
forall u. (forall d. Data d => d -> u) -> Name -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Name -> m Name
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Name -> m Name
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Name
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Name -> c Name
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Name)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Name)
$cEtAl :: Constr
$cNameLabel :: Constr
$cName :: Constr
$tName :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Name -> m Name
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Name -> m Name
gmapMp :: (forall d. Data d => d -> m d) -> Name -> m Name
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Name -> m Name
gmapM :: (forall d. Data d => d -> m d) -> Name -> m Name
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Name -> m Name
gmapQi :: Int -> (forall d. Data d => d -> u) -> Name -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Name -> u
gmapQ :: (forall d. Data d => d -> u) -> Name -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Name -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r
gmapT :: (forall b. Data b => b -> b) -> Name -> Name
$cgmapT :: (forall b. Data b => b -> b) -> Name -> Name
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Name)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Name)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Name)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Name)
dataTypeOf :: Name -> DataType
$cdataTypeOf :: Name -> DataType
toConstr :: Name -> Constr
$ctoConstr :: Name -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Name
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Name
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Name -> c Name
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Name -> c Name
$cp1Data :: Typeable Name
Data, (forall x. Name -> Rep Name x)
-> (forall x. Rep Name x -> Name) -> Generic Name
forall x. Rep Name x -> Name
forall x. Name -> Rep Name x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Name x -> Name
$cfrom :: forall x. Name -> Rep Name x
Generic )
type NameAttrs = [(String, String)]
data NamePart
= NamePart String Formatting
deriving ( Int -> NamePart -> String -> String
[NamePart] -> String -> String
NamePart -> String
(Int -> NamePart -> String -> String)
-> (NamePart -> String)
-> ([NamePart] -> String -> String)
-> Show NamePart
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [NamePart] -> String -> String
$cshowList :: [NamePart] -> String -> String
show :: NamePart -> String
$cshow :: NamePart -> String
showsPrec :: Int -> NamePart -> String -> String
$cshowsPrec :: Int -> NamePart -> String -> String
Show, ReadPrec [NamePart]
ReadPrec NamePart
Int -> ReadS NamePart
ReadS [NamePart]
(Int -> ReadS NamePart)
-> ReadS [NamePart]
-> ReadPrec NamePart
-> ReadPrec [NamePart]
-> Read NamePart
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [NamePart]
$creadListPrec :: ReadPrec [NamePart]
readPrec :: ReadPrec NamePart
$creadPrec :: ReadPrec NamePart
readList :: ReadS [NamePart]
$creadList :: ReadS [NamePart]
readsPrec :: Int -> ReadS NamePart
$creadsPrec :: Int -> ReadS NamePart
Read, NamePart -> NamePart -> Bool
(NamePart -> NamePart -> Bool)
-> (NamePart -> NamePart -> Bool) -> Eq NamePart
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NamePart -> NamePart -> Bool
$c/= :: NamePart -> NamePart -> Bool
== :: NamePart -> NamePart -> Bool
$c== :: NamePart -> NamePart -> Bool
Eq, Typeable, Typeable NamePart
DataType
Constr
Typeable NamePart =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NamePart -> c NamePart)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NamePart)
-> (NamePart -> Constr)
-> (NamePart -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NamePart))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NamePart))
-> ((forall b. Data b => b -> b) -> NamePart -> NamePart)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NamePart -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NamePart -> r)
-> (forall u. (forall d. Data d => d -> u) -> NamePart -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> NamePart -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NamePart -> m NamePart)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NamePart -> m NamePart)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NamePart -> m NamePart)
-> Data NamePart
NamePart -> DataType
NamePart -> Constr
(forall b. Data b => b -> b) -> NamePart -> NamePart
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NamePart -> c NamePart
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NamePart
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> NamePart -> u
forall u. (forall d. Data d => d -> u) -> NamePart -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NamePart -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NamePart -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NamePart -> m NamePart
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NamePart -> m NamePart
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NamePart
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NamePart -> c NamePart
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NamePart)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NamePart)
$cNamePart :: Constr
$tNamePart :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> NamePart -> m NamePart
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NamePart -> m NamePart
gmapMp :: (forall d. Data d => d -> m d) -> NamePart -> m NamePart
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NamePart -> m NamePart
gmapM :: (forall d. Data d => d -> m d) -> NamePart -> m NamePart
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NamePart -> m NamePart
gmapQi :: Int -> (forall d. Data d => d -> u) -> NamePart -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> NamePart -> u
gmapQ :: (forall d. Data d => d -> u) -> NamePart -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> NamePart -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NamePart -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NamePart -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NamePart -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NamePart -> r
gmapT :: (forall b. Data b => b -> b) -> NamePart -> NamePart
$cgmapT :: (forall b. Data b => b -> b) -> NamePart -> NamePart
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NamePart)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NamePart)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c NamePart)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NamePart)
dataTypeOf :: NamePart -> DataType
$cdataTypeOf :: NamePart -> DataType
toConstr :: NamePart -> Constr
$ctoConstr :: NamePart -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NamePart
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NamePart
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NamePart -> c NamePart
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NamePart -> c NamePart
$cp1Data :: Typeable NamePart
Data, (forall x. NamePart -> Rep NamePart x)
-> (forall x. Rep NamePart x -> NamePart) -> Generic NamePart
forall x. Rep NamePart x -> NamePart
forall x. NamePart -> Rep NamePart x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NamePart x -> NamePart
$cfrom :: forall x. NamePart -> Rep NamePart x
Generic )
isPlural :: Plural -> Int -> Bool
isPlural :: Plural -> Int -> Bool
isPlural p :: Plural
p l :: Int
l
= case Plural
p of
Always -> Bool
True
Never -> Bool
False
Contextual -> Int
l Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 1
isName :: Name -> Bool
isName :: Name -> Bool
isName x :: Name
x = case Name
x of Name {} -> Bool
True; _ -> Bool
False
isNames :: Element -> Bool
isNames :: Element -> Bool
isNames x :: Element
x = case Element
x of Names {} -> Bool
True; _ -> Bool
False
hasEtAl :: [Name] -> Bool
hasEtAl :: [Name] -> Bool
hasEtAl = (Name -> Bool) -> [Name] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Name -> Bool
isEtAl
where isEtAl :: Name -> Bool
isEtAl (EtAl _ _) = Bool
True
isEtAl _ = Bool
False
data Formatting
= Formatting
{ Formatting -> String
prefix :: String
, Formatting -> String
suffix :: String
, Formatting -> String
fontFamily :: String
, Formatting -> String
fontStyle :: String
, Formatting -> String
fontVariant :: String
, Formatting -> String
fontWeight :: String
, Formatting -> String
textDecoration :: String
, Formatting -> String
verticalAlign :: String
, Formatting -> String
textCase :: String
, Formatting -> String
display :: String
, Formatting -> Quote
quotes :: Quote
, Formatting -> Bool
stripPeriods :: Bool
, Formatting -> Bool
noCase :: Bool
, Formatting -> Bool
noDecor :: Bool
, Formatting -> String
hyperlink :: String
} deriving ( ReadPrec [Formatting]
ReadPrec Formatting
Int -> ReadS Formatting
ReadS [Formatting]
(Int -> ReadS Formatting)
-> ReadS [Formatting]
-> ReadPrec Formatting
-> ReadPrec [Formatting]
-> Read Formatting
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Formatting]
$creadListPrec :: ReadPrec [Formatting]
readPrec :: ReadPrec Formatting
$creadPrec :: ReadPrec Formatting
readList :: ReadS [Formatting]
$creadList :: ReadS [Formatting]
readsPrec :: Int -> ReadS Formatting
$creadsPrec :: Int -> ReadS Formatting
Read, Formatting -> Formatting -> Bool
(Formatting -> Formatting -> Bool)
-> (Formatting -> Formatting -> Bool) -> Eq Formatting
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Formatting -> Formatting -> Bool
$c/= :: Formatting -> Formatting -> Bool
== :: Formatting -> Formatting -> Bool
$c== :: Formatting -> Formatting -> Bool
Eq, Eq Formatting
Eq Formatting =>
(Formatting -> Formatting -> Ordering)
-> (Formatting -> Formatting -> Bool)
-> (Formatting -> Formatting -> Bool)
-> (Formatting -> Formatting -> Bool)
-> (Formatting -> Formatting -> Bool)
-> (Formatting -> Formatting -> Formatting)
-> (Formatting -> Formatting -> Formatting)
-> Ord Formatting
Formatting -> Formatting -> Bool
Formatting -> Formatting -> Ordering
Formatting -> Formatting -> Formatting
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Formatting -> Formatting -> Formatting
$cmin :: Formatting -> Formatting -> Formatting
max :: Formatting -> Formatting -> Formatting
$cmax :: Formatting -> Formatting -> Formatting
>= :: Formatting -> Formatting -> Bool
$c>= :: Formatting -> Formatting -> Bool
> :: Formatting -> Formatting -> Bool
$c> :: Formatting -> Formatting -> Bool
<= :: Formatting -> Formatting -> Bool
$c<= :: Formatting -> Formatting -> Bool
< :: Formatting -> Formatting -> Bool
$c< :: Formatting -> Formatting -> Bool
compare :: Formatting -> Formatting -> Ordering
$ccompare :: Formatting -> Formatting -> Ordering
$cp1Ord :: Eq Formatting
Ord, Typeable, Typeable Formatting
DataType
Constr
Typeable Formatting =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatting -> c Formatting)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatting)
-> (Formatting -> Constr)
-> (Formatting -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Formatting))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c Formatting))
-> ((forall b. Data b => b -> b) -> Formatting -> Formatting)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Formatting -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Formatting -> r)
-> (forall u. (forall d. Data d => d -> u) -> Formatting -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> Formatting -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Formatting -> m Formatting)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatting -> m Formatting)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatting -> m Formatting)
-> Data Formatting
Formatting -> DataType
Formatting -> Constr
(forall b. Data b => b -> b) -> Formatting -> Formatting
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatting -> c Formatting
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatting
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Formatting -> u
forall u. (forall d. Data d => d -> u) -> Formatting -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Formatting -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Formatting -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Formatting -> m Formatting
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatting -> m Formatting
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatting
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatting -> c Formatting
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Formatting)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Formatting)
$cFormatting :: Constr
$tFormatting :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Formatting -> m Formatting
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatting -> m Formatting
gmapMp :: (forall d. Data d => d -> m d) -> Formatting -> m Formatting
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Formatting -> m Formatting
gmapM :: (forall d. Data d => d -> m d) -> Formatting -> m Formatting
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Formatting -> m Formatting
gmapQi :: Int -> (forall d. Data d => d -> u) -> Formatting -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Formatting -> u
gmapQ :: (forall d. Data d => d -> u) -> Formatting -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Formatting -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Formatting -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Formatting -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Formatting -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Formatting -> r
gmapT :: (forall b. Data b => b -> b) -> Formatting -> Formatting
$cgmapT :: (forall b. Data b => b -> b) -> Formatting -> Formatting
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Formatting)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Formatting)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Formatting)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Formatting)
dataTypeOf :: Formatting -> DataType
$cdataTypeOf :: Formatting -> DataType
toConstr :: Formatting -> Constr
$ctoConstr :: Formatting -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatting
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Formatting
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatting -> c Formatting
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Formatting -> c Formatting
$cp1Data :: Typeable Formatting
Data, (forall x. Formatting -> Rep Formatting x)
-> (forall x. Rep Formatting x -> Formatting) -> Generic Formatting
forall x. Rep Formatting x -> Formatting
forall x. Formatting -> Rep Formatting x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Formatting x -> Formatting
$cfrom :: forall x. Formatting -> Rep Formatting x
Generic )
instance Show Formatting where
show :: Formatting -> String
show x :: Formatting
x
| Formatting
x Formatting -> Formatting -> Bool
forall a. Eq a => a -> a -> Bool
== Formatting
emptyFormatting = "emptyFormatting"
| Bool
otherwise = "emptyFormatting{"
String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate ", "
[ String
k String -> String -> String
forall a. [a] -> [a] -> [a]
++ " = " String -> String -> String
forall a. [a] -> [a] -> [a]
++ Formatting -> String
f Formatting
x |
(k :: String
k, f :: Formatting -> String
f) <- [("prefix", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
prefix)
,("suffix", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
suffix)
,("fontFamily", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
fontFamily)
,("fontStyle", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
fontStyle)
,("fontVariant", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
fontVariant)
,("fontWeight", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
fontWeight)
,("textDecoration", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
textDecoration)
,("verticalAlign", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
verticalAlign)
,("textCase", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
textCase)
,("display", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
display)
,("quotes", Quote -> String
forall a. Show a => a -> String
show (Quote -> String) -> (Formatting -> Quote) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> Quote
quotes)
,("stripPeriods", Bool -> String
forall a. Show a => a -> String
show (Bool -> String) -> (Formatting -> Bool) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> Bool
stripPeriods)
,("noCase", Bool -> String
forall a. Show a => a -> String
show (Bool -> String) -> (Formatting -> Bool) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> Bool
noCase)
,("noDecor", Bool -> String
forall a. Show a => a -> String
show (Bool -> String) -> (Formatting -> Bool) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> Bool
noDecor)
,("hyperlink", String -> String
forall a. Show a => a -> String
show (String -> String)
-> (Formatting -> String) -> Formatting -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatting -> String
hyperlink)],
Formatting -> String
f Formatting
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
/= Formatting -> String
f Formatting
emptyFormatting ]
String -> String -> String
forall a. [a] -> [a] -> [a]
++ "}"
rmTitleCase :: Formatting -> Formatting
rmTitleCase :: Formatting -> Formatting
rmTitleCase f :: Formatting
f = Formatting
f{ textCase :: String
textCase = if Formatting -> String
textCase Formatting
f String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== "title" then "" else Formatting -> String
textCase Formatting
f }
rmTitleCase' :: Output -> Output
rmTitleCase' :: Output -> Output
rmTitleCase' o :: Output
o =
case Output
o of
OStr s :: String
s f :: Formatting
f -> String -> Formatting -> Output
OStr String
s (Formatting -> Formatting
rmTitleCase Formatting
f)
Output os :: [Output]
os f :: Formatting
f -> [Output] -> Formatting -> Output
Output [Output]
os (Formatting -> Formatting
rmTitleCase Formatting
f)
_ -> Output
o
data Quote
= NativeQuote
| ParsedQuote
| NoQuote
deriving ( Int -> Quote -> String -> String
[Quote] -> String -> String
Quote -> String
(Int -> Quote -> String -> String)
-> (Quote -> String) -> ([Quote] -> String -> String) -> Show Quote
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Quote] -> String -> String
$cshowList :: [Quote] -> String -> String
show :: Quote -> String
$cshow :: Quote -> String
showsPrec :: Int -> Quote -> String -> String
$cshowsPrec :: Int -> Quote -> String -> String
Show, ReadPrec [Quote]
ReadPrec Quote
Int -> ReadS Quote
ReadS [Quote]
(Int -> ReadS Quote)
-> ReadS [Quote]
-> ReadPrec Quote
-> ReadPrec [Quote]
-> Read Quote
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Quote]
$creadListPrec :: ReadPrec [Quote]
readPrec :: ReadPrec Quote
$creadPrec :: ReadPrec Quote
readList :: ReadS [Quote]
$creadList :: ReadS [Quote]
readsPrec :: Int -> ReadS Quote
$creadsPrec :: Int -> ReadS Quote
Read, Quote -> Quote -> Bool
(Quote -> Quote -> Bool) -> (Quote -> Quote -> Bool) -> Eq Quote
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Quote -> Quote -> Bool
$c/= :: Quote -> Quote -> Bool
== :: Quote -> Quote -> Bool
$c== :: Quote -> Quote -> Bool
Eq, Eq Quote
Eq Quote =>
(Quote -> Quote -> Ordering)
-> (Quote -> Quote -> Bool)
-> (Quote -> Quote -> Bool)
-> (Quote -> Quote -> Bool)
-> (Quote -> Quote -> Bool)
-> (Quote -> Quote -> Quote)
-> (Quote -> Quote -> Quote)
-> Ord Quote
Quote -> Quote -> Bool
Quote -> Quote -> Ordering
Quote -> Quote -> Quote
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Quote -> Quote -> Quote
$cmin :: Quote -> Quote -> Quote
max :: Quote -> Quote -> Quote
$cmax :: Quote -> Quote -> Quote
>= :: Quote -> Quote -> Bool
$c>= :: Quote -> Quote -> Bool
> :: Quote -> Quote -> Bool
$c> :: Quote -> Quote -> Bool
<= :: Quote -> Quote -> Bool
$c<= :: Quote -> Quote -> Bool
< :: Quote -> Quote -> Bool
$c< :: Quote -> Quote -> Bool
compare :: Quote -> Quote -> Ordering
$ccompare :: Quote -> Quote -> Ordering
$cp1Ord :: Eq Quote
Ord, Typeable, Typeable Quote
DataType
Constr
Typeable Quote =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Quote -> c Quote)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Quote)
-> (Quote -> Constr)
-> (Quote -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Quote))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Quote))
-> ((forall b. Data b => b -> b) -> Quote -> Quote)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Quote -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Quote -> r)
-> (forall u. (forall d. Data d => d -> u) -> Quote -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Quote -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Quote -> m Quote)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Quote -> m Quote)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Quote -> m Quote)
-> Data Quote
Quote -> DataType
Quote -> Constr
(forall b. Data b => b -> b) -> Quote -> Quote
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Quote -> c Quote
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Quote
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Quote -> u
forall u. (forall d. Data d => d -> u) -> Quote -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Quote -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Quote -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Quote -> m Quote
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Quote -> m Quote
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Quote
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Quote -> c Quote
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Quote)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Quote)
$cNoQuote :: Constr
$cParsedQuote :: Constr
$cNativeQuote :: Constr
$tQuote :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Quote -> m Quote
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Quote -> m Quote
gmapMp :: (forall d. Data d => d -> m d) -> Quote -> m Quote
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Quote -> m Quote
gmapM :: (forall d. Data d => d -> m d) -> Quote -> m Quote
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Quote -> m Quote
gmapQi :: Int -> (forall d. Data d => d -> u) -> Quote -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Quote -> u
gmapQ :: (forall d. Data d => d -> u) -> Quote -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Quote -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Quote -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Quote -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Quote -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Quote -> r
gmapT :: (forall b. Data b => b -> b) -> Quote -> Quote
$cgmapT :: (forall b. Data b => b -> b) -> Quote -> Quote
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Quote)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Quote)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Quote)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Quote)
dataTypeOf :: Quote -> DataType
$cdataTypeOf :: Quote -> DataType
toConstr :: Quote -> Constr
$ctoConstr :: Quote -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Quote
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Quote
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Quote -> c Quote
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Quote -> c Quote
$cp1Data :: Typeable Quote
Data, (forall x. Quote -> Rep Quote x)
-> (forall x. Rep Quote x -> Quote) -> Generic Quote
forall x. Rep Quote x -> Quote
forall x. Quote -> Rep Quote x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Quote x -> Quote
$cfrom :: forall x. Quote -> Rep Quote x
Generic )
emptyFormatting :: Formatting
emptyFormatting :: Formatting
emptyFormatting
= String
-> String
-> String
-> String
-> String
-> String
-> String
-> String
-> String
-> String
-> Quote
-> Bool
-> Bool
-> Bool
-> String
-> Formatting
Formatting [] [] [] [] [] [] [] [] [] [] Quote
NoQuote Bool
False Bool
False Bool
False []
mergeFM :: Formatting -> Formatting -> Formatting
mergeFM :: Formatting -> Formatting -> Formatting
mergeFM (Formatting aa :: String
aa ab :: String
ab ac :: String
ac ad :: String
ad ae :: String
ae af :: String
af ag :: String
ag ah :: String
ah ai :: String
ai aj :: String
aj ak :: Quote
ak al :: Bool
al am :: Bool
am an :: Bool
an ahl :: String
ahl)
(Formatting ba :: String
ba bb :: String
bb bc :: String
bc bd :: String
bd be :: String
be bf :: String
bf bg :: String
bg bh :: String
bh bi :: String
bi bj :: String
bj bk :: Quote
bk bl :: Bool
bl bm :: Bool
bm bn :: Bool
bn bhl :: String
bhl) =
String
-> String
-> String
-> String
-> String
-> String
-> String
-> String
-> String
-> String
-> Quote
-> Bool
-> Bool
-> Bool
-> String
-> Formatting
Formatting (String
ba String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
aa)
(String
bb String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
ab)
(String
bc String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
ac)
(String
bd String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
ad)
(String
be String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
ae)
(String
bf String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
af)
(String
bg String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
ag)
(String
bh String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
ah)
(String
bi String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
ai)
(String
bj String -> String -> String
forall a. [a] -> [a] -> [a]
`orIfNull` String
aj)
(if Quote
bk Quote -> Quote -> Bool
forall a. Eq a => a -> a -> Bool
== Quote
NoQuote then Quote
ak else Quote
bk)
(Bool
bl Bool -> Bool -> Bool
|| Bool
al)
(Bool
bm Bool -> Bool -> Bool
|| Bool
am)
(Bool
bn Bool -> Bool -> Bool
|| Bool
an)
(String
bhl String -> String -> String
forall (m :: * -> *) a. MonadPlus m => m a -> m a -> m a
`mplus` String
ahl)
data CSInfo
= CSInfo
{ CSInfo -> String
csiTitle :: String
, CSInfo -> CSAuthor
csiAuthor :: CSAuthor
, CSInfo -> [CSCategory]
csiCategories :: [CSCategory]
, CSInfo -> String
csiId :: String
, CSInfo -> String
csiUpdated :: String
} deriving ( Int -> CSInfo -> String -> String
[CSInfo] -> String -> String
CSInfo -> String
(Int -> CSInfo -> String -> String)
-> (CSInfo -> String)
-> ([CSInfo] -> String -> String)
-> Show CSInfo
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [CSInfo] -> String -> String
$cshowList :: [CSInfo] -> String -> String
show :: CSInfo -> String
$cshow :: CSInfo -> String
showsPrec :: Int -> CSInfo -> String -> String
$cshowsPrec :: Int -> CSInfo -> String -> String
Show, ReadPrec [CSInfo]
ReadPrec CSInfo
Int -> ReadS CSInfo
ReadS [CSInfo]
(Int -> ReadS CSInfo)
-> ReadS [CSInfo]
-> ReadPrec CSInfo
-> ReadPrec [CSInfo]
-> Read CSInfo
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CSInfo]
$creadListPrec :: ReadPrec [CSInfo]
readPrec :: ReadPrec CSInfo
$creadPrec :: ReadPrec CSInfo
readList :: ReadS [CSInfo]
$creadList :: ReadS [CSInfo]
readsPrec :: Int -> ReadS CSInfo
$creadsPrec :: Int -> ReadS CSInfo
Read, Typeable, Typeable CSInfo
DataType
Constr
Typeable CSInfo =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSInfo -> c CSInfo)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSInfo)
-> (CSInfo -> Constr)
-> (CSInfo -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CSInfo))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSInfo))
-> ((forall b. Data b => b -> b) -> CSInfo -> CSInfo)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CSInfo -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CSInfo -> r)
-> (forall u. (forall d. Data d => d -> u) -> CSInfo -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> CSInfo -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CSInfo -> m CSInfo)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSInfo -> m CSInfo)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSInfo -> m CSInfo)
-> Data CSInfo
CSInfo -> DataType
CSInfo -> Constr
(forall b. Data b => b -> b) -> CSInfo -> CSInfo
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSInfo -> c CSInfo
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSInfo
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> CSInfo -> u
forall u. (forall d. Data d => d -> u) -> CSInfo -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CSInfo -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CSInfo -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CSInfo -> m CSInfo
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSInfo -> m CSInfo
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSInfo
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSInfo -> c CSInfo
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CSInfo)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSInfo)
$cCSInfo :: Constr
$tCSInfo :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> CSInfo -> m CSInfo
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSInfo -> m CSInfo
gmapMp :: (forall d. Data d => d -> m d) -> CSInfo -> m CSInfo
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSInfo -> m CSInfo
gmapM :: (forall d. Data d => d -> m d) -> CSInfo -> m CSInfo
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CSInfo -> m CSInfo
gmapQi :: Int -> (forall d. Data d => d -> u) -> CSInfo -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> CSInfo -> u
gmapQ :: (forall d. Data d => d -> u) -> CSInfo -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> CSInfo -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CSInfo -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CSInfo -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CSInfo -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CSInfo -> r
gmapT :: (forall b. Data b => b -> b) -> CSInfo -> CSInfo
$cgmapT :: (forall b. Data b => b -> b) -> CSInfo -> CSInfo
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSInfo)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSInfo)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c CSInfo)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CSInfo)
dataTypeOf :: CSInfo -> DataType
$cdataTypeOf :: CSInfo -> DataType
toConstr :: CSInfo -> Constr
$ctoConstr :: CSInfo -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSInfo
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSInfo
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSInfo -> c CSInfo
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSInfo -> c CSInfo
$cp1Data :: Typeable CSInfo
Data, (forall x. CSInfo -> Rep CSInfo x)
-> (forall x. Rep CSInfo x -> CSInfo) -> Generic CSInfo
forall x. Rep CSInfo x -> CSInfo
forall x. CSInfo -> Rep CSInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CSInfo x -> CSInfo
$cfrom :: forall x. CSInfo -> Rep CSInfo x
Generic )
data CSAuthor = CSAuthor String String String
deriving ( Int -> CSAuthor -> String -> String
[CSAuthor] -> String -> String
CSAuthor -> String
(Int -> CSAuthor -> String -> String)
-> (CSAuthor -> String)
-> ([CSAuthor] -> String -> String)
-> Show CSAuthor
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [CSAuthor] -> String -> String
$cshowList :: [CSAuthor] -> String -> String
show :: CSAuthor -> String
$cshow :: CSAuthor -> String
showsPrec :: Int -> CSAuthor -> String -> String
$cshowsPrec :: Int -> CSAuthor -> String -> String
Show, ReadPrec [CSAuthor]
ReadPrec CSAuthor
Int -> ReadS CSAuthor
ReadS [CSAuthor]
(Int -> ReadS CSAuthor)
-> ReadS [CSAuthor]
-> ReadPrec CSAuthor
-> ReadPrec [CSAuthor]
-> Read CSAuthor
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CSAuthor]
$creadListPrec :: ReadPrec [CSAuthor]
readPrec :: ReadPrec CSAuthor
$creadPrec :: ReadPrec CSAuthor
readList :: ReadS [CSAuthor]
$creadList :: ReadS [CSAuthor]
readsPrec :: Int -> ReadS CSAuthor
$creadsPrec :: Int -> ReadS CSAuthor
Read, CSAuthor -> CSAuthor -> Bool
(CSAuthor -> CSAuthor -> Bool)
-> (CSAuthor -> CSAuthor -> Bool) -> Eq CSAuthor
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CSAuthor -> CSAuthor -> Bool
$c/= :: CSAuthor -> CSAuthor -> Bool
== :: CSAuthor -> CSAuthor -> Bool
$c== :: CSAuthor -> CSAuthor -> Bool
Eq, Typeable, Typeable CSAuthor
DataType
Constr
Typeable CSAuthor =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSAuthor -> c CSAuthor)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSAuthor)
-> (CSAuthor -> Constr)
-> (CSAuthor -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CSAuthor))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSAuthor))
-> ((forall b. Data b => b -> b) -> CSAuthor -> CSAuthor)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CSAuthor -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CSAuthor -> r)
-> (forall u. (forall d. Data d => d -> u) -> CSAuthor -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> CSAuthor -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor)
-> Data CSAuthor
CSAuthor -> DataType
CSAuthor -> Constr
(forall b. Data b => b -> b) -> CSAuthor -> CSAuthor
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSAuthor -> c CSAuthor
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSAuthor
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> CSAuthor -> u
forall u. (forall d. Data d => d -> u) -> CSAuthor -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CSAuthor -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CSAuthor -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSAuthor
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSAuthor -> c CSAuthor
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CSAuthor)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSAuthor)
$cCSAuthor :: Constr
$tCSAuthor :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor
gmapMp :: (forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor
gmapM :: (forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CSAuthor -> m CSAuthor
gmapQi :: Int -> (forall d. Data d => d -> u) -> CSAuthor -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> CSAuthor -> u
gmapQ :: (forall d. Data d => d -> u) -> CSAuthor -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> CSAuthor -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CSAuthor -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CSAuthor -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CSAuthor -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CSAuthor -> r
gmapT :: (forall b. Data b => b -> b) -> CSAuthor -> CSAuthor
$cgmapT :: (forall b. Data b => b -> b) -> CSAuthor -> CSAuthor
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSAuthor)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSAuthor)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c CSAuthor)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CSAuthor)
dataTypeOf :: CSAuthor -> DataType
$cdataTypeOf :: CSAuthor -> DataType
toConstr :: CSAuthor -> Constr
$ctoConstr :: CSAuthor -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSAuthor
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSAuthor
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSAuthor -> c CSAuthor
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSAuthor -> c CSAuthor
$cp1Data :: Typeable CSAuthor
Data, (forall x. CSAuthor -> Rep CSAuthor x)
-> (forall x. Rep CSAuthor x -> CSAuthor) -> Generic CSAuthor
forall x. Rep CSAuthor x -> CSAuthor
forall x. CSAuthor -> Rep CSAuthor x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CSAuthor x -> CSAuthor
$cfrom :: forall x. CSAuthor -> Rep CSAuthor x
Generic )
data CSCategory = CSCategory String String String
deriving ( Int -> CSCategory -> String -> String
[CSCategory] -> String -> String
CSCategory -> String
(Int -> CSCategory -> String -> String)
-> (CSCategory -> String)
-> ([CSCategory] -> String -> String)
-> Show CSCategory
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [CSCategory] -> String -> String
$cshowList :: [CSCategory] -> String -> String
show :: CSCategory -> String
$cshow :: CSCategory -> String
showsPrec :: Int -> CSCategory -> String -> String
$cshowsPrec :: Int -> CSCategory -> String -> String
Show, ReadPrec [CSCategory]
ReadPrec CSCategory
Int -> ReadS CSCategory
ReadS [CSCategory]
(Int -> ReadS CSCategory)
-> ReadS [CSCategory]
-> ReadPrec CSCategory
-> ReadPrec [CSCategory]
-> Read CSCategory
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CSCategory]
$creadListPrec :: ReadPrec [CSCategory]
readPrec :: ReadPrec CSCategory
$creadPrec :: ReadPrec CSCategory
readList :: ReadS [CSCategory]
$creadList :: ReadS [CSCategory]
readsPrec :: Int -> ReadS CSCategory
$creadsPrec :: Int -> ReadS CSCategory
Read, CSCategory -> CSCategory -> Bool
(CSCategory -> CSCategory -> Bool)
-> (CSCategory -> CSCategory -> Bool) -> Eq CSCategory
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CSCategory -> CSCategory -> Bool
$c/= :: CSCategory -> CSCategory -> Bool
== :: CSCategory -> CSCategory -> Bool
$c== :: CSCategory -> CSCategory -> Bool
Eq, Typeable, Typeable CSCategory
DataType
Constr
Typeable CSCategory =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSCategory -> c CSCategory)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSCategory)
-> (CSCategory -> Constr)
-> (CSCategory -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CSCategory))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c CSCategory))
-> ((forall b. Data b => b -> b) -> CSCategory -> CSCategory)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CSCategory -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CSCategory -> r)
-> (forall u. (forall d. Data d => d -> u) -> CSCategory -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> CSCategory -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CSCategory -> m CSCategory)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSCategory -> m CSCategory)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSCategory -> m CSCategory)
-> Data CSCategory
CSCategory -> DataType
CSCategory -> Constr
(forall b. Data b => b -> b) -> CSCategory -> CSCategory
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSCategory -> c CSCategory
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSCategory
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> CSCategory -> u
forall u. (forall d. Data d => d -> u) -> CSCategory -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CSCategory -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CSCategory -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CSCategory -> m CSCategory
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSCategory -> m CSCategory
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSCategory
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSCategory -> c CSCategory
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CSCategory)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSCategory)
$cCSCategory :: Constr
$tCSCategory :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> CSCategory -> m CSCategory
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSCategory -> m CSCategory
gmapMp :: (forall d. Data d => d -> m d) -> CSCategory -> m CSCategory
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CSCategory -> m CSCategory
gmapM :: (forall d. Data d => d -> m d) -> CSCategory -> m CSCategory
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CSCategory -> m CSCategory
gmapQi :: Int -> (forall d. Data d => d -> u) -> CSCategory -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> CSCategory -> u
gmapQ :: (forall d. Data d => d -> u) -> CSCategory -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> CSCategory -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CSCategory -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CSCategory -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CSCategory -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CSCategory -> r
gmapT :: (forall b. Data b => b -> b) -> CSCategory -> CSCategory
$cgmapT :: (forall b. Data b => b -> b) -> CSCategory -> CSCategory
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSCategory)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CSCategory)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c CSCategory)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CSCategory)
dataTypeOf :: CSCategory -> DataType
$cdataTypeOf :: CSCategory -> DataType
toConstr :: CSCategory -> Constr
$ctoConstr :: CSCategory -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSCategory
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CSCategory
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSCategory -> c CSCategory
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CSCategory -> c CSCategory
$cp1Data :: Typeable CSCategory
Data, (forall x. CSCategory -> Rep CSCategory x)
-> (forall x. Rep CSCategory x -> CSCategory) -> Generic CSCategory
forall x. Rep CSCategory x -> CSCategory
forall x. CSCategory -> Rep CSCategory x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CSCategory x -> CSCategory
$cfrom :: forall x. CSCategory -> Rep CSCategory x
Generic )
data CiteprocError
= NoOutput
| ReferenceNotFound String
deriving ( CiteprocError -> CiteprocError -> Bool
(CiteprocError -> CiteprocError -> Bool)
-> (CiteprocError -> CiteprocError -> Bool) -> Eq CiteprocError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CiteprocError -> CiteprocError -> Bool
$c/= :: CiteprocError -> CiteprocError -> Bool
== :: CiteprocError -> CiteprocError -> Bool
$c== :: CiteprocError -> CiteprocError -> Bool
Eq, Eq CiteprocError
Eq CiteprocError =>
(CiteprocError -> CiteprocError -> Ordering)
-> (CiteprocError -> CiteprocError -> Bool)
-> (CiteprocError -> CiteprocError -> Bool)
-> (CiteprocError -> CiteprocError -> Bool)
-> (CiteprocError -> CiteprocError -> Bool)
-> (CiteprocError -> CiteprocError -> CiteprocError)
-> (CiteprocError -> CiteprocError -> CiteprocError)
-> Ord CiteprocError
CiteprocError -> CiteprocError -> Bool
CiteprocError -> CiteprocError -> Ordering
CiteprocError -> CiteprocError -> CiteprocError
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: CiteprocError -> CiteprocError -> CiteprocError
$cmin :: CiteprocError -> CiteprocError -> CiteprocError
max :: CiteprocError -> CiteprocError -> CiteprocError
$cmax :: CiteprocError -> CiteprocError -> CiteprocError
>= :: CiteprocError -> CiteprocError -> Bool
$c>= :: CiteprocError -> CiteprocError -> Bool
> :: CiteprocError -> CiteprocError -> Bool
$c> :: CiteprocError -> CiteprocError -> Bool
<= :: CiteprocError -> CiteprocError -> Bool
$c<= :: CiteprocError -> CiteprocError -> Bool
< :: CiteprocError -> CiteprocError -> Bool
$c< :: CiteprocError -> CiteprocError -> Bool
compare :: CiteprocError -> CiteprocError -> Ordering
$ccompare :: CiteprocError -> CiteprocError -> Ordering
$cp1Ord :: Eq CiteprocError
Ord, Int -> CiteprocError -> String -> String
[CiteprocError] -> String -> String
CiteprocError -> String
(Int -> CiteprocError -> String -> String)
-> (CiteprocError -> String)
-> ([CiteprocError] -> String -> String)
-> Show CiteprocError
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [CiteprocError] -> String -> String
$cshowList :: [CiteprocError] -> String -> String
show :: CiteprocError -> String
$cshow :: CiteprocError -> String
showsPrec :: Int -> CiteprocError -> String -> String
$cshowsPrec :: Int -> CiteprocError -> String -> String
Show, Typeable, Typeable CiteprocError
DataType
Constr
Typeable CiteprocError =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteprocError -> c CiteprocError)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteprocError)
-> (CiteprocError -> Constr)
-> (CiteprocError -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CiteprocError))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c CiteprocError))
-> ((forall b. Data b => b -> b) -> CiteprocError -> CiteprocError)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CiteprocError -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CiteprocError -> r)
-> (forall u. (forall d. Data d => d -> u) -> CiteprocError -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> CiteprocError -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError)
-> Data CiteprocError
CiteprocError -> DataType
CiteprocError -> Constr
(forall b. Data b => b -> b) -> CiteprocError -> CiteprocError
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteprocError -> c CiteprocError
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteprocError
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> CiteprocError -> u
forall u. (forall d. Data d => d -> u) -> CiteprocError -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CiteprocError -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CiteprocError -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteprocError
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteprocError -> c CiteprocError
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CiteprocError)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c CiteprocError)
$cReferenceNotFound :: Constr
$cNoOutput :: Constr
$tCiteprocError :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError
gmapMp :: (forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError
gmapM :: (forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CiteprocError -> m CiteprocError
gmapQi :: Int -> (forall d. Data d => d -> u) -> CiteprocError -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> CiteprocError -> u
gmapQ :: (forall d. Data d => d -> u) -> CiteprocError -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> CiteprocError -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CiteprocError -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CiteprocError -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CiteprocError -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CiteprocError -> r
gmapT :: (forall b. Data b => b -> b) -> CiteprocError -> CiteprocError
$cgmapT :: (forall b. Data b => b -> b) -> CiteprocError -> CiteprocError
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c CiteprocError)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c CiteprocError)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c CiteprocError)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CiteprocError)
dataTypeOf :: CiteprocError -> DataType
$cdataTypeOf :: CiteprocError -> DataType
toConstr :: CiteprocError -> Constr
$ctoConstr :: CiteprocError -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteprocError
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteprocError
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteprocError -> c CiteprocError
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteprocError -> c CiteprocError
$cp1Data :: Typeable CiteprocError
Data, (forall x. CiteprocError -> Rep CiteprocError x)
-> (forall x. Rep CiteprocError x -> CiteprocError)
-> Generic CiteprocError
forall x. Rep CiteprocError x -> CiteprocError
forall x. CiteprocError -> Rep CiteprocError x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CiteprocError x -> CiteprocError
$cfrom :: forall x. CiteprocError -> Rep CiteprocError x
Generic )
data Output
= ONull
| OSpace
| OPan [Inline]
| OStatus [Inline]
| ODel String
| OStr String Formatting
| OErr CiteprocError
| OLabel String Formatting
| ONum Int Formatting
| OCitNum Int Formatting
| OCitLabel String Formatting
| ODate [Output]
| OYear String String Formatting
| OYearSuf String String [Output] Formatting
| OName Agent [Output] [[Output]] Formatting
| OContrib String String [Output] [Output] [[Output]]
| OLoc [Output] Formatting
| Output [Output] Formatting
deriving ( Output -> Output -> Bool
(Output -> Output -> Bool)
-> (Output -> Output -> Bool) -> Eq Output
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Output -> Output -> Bool
$c/= :: Output -> Output -> Bool
== :: Output -> Output -> Bool
$c== :: Output -> Output -> Bool
Eq, Eq Output
Eq Output =>
(Output -> Output -> Ordering)
-> (Output -> Output -> Bool)
-> (Output -> Output -> Bool)
-> (Output -> Output -> Bool)
-> (Output -> Output -> Bool)
-> (Output -> Output -> Output)
-> (Output -> Output -> Output)
-> Ord Output
Output -> Output -> Bool
Output -> Output -> Ordering
Output -> Output -> Output
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Output -> Output -> Output
$cmin :: Output -> Output -> Output
max :: Output -> Output -> Output
$cmax :: Output -> Output -> Output
>= :: Output -> Output -> Bool
$c>= :: Output -> Output -> Bool
> :: Output -> Output -> Bool
$c> :: Output -> Output -> Bool
<= :: Output -> Output -> Bool
$c<= :: Output -> Output -> Bool
< :: Output -> Output -> Bool
$c< :: Output -> Output -> Bool
compare :: Output -> Output -> Ordering
$ccompare :: Output -> Output -> Ordering
$cp1Ord :: Eq Output
Ord, Int -> Output -> String -> String
[Output] -> String -> String
Output -> String
(Int -> Output -> String -> String)
-> (Output -> String)
-> ([Output] -> String -> String)
-> Show Output
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Output] -> String -> String
$cshowList :: [Output] -> String -> String
show :: Output -> String
$cshow :: Output -> String
showsPrec :: Int -> Output -> String -> String
$cshowsPrec :: Int -> Output -> String -> String
Show, Typeable, Typeable Output
DataType
Constr
Typeable Output =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Output -> c Output)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Output)
-> (Output -> Constr)
-> (Output -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Output))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Output))
-> ((forall b. Data b => b -> b) -> Output -> Output)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Output -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Output -> r)
-> (forall u. (forall d. Data d => d -> u) -> Output -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Output -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Output -> m Output)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Output -> m Output)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Output -> m Output)
-> Data Output
Output -> DataType
Output -> Constr
(forall b. Data b => b -> b) -> Output -> Output
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Output -> c Output
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Output
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Output -> u
forall u. (forall d. Data d => d -> u) -> Output -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Output -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Output -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Output -> m Output
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Output -> m Output
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Output
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Output -> c Output
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Output)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Output)
$cOutput :: Constr
$cOLoc :: Constr
$cOContrib :: Constr
$cOName :: Constr
$cOYearSuf :: Constr
$cOYear :: Constr
$cODate :: Constr
$cOCitLabel :: Constr
$cOCitNum :: Constr
$cONum :: Constr
$cOLabel :: Constr
$cOErr :: Constr
$cOStr :: Constr
$cODel :: Constr
$cOStatus :: Constr
$cOPan :: Constr
$cOSpace :: Constr
$cONull :: Constr
$tOutput :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Output -> m Output
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Output -> m Output
gmapMp :: (forall d. Data d => d -> m d) -> Output -> m Output
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Output -> m Output
gmapM :: (forall d. Data d => d -> m d) -> Output -> m Output
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Output -> m Output
gmapQi :: Int -> (forall d. Data d => d -> u) -> Output -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Output -> u
gmapQ :: (forall d. Data d => d -> u) -> Output -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Output -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Output -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Output -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Output -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Output -> r
gmapT :: (forall b. Data b => b -> b) -> Output -> Output
$cgmapT :: (forall b. Data b => b -> b) -> Output -> Output
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Output)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Output)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Output)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Output)
dataTypeOf :: Output -> DataType
$cdataTypeOf :: Output -> DataType
toConstr :: Output -> Constr
$ctoConstr :: Output -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Output
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Output
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Output -> c Output
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Output -> c Output
$cp1Data :: Typeable Output
Data, (forall x. Output -> Rep Output x)
-> (forall x. Rep Output x -> Output) -> Generic Output
forall x. Rep Output x -> Output
forall x. Output -> Rep Output x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Output x -> Output
$cfrom :: forall x. Output -> Rep Output x
Generic )
type Citations = [[Cite]]
data Cite
= Cite
{ Cite -> String
citeId :: String
, Cite -> Formatted
citePrefix :: Formatted
, Cite -> Formatted
citeSuffix :: Formatted
, Cite -> String
citeLabel :: String
, Cite -> String
citeLocator :: String
, Cite -> String
citeNoteNumber :: String
, Cite -> String
citePosition :: String
, Cite -> Bool
nearNote :: Bool
, Cite -> Bool
authorInText :: Bool
, Cite -> Bool
suppressAuthor :: Bool
, Cite -> Int
citeHash :: Int
} deriving ( Int -> Cite -> String -> String
[Cite] -> String -> String
Cite -> String
(Int -> Cite -> String -> String)
-> (Cite -> String) -> ([Cite] -> String -> String) -> Show Cite
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Cite] -> String -> String
$cshowList :: [Cite] -> String -> String
show :: Cite -> String
$cshow :: Cite -> String
showsPrec :: Int -> Cite -> String -> String
$cshowsPrec :: Int -> Cite -> String -> String
Show, Cite -> Cite -> Bool
(Cite -> Cite -> Bool) -> (Cite -> Cite -> Bool) -> Eq Cite
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Cite -> Cite -> Bool
$c/= :: Cite -> Cite -> Bool
== :: Cite -> Cite -> Bool
$c== :: Cite -> Cite -> Bool
Eq, Typeable, Typeable Cite
DataType
Constr
Typeable Cite =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Cite -> c Cite)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Cite)
-> (Cite -> Constr)
-> (Cite -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Cite))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Cite))
-> ((forall b. Data b => b -> b) -> Cite -> Cite)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Cite -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Cite -> r)
-> (forall u. (forall d. Data d => d -> u) -> Cite -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Cite -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Cite -> m Cite)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Cite -> m Cite)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Cite -> m Cite)
-> Data Cite
Cite -> DataType
Cite -> Constr
(forall b. Data b => b -> b) -> Cite -> Cite
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Cite -> c Cite
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Cite
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Cite -> u
forall u. (forall d. Data d => d -> u) -> Cite -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Cite -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Cite -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Cite -> m Cite
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Cite -> m Cite
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Cite
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Cite -> c Cite
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Cite)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Cite)
$cCite :: Constr
$tCite :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Cite -> m Cite
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Cite -> m Cite
gmapMp :: (forall d. Data d => d -> m d) -> Cite -> m Cite
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Cite -> m Cite
gmapM :: (forall d. Data d => d -> m d) -> Cite -> m Cite
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Cite -> m Cite
gmapQi :: Int -> (forall d. Data d => d -> u) -> Cite -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Cite -> u
gmapQ :: (forall d. Data d => d -> u) -> Cite -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Cite -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Cite -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Cite -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Cite -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Cite -> r
gmapT :: (forall b. Data b => b -> b) -> Cite -> Cite
$cgmapT :: (forall b. Data b => b -> b) -> Cite -> Cite
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Cite)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Cite)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Cite)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Cite)
dataTypeOf :: Cite -> DataType
$cdataTypeOf :: Cite -> DataType
toConstr :: Cite -> Constr
$ctoConstr :: Cite -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Cite
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Cite
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Cite -> c Cite
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Cite -> c Cite
$cp1Data :: Typeable Cite
Data, (forall x. Cite -> Rep Cite x)
-> (forall x. Rep Cite x -> Cite) -> Generic Cite
forall x. Rep Cite x -> Cite
forall x. Cite -> Rep Cite x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Cite x -> Cite
$cfrom :: forall x. Cite -> Rep Cite x
Generic )
instance FromJSON Cite where
parseJSON :: Value -> Parser Cite
parseJSON (Object v :: Object
v) = String
-> Formatted
-> Formatted
-> String
-> String
-> String
-> String
-> Bool
-> Bool
-> Bool
-> Int
-> Cite
Cite (String
-> Formatted
-> Formatted
-> String
-> String
-> String
-> String
-> Bool
-> Bool
-> Bool
-> Int
-> Cite)
-> Parser String
-> Parser
(Formatted
-> Formatted
-> String
-> String
-> String
-> String
-> Bool
-> Bool
-> Bool
-> Int
-> Cite)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
Object
v Object -> Text -> Parser String
.#: "id" Parser
(Formatted
-> Formatted
-> String
-> String
-> String
-> String
-> Bool
-> Bool
-> Bool
-> Int
-> Cite)
-> Parser Formatted
-> Parser
(Formatted
-> String
-> String
-> String
-> String
-> Bool
-> Bool
-> Bool
-> Int
-> Cite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe Formatted)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "prefix" Parser (Maybe Formatted) -> Formatted -> Parser Formatted
forall a. Parser (Maybe a) -> a -> Parser a
.!= Formatted
forall a. Monoid a => a
mempty Parser
(Formatted
-> String
-> String
-> String
-> String
-> Bool
-> Bool
-> Bool
-> Int
-> Cite)
-> Parser Formatted
-> Parser
(String
-> String
-> String
-> String
-> Bool
-> Bool
-> Bool
-> Int
-> Cite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe Formatted)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "suffix" Parser (Maybe Formatted) -> Formatted -> Parser Formatted
forall a. Parser (Maybe a) -> a -> Parser a
.!= Formatted
forall a. Monoid a => a
mempty Parser
(String
-> String
-> String
-> String
-> Bool
-> Bool
-> Bool
-> Int
-> Cite)
-> Parser String
-> Parser
(String -> String -> String -> Bool -> Bool -> Bool -> Int -> Cite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe String)
.#? "label" Parser (Maybe String) -> String -> Parser String
forall a. Parser (Maybe a) -> a -> Parser a
.!= "page" Parser
(String -> String -> String -> Bool -> Bool -> Bool -> Int -> Cite)
-> Parser String
-> Parser (String -> String -> Bool -> Bool -> Bool -> Int -> Cite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe String)
.#? "locator" Parser (Maybe String) -> String -> Parser String
forall a. Parser (Maybe a) -> a -> Parser a
.!= "" Parser (String -> String -> Bool -> Bool -> Bool -> Int -> Cite)
-> Parser String
-> Parser (String -> Bool -> Bool -> Bool -> Int -> Cite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe String)
.#? "note-number" Parser (Maybe String) -> String -> Parser String
forall a. Parser (Maybe a) -> a -> Parser a
.!= "" Parser (String -> Bool -> Bool -> Bool -> Int -> Cite)
-> Parser String -> Parser (Bool -> Bool -> Bool -> Int -> Cite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe String)
.#? "position" Parser (Maybe String) -> String -> Parser String
forall a. Parser (Maybe a) -> a -> Parser a
.!= "" Parser (Bool -> Bool -> Bool -> Int -> Cite)
-> Parser Bool -> Parser (Bool -> Bool -> Int -> Cite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v Object -> Text -> Parser (Maybe Value)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "near-note" Parser (Maybe Value)
-> (Maybe Value -> Parser (Maybe Bool)) -> Parser (Maybe Bool)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (Value -> Parser Bool) -> Maybe Value -> Parser (Maybe Bool)
forall (m :: * -> *) b a.
Monad m =>
(b -> m a) -> Maybe b -> m (Maybe a)
mb Value -> Parser Bool
parseBool) Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False Parser (Bool -> Bool -> Int -> Cite)
-> Parser Bool -> Parser (Bool -> Int -> Cite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v Object -> Text -> Parser (Maybe Value)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "author-in-text" Parser (Maybe Value)
-> (Maybe Value -> Parser (Maybe Bool)) -> Parser (Maybe Bool)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (Value -> Parser Bool) -> Maybe Value -> Parser (Maybe Bool)
forall (m :: * -> *) b a.
Monad m =>
(b -> m a) -> Maybe b -> m (Maybe a)
mb Value -> Parser Bool
parseBool) Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False Parser (Bool -> Int -> Cite) -> Parser Bool -> Parser (Int -> Cite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v Object -> Text -> Parser (Maybe Value)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "suppress-author" Parser (Maybe Value)
-> (Maybe Value -> Parser (Maybe Bool)) -> Parser (Maybe Bool)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (Value -> Parser Bool) -> Maybe Value -> Parser (Maybe Bool)
forall (m :: * -> *) b a.
Monad m =>
(b -> m a) -> Maybe b -> m (Maybe a)
mb Value -> Parser Bool
parseBool) Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False Parser (Int -> Cite) -> Parser Int -> Parser Cite
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "cite-hash" Parser (Maybe Int) -> Int -> Parser Int
forall a. Parser (Maybe a) -> a -> Parser a
.!= 0
parseJSON _ = String -> Parser Cite
forall (m :: * -> *) a. MonadFail m => String -> m a
fail "Could not parse Cite"
instance OVERLAPS
FromJSON [[Cite]] where
parseJSON :: Value -> Parser [[Cite]]
parseJSON (Array v :: Array
v) = (Value -> Parser [Cite]) -> [Value] -> Parser [[Cite]]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM Value -> Parser [Cite]
forall a. FromJSON a => Value -> Parser a
parseJSON ([Value] -> Parser [[Cite]]) -> [Value] -> Parser [[Cite]]
forall a b. (a -> b) -> a -> b
$ Array -> [Value]
forall a. Vector a -> [a]
V.toList Array
v
parseJSON _ = [[Cite]] -> Parser [[Cite]]
forall (m :: * -> *) a. Monad m => a -> m a
return []
emptyCite :: Cite
emptyCite :: Cite
emptyCite = String
-> Formatted
-> Formatted
-> String
-> String
-> String
-> String
-> Bool
-> Bool
-> Bool
-> Int
-> Cite
Cite [] Formatted
forall a. Monoid a => a
mempty Formatted
forall a. Monoid a => a
mempty [] [] [] [] Bool
False Bool
False Bool
False 0
data CitationGroup = CG [(Cite, Output)] Formatting Delimiter [(Cite, Output)] deriving ( Int -> CitationGroup -> String -> String
[CitationGroup] -> String -> String
CitationGroup -> String
(Int -> CitationGroup -> String -> String)
-> (CitationGroup -> String)
-> ([CitationGroup] -> String -> String)
-> Show CitationGroup
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [CitationGroup] -> String -> String
$cshowList :: [CitationGroup] -> String -> String
show :: CitationGroup -> String
$cshow :: CitationGroup -> String
showsPrec :: Int -> CitationGroup -> String -> String
$cshowsPrec :: Int -> CitationGroup -> String -> String
Show, CitationGroup -> CitationGroup -> Bool
(CitationGroup -> CitationGroup -> Bool)
-> (CitationGroup -> CitationGroup -> Bool) -> Eq CitationGroup
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CitationGroup -> CitationGroup -> Bool
$c/= :: CitationGroup -> CitationGroup -> Bool
== :: CitationGroup -> CitationGroup -> Bool
$c== :: CitationGroup -> CitationGroup -> Bool
Eq, Typeable, Typeable CitationGroup
DataType
Constr
Typeable CitationGroup =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CitationGroup -> c CitationGroup)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CitationGroup)
-> (CitationGroup -> Constr)
-> (CitationGroup -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CitationGroup))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c CitationGroup))
-> ((forall b. Data b => b -> b) -> CitationGroup -> CitationGroup)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CitationGroup -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CitationGroup -> r)
-> (forall u. (forall d. Data d => d -> u) -> CitationGroup -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> CitationGroup -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup)
-> Data CitationGroup
CitationGroup -> DataType
CitationGroup -> Constr
(forall b. Data b => b -> b) -> CitationGroup -> CitationGroup
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CitationGroup -> c CitationGroup
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CitationGroup
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> CitationGroup -> u
forall u. (forall d. Data d => d -> u) -> CitationGroup -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CitationGroup -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CitationGroup -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CitationGroup
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CitationGroup -> c CitationGroup
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CitationGroup)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c CitationGroup)
$cCG :: Constr
$tCitationGroup :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup
gmapMp :: (forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup
gmapM :: (forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CitationGroup -> m CitationGroup
gmapQi :: Int -> (forall d. Data d => d -> u) -> CitationGroup -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> CitationGroup -> u
gmapQ :: (forall d. Data d => d -> u) -> CitationGroup -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> CitationGroup -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CitationGroup -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CitationGroup -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CitationGroup -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CitationGroup -> r
gmapT :: (forall b. Data b => b -> b) -> CitationGroup -> CitationGroup
$cgmapT :: (forall b. Data b => b -> b) -> CitationGroup -> CitationGroup
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c CitationGroup)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c CitationGroup)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c CitationGroup)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CitationGroup)
dataTypeOf :: CitationGroup -> DataType
$cdataTypeOf :: CitationGroup -> DataType
toConstr :: CitationGroup -> Constr
$ctoConstr :: CitationGroup -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CitationGroup
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CitationGroup
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CitationGroup -> c CitationGroup
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CitationGroup -> c CitationGroup
$cp1Data :: Typeable CitationGroup
Data, (forall x. CitationGroup -> Rep CitationGroup x)
-> (forall x. Rep CitationGroup x -> CitationGroup)
-> Generic CitationGroup
forall x. Rep CitationGroup x -> CitationGroup
forall x. CitationGroup -> Rep CitationGroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CitationGroup x -> CitationGroup
$cfrom :: forall x. CitationGroup -> Rep CitationGroup x
Generic )
data BiblioData
= BD
{ BiblioData -> [Formatted]
citations :: [Formatted]
, BiblioData -> [Formatted]
bibliography :: [Formatted]
, BiblioData -> [String]
citationIds :: [String]
} deriving ( Int -> BiblioData -> String -> String
[BiblioData] -> String -> String
BiblioData -> String
(Int -> BiblioData -> String -> String)
-> (BiblioData -> String)
-> ([BiblioData] -> String -> String)
-> Show BiblioData
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [BiblioData] -> String -> String
$cshowList :: [BiblioData] -> String -> String
show :: BiblioData -> String
$cshow :: BiblioData -> String
showsPrec :: Int -> BiblioData -> String -> String
$cshowsPrec :: Int -> BiblioData -> String -> String
Show, Typeable, Typeable BiblioData
DataType
Constr
Typeable BiblioData =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> BiblioData -> c BiblioData)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c BiblioData)
-> (BiblioData -> Constr)
-> (BiblioData -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c BiblioData))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c BiblioData))
-> ((forall b. Data b => b -> b) -> BiblioData -> BiblioData)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> BiblioData -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> BiblioData -> r)
-> (forall u. (forall d. Data d => d -> u) -> BiblioData -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> BiblioData -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> BiblioData -> m BiblioData)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BiblioData -> m BiblioData)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BiblioData -> m BiblioData)
-> Data BiblioData
BiblioData -> DataType
BiblioData -> Constr
(forall b. Data b => b -> b) -> BiblioData -> BiblioData
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> BiblioData -> c BiblioData
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c BiblioData
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> BiblioData -> u
forall u. (forall d. Data d => d -> u) -> BiblioData -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> BiblioData -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> BiblioData -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> BiblioData -> m BiblioData
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BiblioData -> m BiblioData
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c BiblioData
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> BiblioData -> c BiblioData
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c BiblioData)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BiblioData)
$cBD :: Constr
$tBiblioData :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> BiblioData -> m BiblioData
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BiblioData -> m BiblioData
gmapMp :: (forall d. Data d => d -> m d) -> BiblioData -> m BiblioData
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BiblioData -> m BiblioData
gmapM :: (forall d. Data d => d -> m d) -> BiblioData -> m BiblioData
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> BiblioData -> m BiblioData
gmapQi :: Int -> (forall d. Data d => d -> u) -> BiblioData -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> BiblioData -> u
gmapQ :: (forall d. Data d => d -> u) -> BiblioData -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> BiblioData -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> BiblioData -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> BiblioData -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> BiblioData -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> BiblioData -> r
gmapT :: (forall b. Data b => b -> b) -> BiblioData -> BiblioData
$cgmapT :: (forall b. Data b => b -> b) -> BiblioData -> BiblioData
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BiblioData)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BiblioData)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c BiblioData)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c BiblioData)
dataTypeOf :: BiblioData -> DataType
$cdataTypeOf :: BiblioData -> DataType
toConstr :: BiblioData -> Constr
$ctoConstr :: BiblioData -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c BiblioData
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c BiblioData
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> BiblioData -> c BiblioData
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> BiblioData -> c BiblioData
$cp1Data :: Typeable BiblioData
Data, (forall x. BiblioData -> Rep BiblioData x)
-> (forall x. Rep BiblioData x -> BiblioData) -> Generic BiblioData
forall x. Rep BiblioData x -> BiblioData
forall x. BiblioData -> Rep BiblioData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep BiblioData x -> BiblioData
$cfrom :: forall x. BiblioData -> Rep BiblioData x
Generic )
data CiteData
= CD
{ CiteData -> String
key :: String
, CiteData -> [Output]
collision :: [Output]
, CiteData -> [Output]
disambYS :: [Output]
, CiteData -> [[Output]]
disambData :: [[Output]]
, CiteData -> [Output]
disambed :: [Output]
, CiteData -> [String]
sameAs :: [String]
, CiteData -> String
citYear :: String
} deriving ( Int -> CiteData -> String -> String
[CiteData] -> String -> String
CiteData -> String
(Int -> CiteData -> String -> String)
-> (CiteData -> String)
-> ([CiteData] -> String -> String)
-> Show CiteData
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [CiteData] -> String -> String
$cshowList :: [CiteData] -> String -> String
show :: CiteData -> String
$cshow :: CiteData -> String
showsPrec :: Int -> CiteData -> String -> String
$cshowsPrec :: Int -> CiteData -> String -> String
Show, Typeable, Typeable CiteData
DataType
Constr
Typeable CiteData =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteData -> c CiteData)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteData)
-> (CiteData -> Constr)
-> (CiteData -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CiteData))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CiteData))
-> ((forall b. Data b => b -> b) -> CiteData -> CiteData)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CiteData -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CiteData -> r)
-> (forall u. (forall d. Data d => d -> u) -> CiteData -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> CiteData -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CiteData -> m CiteData)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteData -> m CiteData)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteData -> m CiteData)
-> Data CiteData
CiteData -> DataType
CiteData -> Constr
(forall b. Data b => b -> b) -> CiteData -> CiteData
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteData -> c CiteData
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteData
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> CiteData -> u
forall u. (forall d. Data d => d -> u) -> CiteData -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CiteData -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CiteData -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CiteData -> m CiteData
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteData -> m CiteData
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteData
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteData -> c CiteData
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CiteData)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CiteData)
$cCD :: Constr
$tCiteData :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> CiteData -> m CiteData
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteData -> m CiteData
gmapMp :: (forall d. Data d => d -> m d) -> CiteData -> m CiteData
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> CiteData -> m CiteData
gmapM :: (forall d. Data d => d -> m d) -> CiteData -> m CiteData
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> CiteData -> m CiteData
gmapQi :: Int -> (forall d. Data d => d -> u) -> CiteData -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> CiteData -> u
gmapQ :: (forall d. Data d => d -> u) -> CiteData -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> CiteData -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CiteData -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> CiteData -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CiteData -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> CiteData -> r
gmapT :: (forall b. Data b => b -> b) -> CiteData -> CiteData
$cgmapT :: (forall b. Data b => b -> b) -> CiteData -> CiteData
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CiteData)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CiteData)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c CiteData)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c CiteData)
dataTypeOf :: CiteData -> DataType
$cdataTypeOf :: CiteData -> DataType
toConstr :: CiteData -> Constr
$ctoConstr :: CiteData -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteData
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c CiteData
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteData -> c CiteData
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> CiteData -> c CiteData
$cp1Data :: Typeable CiteData
Data, (forall x. CiteData -> Rep CiteData x)
-> (forall x. Rep CiteData x -> CiteData) -> Generic CiteData
forall x. Rep CiteData x -> CiteData
forall x. CiteData -> Rep CiteData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CiteData x -> CiteData
$cfrom :: forall x. CiteData -> Rep CiteData x
Generic )
instance Eq CiteData where
== :: CiteData -> CiteData -> Bool
(==) (CD ka :: String
ka ca :: [Output]
ca _ _ _ _ _)
(CD kb :: String
kb cb :: [Output]
cb _ _ _ _ _) = String
ka String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
kb Bool -> Bool -> Bool
&& [Output]
ca [Output] -> [Output] -> Bool
forall a. Eq a => a -> a -> Bool
== [Output]
cb
data NameData
= ND
{ NameData -> Agent
nameKey :: Agent
, NameData -> [Output]
nameCollision :: [Output]
, NameData -> [[Output]]
nameDisambData :: [[Output]]
, NameData -> [Output]
nameDataSolved :: [Output]
} deriving ( Int -> NameData -> String -> String
[NameData] -> String -> String
NameData -> String
(Int -> NameData -> String -> String)
-> (NameData -> String)
-> ([NameData] -> String -> String)
-> Show NameData
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [NameData] -> String -> String
$cshowList :: [NameData] -> String -> String
show :: NameData -> String
$cshow :: NameData -> String
showsPrec :: Int -> NameData -> String -> String
$cshowsPrec :: Int -> NameData -> String -> String
Show, Typeable, Typeable NameData
DataType
Constr
Typeable NameData =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameData -> c NameData)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameData)
-> (NameData -> Constr)
-> (NameData -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameData))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameData))
-> ((forall b. Data b => b -> b) -> NameData -> NameData)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameData -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameData -> r)
-> (forall u. (forall d. Data d => d -> u) -> NameData -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> NameData -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameData -> m NameData)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameData -> m NameData)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameData -> m NameData)
-> Data NameData
NameData -> DataType
NameData -> Constr
(forall b. Data b => b -> b) -> NameData -> NameData
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameData -> c NameData
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameData
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> NameData -> u
forall u. (forall d. Data d => d -> u) -> NameData -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameData -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameData -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameData -> m NameData
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameData -> m NameData
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameData
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameData -> c NameData
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameData)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameData)
$cND :: Constr
$tNameData :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> NameData -> m NameData
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameData -> m NameData
gmapMp :: (forall d. Data d => d -> m d) -> NameData -> m NameData
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameData -> m NameData
gmapM :: (forall d. Data d => d -> m d) -> NameData -> m NameData
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameData -> m NameData
gmapQi :: Int -> (forall d. Data d => d -> u) -> NameData -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> NameData -> u
gmapQ :: (forall d. Data d => d -> u) -> NameData -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> NameData -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameData -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameData -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameData -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameData -> r
gmapT :: (forall b. Data b => b -> b) -> NameData -> NameData
$cgmapT :: (forall b. Data b => b -> b) -> NameData -> NameData
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameData)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameData)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c NameData)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameData)
dataTypeOf :: NameData -> DataType
$cdataTypeOf :: NameData -> DataType
toConstr :: NameData -> Constr
$ctoConstr :: NameData -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameData
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameData
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameData -> c NameData
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameData -> c NameData
$cp1Data :: Typeable NameData
Data, (forall x. NameData -> Rep NameData x)
-> (forall x. Rep NameData x -> NameData) -> Generic NameData
forall x. Rep NameData x -> NameData
forall x. NameData -> Rep NameData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NameData x -> NameData
$cfrom :: forall x. NameData -> Rep NameData x
Generic )
instance Eq NameData where
== :: NameData -> NameData -> Bool
(==) (ND ka :: Agent
ka ca :: [Output]
ca _ _)
(ND kb :: Agent
kb cb :: [Output]
cb _ _) = Agent
ka Agent -> Agent -> Bool
forall a. Eq a => a -> a -> Bool
== Agent
kb Bool -> Bool -> Bool
&& [Output]
ca [Output] -> [Output] -> Bool
forall a. Eq a => a -> a -> Bool
== [Output]
cb
isPunctuationInQuote :: Style -> Bool
isPunctuationInQuote :: Style -> Bool
isPunctuationInQuote sty :: Style
sty =
case Style -> [Locale]
styleLocale Style
sty of
(l :: Locale
l:_) -> ("punctuation-in-quote","true") Option -> [Option] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` Locale -> [Option]
localeOptions Locale
l
_ -> Bool
False
object' :: [Pair] -> Aeson.Value
object' :: [Pair] -> Value
object' = [Pair] -> Value
object ([Pair] -> Value) -> ([Pair] -> [Pair]) -> [Pair] -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Pair -> Bool) -> [Pair] -> [Pair]
forall a. (a -> Bool) -> [a] -> [a]
filter (Bool -> Bool
not (Bool -> Bool) -> (Pair -> Bool) -> Pair -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pair -> Bool
forall a. (Eq a, IsString a) => (a, Value) -> Bool
isempty)
where isempty :: (a, Value) -> Bool
isempty (_, Array v :: Array
v) = Array -> Bool
forall a. Vector a -> Bool
V.null Array
v
isempty (_, String t :: Text
t) = Text -> Bool
T.null Text
t
isempty ("first-reference-note-number", Aeson.Number n :: Scientific
n) = Scientific
n Scientific -> Scientific -> Bool
forall a. Eq a => a -> a -> Bool
== 0
isempty ("citation-number", Aeson.Number n :: Scientific
n) = Scientific
n Scientific -> Scientific -> Bool
forall a. Eq a => a -> a -> Bool
== 0
isempty (_, _) = Bool
False
data Agent
= Agent { Agent -> [Formatted]
givenName :: [Formatted]
, Agent -> Formatted
droppingPart :: Formatted
, Agent -> Formatted
nonDroppingPart :: Formatted
, Agent -> Formatted
familyName :: Formatted
, Agent -> Formatted
nameSuffix :: Formatted
, Agent -> Formatted
literal :: Formatted
, Agent -> Bool
commaSuffix :: Bool
, Agent -> Bool
parseNames :: Bool
}
deriving ( Int -> Agent -> String -> String
[Agent] -> String -> String
Agent -> String
(Int -> Agent -> String -> String)
-> (Agent -> String) -> ([Agent] -> String -> String) -> Show Agent
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [Agent] -> String -> String
$cshowList :: [Agent] -> String -> String
show :: Agent -> String
$cshow :: Agent -> String
showsPrec :: Int -> Agent -> String -> String
$cshowsPrec :: Int -> Agent -> String -> String
Show, ReadPrec [Agent]
ReadPrec Agent
Int -> ReadS Agent
ReadS [Agent]
(Int -> ReadS Agent)
-> ReadS [Agent]
-> ReadPrec Agent
-> ReadPrec [Agent]
-> Read Agent
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Agent]
$creadListPrec :: ReadPrec [Agent]
readPrec :: ReadPrec Agent
$creadPrec :: ReadPrec Agent
readList :: ReadS [Agent]
$creadList :: ReadS [Agent]
readsPrec :: Int -> ReadS Agent
$creadsPrec :: Int -> ReadS Agent
Read, Agent -> Agent -> Bool
(Agent -> Agent -> Bool) -> (Agent -> Agent -> Bool) -> Eq Agent
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Agent -> Agent -> Bool
$c/= :: Agent -> Agent -> Bool
== :: Agent -> Agent -> Bool
$c== :: Agent -> Agent -> Bool
Eq, Eq Agent
Eq Agent =>
(Agent -> Agent -> Ordering)
-> (Agent -> Agent -> Bool)
-> (Agent -> Agent -> Bool)
-> (Agent -> Agent -> Bool)
-> (Agent -> Agent -> Bool)
-> (Agent -> Agent -> Agent)
-> (Agent -> Agent -> Agent)
-> Ord Agent
Agent -> Agent -> Bool
Agent -> Agent -> Ordering
Agent -> Agent -> Agent
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Agent -> Agent -> Agent
$cmin :: Agent -> Agent -> Agent
max :: Agent -> Agent -> Agent
$cmax :: Agent -> Agent -> Agent
>= :: Agent -> Agent -> Bool
$c>= :: Agent -> Agent -> Bool
> :: Agent -> Agent -> Bool
$c> :: Agent -> Agent -> Bool
<= :: Agent -> Agent -> Bool
$c<= :: Agent -> Agent -> Bool
< :: Agent -> Agent -> Bool
$c< :: Agent -> Agent -> Bool
compare :: Agent -> Agent -> Ordering
$ccompare :: Agent -> Agent -> Ordering
$cp1Ord :: Eq Agent
Ord, Typeable, Typeable Agent
DataType
Constr
Typeable Agent =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Agent -> c Agent)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Agent)
-> (Agent -> Constr)
-> (Agent -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Agent))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Agent))
-> ((forall b. Data b => b -> b) -> Agent -> Agent)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Agent -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Agent -> r)
-> (forall u. (forall d. Data d => d -> u) -> Agent -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Agent -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Agent -> m Agent)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Agent -> m Agent)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Agent -> m Agent)
-> Data Agent
Agent -> DataType
Agent -> Constr
(forall b. Data b => b -> b) -> Agent -> Agent
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Agent -> c Agent
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Agent
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Agent -> u
forall u. (forall d. Data d => d -> u) -> Agent -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Agent -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Agent -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Agent -> m Agent
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Agent -> m Agent
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Agent
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Agent -> c Agent
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Agent)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Agent)
$cAgent :: Constr
$tAgent :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Agent -> m Agent
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Agent -> m Agent
gmapMp :: (forall d. Data d => d -> m d) -> Agent -> m Agent
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Agent -> m Agent
gmapM :: (forall d. Data d => d -> m d) -> Agent -> m Agent
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Agent -> m Agent
gmapQi :: Int -> (forall d. Data d => d -> u) -> Agent -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Agent -> u
gmapQ :: (forall d. Data d => d -> u) -> Agent -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Agent -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Agent -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Agent -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Agent -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Agent -> r
gmapT :: (forall b. Data b => b -> b) -> Agent -> Agent
$cgmapT :: (forall b. Data b => b -> b) -> Agent -> Agent
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Agent)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Agent)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Agent)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Agent)
dataTypeOf :: Agent -> DataType
$cdataTypeOf :: Agent -> DataType
toConstr :: Agent -> Constr
$ctoConstr :: Agent -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Agent
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Agent
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Agent -> c Agent
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Agent -> c Agent
$cp1Data :: Typeable Agent
Data, (forall x. Agent -> Rep Agent x)
-> (forall x. Rep Agent x -> Agent) -> Generic Agent
forall x. Rep Agent x -> Agent
forall x. Agent -> Rep Agent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Agent x -> Agent
$cfrom :: forall x. Agent -> Rep Agent x
Generic )
emptyAgent :: Agent
emptyAgent :: Agent
emptyAgent = [Formatted]
-> Formatted
-> Formatted
-> Formatted
-> Formatted
-> Formatted
-> Bool
-> Bool
-> Agent
Agent [] Formatted
forall a. Monoid a => a
mempty Formatted
forall a. Monoid a => a
mempty Formatted
forall a. Monoid a => a
mempty Formatted
forall a. Monoid a => a
mempty Formatted
forall a. Monoid a => a
mempty Bool
False Bool
False
removeQuoted :: Formatted -> Formatted
removeQuoted :: Formatted -> Formatted
removeQuoted (Formatted ils :: [Inline]
ils) = [Inline] -> Formatted
Formatted ([Inline] -> [Inline]
go [Inline]
ils)
where go :: [Inline] -> [Inline]
go [] = []
go (Quoted DoubleQuote ils' :: [Inline]
ils' : xs :: [Inline]
xs) = [Inline]
ils' [Inline] -> [Inline] -> [Inline]
forall a. [a] -> [a] -> [a]
++ [Inline] -> [Inline]
go [Inline]
xs
go (x :: Inline
x:xs :: [Inline]
xs) = Inline
x Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline] -> [Inline]
go [Inline]
xs
instance FromJSON Agent where
parseJSON :: Value -> Parser Agent
parseJSON (Object v :: Object
v) = Agent -> Agent
nameTransform (Agent -> Agent) -> Parser Agent -> Parser Agent
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ([Formatted]
-> Formatted
-> Formatted
-> Formatted
-> Formatted
-> Formatted
-> Bool
-> Bool
-> Agent
Agent ([Formatted]
-> Formatted
-> Formatted
-> Formatted
-> Formatted
-> Formatted
-> Bool
-> Bool
-> Agent)
-> Parser [Formatted]
-> Parser
(Formatted
-> Formatted
-> Formatted
-> Formatted
-> Formatted
-> Bool
-> Bool
-> Agent)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
(Object
v Object -> Text -> Parser [Formatted]
forall a. FromJSON a => Object -> Text -> Parser a
.: "given" Parser [Formatted] -> Parser [Formatted] -> Parser [Formatted]
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ((([Inline] -> Formatted) -> [[Inline]] -> [Formatted]
forall a b. (a -> b) -> [a] -> [b]
map [Inline] -> Formatted
Formatted ([[Inline]] -> [Formatted])
-> (Formatted -> [[Inline]]) -> Formatted -> [Formatted]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Inline -> Bool) -> [Inline] -> [[Inline]]
forall a. (a -> Bool) -> [a] -> [[a]]
wordsBy Inline -> Bool
isSpace ([Inline] -> [[Inline]])
-> (Formatted -> [Inline]) -> Formatted -> [[Inline]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
[Inline] -> [Inline]
addSpaceAfterPeriod ([Inline] -> [Inline])
-> (Formatted -> [Inline]) -> Formatted -> [Inline]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formatted -> [Inline]
unFormatted) (Formatted -> [Formatted])
-> Parser Formatted -> Parser [Formatted]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
Object
v Object -> Text -> Parser Formatted
forall a. FromJSON a => Object -> Text -> Parser a
.: "given") Parser [Formatted] -> Parser [Formatted] -> Parser [Formatted]
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> [Formatted] -> Parser [Formatted]
forall (f :: * -> *) a. Applicative f => a -> f a
pure []) Parser
(Formatted
-> Formatted
-> Formatted
-> Formatted
-> Formatted
-> Bool
-> Bool
-> Agent)
-> Parser Formatted
-> Parser
(Formatted
-> Formatted -> Formatted -> Formatted -> Bool -> Bool -> Agent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe Formatted)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "dropping-particle" Parser (Maybe Formatted) -> Formatted -> Parser Formatted
forall a. Parser (Maybe a) -> a -> Parser a
.!= Formatted
forall a. Monoid a => a
mempty Parser
(Formatted
-> Formatted -> Formatted -> Formatted -> Bool -> Bool -> Agent)
-> Parser Formatted
-> Parser
(Formatted -> Formatted -> Formatted -> Bool -> Bool -> Agent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe Formatted)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "non-dropping-particle" Parser (Maybe Formatted) -> Formatted -> Parser Formatted
forall a. Parser (Maybe a) -> a -> Parser a
.!= Formatted
forall a. Monoid a => a
mempty Parser
(Formatted -> Formatted -> Formatted -> Bool -> Bool -> Agent)
-> Parser Formatted
-> Parser (Formatted -> Formatted -> Bool -> Bool -> Agent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Formatted -> Formatted
removeQuoted (Formatted -> Formatted) -> Parser Formatted -> Parser Formatted
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Object
v Object -> Text -> Parser (Maybe Formatted)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "family" Parser (Maybe Formatted) -> Formatted -> Parser Formatted
forall a. Parser (Maybe a) -> a -> Parser a
.!= Formatted
forall a. Monoid a => a
mempty)) Parser (Formatted -> Formatted -> Bool -> Bool -> Agent)
-> Parser Formatted -> Parser (Formatted -> Bool -> Bool -> Agent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe Formatted)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "suffix" Parser (Maybe Formatted) -> Formatted -> Parser Formatted
forall a. Parser (Maybe a) -> a -> Parser a
.!= Formatted
forall a. Monoid a => a
mempty Parser (Formatted -> Bool -> Bool -> Agent)
-> Parser Formatted -> Parser (Bool -> Bool -> Agent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
Object
v Object -> Text -> Parser (Maybe Formatted)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "literal" Parser (Maybe Formatted) -> Formatted -> Parser Formatted
forall a. Parser (Maybe a) -> a -> Parser a
.!= Formatted
forall a. Monoid a => a
mempty Parser (Bool -> Bool -> Agent)
-> Parser Bool -> Parser (Bool -> Agent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v Object -> Text -> Parser (Maybe Value)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "comma-suffix" Parser (Maybe Value)
-> (Maybe Value -> Parser (Maybe Bool)) -> Parser (Maybe Bool)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (Value -> Parser Bool) -> Maybe Value -> Parser (Maybe Bool)
forall (m :: * -> *) b a.
Monad m =>
(b -> m a) -> Maybe b -> m (Maybe a)
mb Value -> Parser Bool
parseBool) Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False Parser (Bool -> Agent) -> Parser Bool -> Parser Agent
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
(Object
v Object -> Text -> Parser (Maybe Value)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? "parse-names" Parser (Maybe Value)
-> (Maybe Value -> Parser (Maybe Bool)) -> Parser (Maybe Bool)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (Value -> Parser Bool) -> Maybe Value -> Parser (Maybe Bool)
forall (m :: * -> *) b a.
Monad m =>
(b -> m a) -> Maybe b -> m (Maybe a)
mb Value -> Parser Bool
parseBool) Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False)
parseJSON _ = String -> Parser Agent
forall (m :: * -> *) a. MonadFail m => String -> m a
fail "Could not parse Agent"
instance ToYaml Agent where
toYaml :: Agent -> YamlBuilder
toYaml ag :: Agent
ag = [[(Text, YamlBuilder)] -> [(Text, YamlBuilder)]] -> YamlBuilder
mapping' [ "family" Text -> Formatted -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a.
AddYaml a =>
Text -> a -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
&= Agent -> Formatted
familyName Agent
ag
, case Agent -> [Formatted]
givenName Agent
ag of
[] -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a. a -> a
id
xs :: [Formatted]
xs -> "given" Text -> Formatted -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a.
AddYaml a =>
Text -> a -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
&= [Inline] -> Formatted
Formatted
([Inline] -> [[Inline]] -> [Inline]
forall a. [a] -> [[a]] -> [a]
intercalate [Inline
Space]
((Formatted -> [Inline]) -> [Formatted] -> [[Inline]]
forall a b. (a -> b) -> [a] -> [b]
map Formatted -> [Inline]
unFormatted [Formatted]
xs))
, "non-dropping-particle" Text -> Formatted -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a.
AddYaml a =>
Text -> a -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
&= Agent -> Formatted
nonDroppingPart Agent
ag
, "dropping-particle" Text -> Formatted -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a.
AddYaml a =>
Text -> a -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
&= Agent -> Formatted
droppingPart Agent
ag
, "suffix" Text -> Formatted -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a.
AddYaml a =>
Text -> a -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
&= Agent -> Formatted
nameSuffix Agent
ag
, "literal" Text -> Formatted -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a.
AddYaml a =>
Text -> a -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
&= Agent -> Formatted
literal Agent
ag
, "comma-suffix" Text -> Text -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a.
AddYaml a =>
Text -> a -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
&= String -> Text
T.pack (if Agent -> Bool
commaSuffix Agent
ag
then "true"
else "")
, "parse-names" Text -> Text -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
forall a.
AddYaml a =>
Text -> a -> [(Text, YamlBuilder)] -> [(Text, YamlBuilder)]
&= String -> Text
T.pack (if Agent -> Bool
parseNames Agent
ag
then "true"
else "")
]
nameTransform :: Agent -> Agent
nameTransform :: Agent -> Agent
nameTransform ag :: Agent
ag
| Agent -> Bool
parseNames Agent
ag = Agent -> Agent
nonDroppingPartTransform (Agent -> Agent) -> (Agent -> Agent) -> Agent -> Agent
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Agent -> Agent
droppingPartTransform (Agent -> Agent) -> (Agent -> Agent) -> Agent -> Agent
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Agent -> Agent
suffixTransform (Agent -> Agent) -> Agent -> Agent
forall a b. (a -> b) -> a -> b
$ Agent
ag{ parseNames :: Bool
parseNames = Bool
False }
| Bool
otherwise = Agent
ag
nonDroppingPartTransform :: Agent -> Agent
nonDroppingPartTransform :: Agent -> Agent
nonDroppingPartTransform ag :: Agent
ag
| Agent -> Formatted
nonDroppingPart Agent
ag Formatted -> Formatted -> Bool
forall a. Eq a => a -> a -> Bool
== Formatted
forall a. Monoid a => a
mempty =
case (Inline -> Bool) -> [Inline] -> ([Inline], [Inline])
forall a. (a -> Bool) -> [a] -> ([a], [a])
break Inline -> Bool
startWithCapital'
((Char -> Bool) -> [Inline] -> [Inline]
splitStrWhen (\c :: Char
c -> Char -> Bool
isPunctuation Char
c Bool -> Bool -> Bool
|| Char -> Bool
isUpper Char
c) ([Inline] -> [Inline]) -> [Inline] -> [Inline]
forall a b. (a -> b) -> a -> b
$
Formatted -> [Inline]
unFormatted (Formatted -> [Inline]) -> Formatted -> [Inline]
forall a b. (a -> b) -> a -> b
$ Agent -> Formatted
familyName Agent
ag) of
([], _) -> Agent
ag
(xs :: [Inline]
xs, ys :: [Inline]
ys)
| [Inline] -> String
lastInline [Inline]
xs String -> [String] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [" ", "-", "'", "’"] -> Agent
ag {
nonDroppingPart :: Formatted
nonDroppingPart = [Inline] -> Formatted
Formatted ([Inline] -> Formatted) -> [Inline] -> Formatted
forall a b. (a -> b) -> a -> b
$ [Inline] -> [Inline]
trimSpace [Inline]
xs,
familyName :: Formatted
familyName = [Inline] -> Formatted
Formatted [Inline]
ys }
| Bool
otherwise -> Agent
ag
| Bool
otherwise = Agent
ag
trimSpace :: [Inline] -> [Inline]
trimSpace :: [Inline] -> [Inline]
trimSpace = [Inline] -> [Inline]
forall a. [a] -> [a]
reverse ([Inline] -> [Inline])
-> ([Inline] -> [Inline]) -> [Inline] -> [Inline]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Inline -> Bool) -> [Inline] -> [Inline]
forall a. (a -> Bool) -> [a] -> [a]
dropWhile Inline -> Bool
isSpace ([Inline] -> [Inline])
-> ([Inline] -> [Inline]) -> [Inline] -> [Inline]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Inline] -> [Inline]
forall a. [a] -> [a]
reverse ([Inline] -> [Inline])
-> ([Inline] -> [Inline]) -> [Inline] -> [Inline]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Inline -> Bool) -> [Inline] -> [Inline]
forall a. (a -> Bool) -> [a] -> [a]
dropWhile Inline -> Bool
isSpace
isSpace :: Inline -> Bool
isSpace :: Inline -> Bool
isSpace Space = Bool
True
isSpace SoftBreak = Bool
True
isSpace _ = Bool
False
droppingPartTransform :: Agent -> Agent
droppingPartTransform :: Agent -> Agent
droppingPartTransform ag :: Agent
ag
| Agent -> Formatted
droppingPart Agent
ag Formatted -> Formatted -> Bool
forall a. Eq a => a -> a -> Bool
== Formatted
forall a. Monoid a => a
mempty =
case (Formatted -> Bool) -> [Formatted] -> ([Formatted], [Formatted])
forall a. (a -> Bool) -> [a] -> ([a], [a])
break Formatted -> Bool
startWithCapital ([Formatted] -> ([Formatted], [Formatted]))
-> [Formatted] -> ([Formatted], [Formatted])
forall a b. (a -> b) -> a -> b
$ [Formatted] -> [Formatted]
forall a. [a] -> [a]
reverse ([Formatted] -> [Formatted]) -> [Formatted] -> [Formatted]
forall a b. (a -> b) -> a -> b
$ Agent -> [Formatted]
givenName Agent
ag of
([],_) -> Agent
ag
(ys :: [Formatted]
ys,zs :: [Formatted]
zs) -> Agent
ag{ droppingPart :: Formatted
droppingPart = [Formatted] -> Formatted
forall a. Monoid a => [a] -> a
mconcat ([Formatted] -> Formatted) -> [Formatted] -> Formatted
forall a b. (a -> b) -> a -> b
$
Formatted -> [Formatted] -> [Formatted]
forall a. a -> [a] -> [a]
intersperse ([Inline] -> Formatted
Formatted [Inline
Space]) ([Formatted] -> [Formatted]) -> [Formatted] -> [Formatted]
forall a b. (a -> b) -> a -> b
$
[Formatted] -> [Formatted]
forall a. [a] -> [a]
reverse [Formatted]
ys
, givenName :: [Formatted]
givenName = [Formatted] -> [Formatted]
forall a. [a] -> [a]
reverse [Formatted]
zs }
| Bool
otherwise = Agent
ag
startWithCapital' :: Inline -> Bool
startWithCapital' :: Inline -> Bool
startWithCapital' (Str (Text -> Maybe (Char, Text)
T.uncons -> Just (c :: Char
c,_))) = Char -> Bool
isUpper Char
c Bool -> Bool -> Bool
&& Char -> Bool
isLetter Char
c
startWithCapital' _ = Bool
False
startWithCapital :: Formatted -> Bool
startWithCapital :: Formatted -> Bool
startWithCapital (Formatted (x :: Inline
x:_)) = Inline -> Bool
startWithCapital' Inline
x
startWithCapital _ = Bool
False
stripFinalComma :: Formatted -> (String, Formatted)
stripFinalComma :: Formatted -> (String, Formatted)
stripFinalComma (Formatted ils :: [Inline]
ils) =
case [Inline] -> [Inline]
forall a. [a] -> [a]
reverse ([Inline] -> [Inline]) -> [Inline] -> [Inline]
forall a b. (a -> b) -> a -> b
$ (Char -> Bool) -> [Inline] -> [Inline]
splitStrWhen Char -> Bool
isPunctuation [Inline]
ils of
Str ",":xs :: [Inline]
xs -> (",", [Inline] -> Formatted
Formatted ([Inline] -> Formatted) -> [Inline] -> Formatted
forall a b. (a -> b) -> a -> b
$ [Inline] -> [Inline]
forall a. [a] -> [a]
reverse [Inline]
xs)
Str "!":Str ",":xs :: [Inline]
xs -> (",!", [Inline] -> Formatted
Formatted ([Inline] -> Formatted) -> [Inline] -> Formatted
forall a b. (a -> b) -> a -> b
$ [Inline] -> [Inline]
forall a. [a] -> [a]
reverse [Inline]
xs)
_ -> ("", [Inline] -> Formatted
Formatted [Inline]
ils)
suffixTransform :: Agent -> Agent
suffixTransform :: Agent -> Agent
suffixTransform ag :: Agent
ag
| Agent -> Formatted
nameSuffix Agent
ag Formatted -> Formatted -> Bool
forall a. Eq a => a -> a -> Bool
== Formatted
forall a. Monoid a => a
mempty = (Agent, Bool) -> Agent
forall a b. (a, b) -> a
fst ((Agent, Bool) -> Agent) -> (Agent, Bool) -> Agent
forall a b. (a -> b) -> a -> b
$ ((Agent, Bool) -> Formatted -> (Agent, Bool))
-> (Agent, Bool) -> [Formatted] -> (Agent, Bool)
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl (Agent, Bool) -> Formatted -> (Agent, Bool)
go
(Agent
ag{ givenName :: [Formatted]
givenName = [Formatted]
forall a. Monoid a => a
mempty
, nameSuffix :: Formatted
nameSuffix = Formatted
forall a. Monoid a => a
mempty
, commaSuffix :: Bool
commaSuffix = Bool
False }, Bool
False)
(Agent -> [Formatted]
givenName Agent
ag)
| Bool
otherwise = Agent
ag
where go :: (Agent, Bool) -> Formatted -> (Agent, Bool)
go (ag' :: Agent
ag', False) n :: Formatted
n =
case Formatted -> (String, Formatted)
stripFinalComma Formatted
n of
("", _) -> (Agent
ag'{ givenName :: [Formatted]
givenName = Agent -> [Formatted]
givenName Agent
ag' [Formatted] -> [Formatted] -> [Formatted]
forall a. [a] -> [a] -> [a]
++ [Formatted
n] }, Bool
False)
(",",n' :: Formatted
n') -> (Agent
ag'{ givenName :: [Formatted]
givenName = Agent -> [Formatted]
givenName Agent
ag' [Formatted] -> [Formatted] -> [Formatted]
forall a. [a] -> [a] -> [a]
++ [Formatted
n'] }, Bool
True)
(",!",n' :: Formatted
n') -> (Agent
ag'{ givenName :: [Formatted]
givenName = Agent -> [Formatted]
givenName Agent
ag' [Formatted] -> [Formatted] -> [Formatted]
forall a. [a] -> [a] -> [a]
++ [Formatted
n']
, commaSuffix :: Bool
commaSuffix = Bool
True }, Bool
True)
_ -> String -> (Agent, Bool)
forall a. HasCallStack => String -> a
error "stripFinalComma returned unexpected value"
go (ag' :: Agent
ag', True) n :: Formatted
n = (Agent
ag'{ nameSuffix :: Formatted
nameSuffix = if Agent -> Formatted
nameSuffix Agent
ag' Formatted -> Formatted -> Bool
forall a. Eq a => a -> a -> Bool
== Formatted
forall a. Monoid a => a
mempty
then Formatted
n
else Agent -> Formatted
nameSuffix Agent
ag' Formatted -> Formatted -> Formatted
forall a. Semigroup a => a -> a -> a
<>
[Inline] -> Formatted
Formatted [Inline
Space] Formatted -> Formatted -> Formatted
forall a. Semigroup a => a -> a -> a
<> Formatted
n }, Bool
True)
instance ToJSON Agent where
toJSON :: Agent -> Value
toJSON agent :: Agent
agent = [Pair] -> Value
object' ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ [
"given" Text -> Formatted -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= [Inline] -> Formatted
Formatted ([Inline] -> [[Inline]] -> [Inline]
forall a. [a] -> [[a]] -> [a]
intercalate [Inline
Space] ([[Inline]] -> [Inline]) -> [[Inline]] -> [Inline]
forall a b. (a -> b) -> a -> b
$ (Formatted -> [Inline]) -> [Formatted] -> [[Inline]]
forall a b. (a -> b) -> [a] -> [b]
map Formatted -> [Inline]
unFormatted
([Formatted] -> [[Inline]]) -> [Formatted] -> [[Inline]]
forall a b. (a -> b) -> a -> b
$ Agent -> [Formatted]
givenName Agent
agent)
, "dropping-particle" Text -> Formatted -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Agent -> Formatted
droppingPart Agent
agent
, "non-dropping-particle" Text -> Formatted -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Agent -> Formatted
nonDroppingPart Agent
agent
, "family" Text -> Formatted -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Agent -> Formatted
familyName Agent
agent
, "suffix" Text -> Formatted -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Agent -> Formatted
nameSuffix Agent
agent
, "literal" Text -> Formatted -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Agent -> Formatted
literal Agent
agent
] [Pair] -> [Pair] -> [Pair]
forall a. [a] -> [a] -> [a]
++ ["comma-suffix" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Agent -> Bool
commaSuffix Agent
agent | Agent -> Formatted
nameSuffix Agent
agent Formatted -> Formatted -> Bool
forall a. Eq a => a -> a -> Bool
/= Formatted
forall a. Monoid a => a
mempty]
[Pair] -> [Pair] -> [Pair]
forall a. [a] -> [a] -> [a]
++ ["parse-names" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Bool
True | Agent -> Bool
parseNames Agent
agent ]
instance OVERLAPS
FromJSON [Agent] where
parseJSON :: Value -> Parser [Agent]
parseJSON (Array xs :: Array
xs) = (Value -> Parser Agent) -> [Value] -> Parser [Agent]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM Value -> Parser Agent
forall a. FromJSON a => Value -> Parser a
parseJSON ([Value] -> Parser [Agent]) -> [Value] -> Parser [Agent]
forall a b. (a -> b) -> a -> b
$ Array -> [Value]
forall a. Vector a -> [a]
V.toList Array
xs
parseJSON (Object v :: Object
v) = (Agent -> [Agent] -> [Agent]
forall a. a -> [a] -> [a]
:[]) (Agent -> [Agent]) -> Parser Agent -> Parser [Agent]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
`fmap` Value -> Parser Agent
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
v)
parseJSON _ = String -> Parser [Agent]
forall (m :: * -> *) a. MonadFail m => String -> m a
fail "Could not parse [Agent]"