-- | A collection of predefined Unicode values outside of ASCII range. For
-- ASCII, see "Prettyprinter.Symbols.Ascii".
module Prettyprinter.Symbols.Unicode (
    -- * Quotes

    -- ** Enclosing
    d9966quotes,
    d6699quotes,
    s96quotes,
    s69quotes,
    dGuillemetsOut,
    dGuillemetsIn,
    sGuillemetsOut,
    sGuillemetsIn,

    -- ** Standalone
    b99dquote,
    t66dquote,
    t99dquote,
    b9quote,
    t6quote,
    t9quote,

    rdGuillemet,
    ldGuillemet,
    rsGuillemet,
    lsGuillemet,

    -- * Various typographical symbols
    bullet,
    endash,

    -- * Currencies
    euro,
    cent,
    yen,
    pound,
) where



import Prettyprinter.Internal



-- | Double „99-66“ quotes, as used in German typography.
--
-- >>> putDoc (d9966quotes "·")
-- „·“
d9966quotes :: Doc ann -> Doc ann
d9966quotes :: Doc ann -> Doc ann
d9966quotes = Doc ann -> Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann -> Doc ann
enclose Doc ann
forall ann. Doc ann
b99dquote Doc ann
forall ann. Doc ann
t66dquote

-- | Double “66-99” quotes, as used in English typography.
--
-- >>> putDoc (d6699quotes "·")
-- “·”
d6699quotes :: Doc ann -> Doc ann
d6699quotes :: Doc ann -> Doc ann
d6699quotes = Doc ann -> Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann -> Doc ann
enclose Doc ann
forall ann. Doc ann
t66dquote Doc ann
forall ann. Doc ann
t99dquote

-- | Single ‚9-6‘ quotes, as used in German typography.
--
-- >>> putDoc (s96quotes "·")
-- ‚·‘
s96quotes :: Doc ann -> Doc ann
s96quotes :: Doc ann -> Doc ann
s96quotes = Doc ann -> Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann -> Doc ann
enclose Doc ann
forall ann. Doc ann
b9quote Doc ann
forall ann. Doc ann
t6quote

-- | Single ‘6-9’ quotes, as used in English typography.
--
-- >>> putDoc (s69quotes "·")
-- ‘·’
s69quotes :: Doc ann -> Doc ann
s69quotes :: Doc ann -> Doc ann
s69quotes = Doc ann -> Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann -> Doc ann
enclose Doc ann
forall ann. Doc ann
t6quote Doc ann
forall ann. Doc ann
t9quote

-- | Double «guillemets», pointing outwards (without adding any spacing).
--
-- >>> putDoc (dGuillemetsOut "·")
-- «·»
dGuillemetsOut :: Doc ann -> Doc ann
dGuillemetsOut :: Doc ann -> Doc ann
dGuillemetsOut = Doc ann -> Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann -> Doc ann
enclose Doc ann
forall ann. Doc ann
ldGuillemet Doc ann
forall ann. Doc ann
rdGuillemet

-- | Double »guillemets«, pointing inwards (without adding any spacing).
--
-- >>> putDoc (dGuillemetsIn "·")
-- »·«
dGuillemetsIn :: Doc ann -> Doc ann
dGuillemetsIn :: Doc ann -> Doc ann
dGuillemetsIn = Doc ann -> Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann -> Doc ann
enclose Doc ann
forall ann. Doc ann
rdGuillemet Doc ann
forall ann. Doc ann
ldGuillemet

-- | Single ‹guillemets›, pointing outwards (without adding any spacing).
--
-- >>> putDoc (sGuillemetsOut "·")
-- ‹·›
sGuillemetsOut :: Doc ann -> Doc ann
sGuillemetsOut :: Doc ann -> Doc ann
sGuillemetsOut = Doc ann -> Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann -> Doc ann
enclose Doc ann
forall ann. Doc ann
lsGuillemet Doc ann
forall ann. Doc ann
rsGuillemet

-- | Single ›guillemets‹, pointing inwards (without adding any spacing).
--
-- >>> putDoc (sGuillemetsIn "·")
-- ›·‹
sGuillemetsIn :: Doc ann -> Doc ann
sGuillemetsIn :: Doc ann -> Doc ann
sGuillemetsIn = Doc ann -> Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann -> Doc ann
enclose Doc ann
forall ann. Doc ann
rsGuillemet Doc ann
forall ann. Doc ann
lsGuillemet

-- | Bottom „99“ style double quotes.
--
-- >>> putDoc b99dquote
-- „
b99dquote :: Doc ann
b99dquote :: Doc ann
b99dquote = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'„'

-- | Top “66” style double quotes.
--
-- >>> putDoc t66dquote
-- “
t66dquote :: Doc ann
t66dquote :: Doc ann
t66dquote = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'“'

-- | Top “99” style double quotes.
--
-- >>> putDoc t99dquote
-- ”
t99dquote :: Doc ann
t99dquote :: Doc ann
t99dquote = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'”'

-- | Bottom ‚9‘ style single quote.
--
-- >>> putDoc b9quote
-- ‚
b9quote :: Doc ann
b9quote :: Doc ann
b9quote = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'‚'

-- | Top ‘66’ style single quote.
--
-- >>> putDoc t6quote
-- ‘
t6quote :: Doc ann
t6quote :: Doc ann
t6quote = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'‘'

-- | Top ‘9’ style single quote.
--
-- >>> putDoc t9quote
-- ’
t9quote :: Doc ann
t9quote :: Doc ann
t9quote = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'’'

-- | Right-pointing double guillemets
--
-- >>> putDoc rdGuillemet
-- »
rdGuillemet :: Doc ann
rdGuillemet :: Doc ann
rdGuillemet = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'»'

-- | Left-pointing double guillemets
--
-- >>> putDoc ldGuillemet
-- «
ldGuillemet :: Doc ann
ldGuillemet :: Doc ann
ldGuillemet = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'«'

-- | Right-pointing single guillemets
--
-- >>> putDoc rsGuillemet
-- ›
rsGuillemet :: Doc ann
rsGuillemet :: Doc ann
rsGuillemet = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'›'

-- | Left-pointing single guillemets
--
-- >>> putDoc lsGuillemet
-- ‹
lsGuillemet :: Doc ann
lsGuillemet :: Doc ann
lsGuillemet = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'‹'

-- | >>> putDoc bullet
-- •
bullet :: Doc ann
bullet :: Doc ann
bullet = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'•'

-- | >>> putDoc endash
-- –
endash :: Doc ann
endash :: Doc ann
endash = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'–'

-- | >>> putDoc euro
-- €
euro :: Doc ann
euro :: Doc ann
euro = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'€'

-- | >>> putDoc cent
-- ¢
cent :: Doc ann
cent :: Doc ann
cent = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'¢'

-- | >>> putDoc yen
-- ¥
yen :: Doc ann
yen :: Doc ann
yen = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'¥'

-- | >>> putDoc pound
-- £
pound :: Doc ann
pound :: Doc ann
pound = Char -> Doc ann
forall ann. Char -> Doc ann
Char Char
'£'



-- $setup
--
-- (Definitions for the doctests)
--
-- >>> :set -XOverloadedStrings
-- >>> import Prettyprinter.Render.Text
-- >>> import Prettyprinter.Util