The haddock module header contains essentially the same information, so the boilerplate is redundant and just one more thing to get out of sync.
422 lines
7.7 KiB
Haskell
422 lines
7.7 KiB
Haskell
{-# LANGUAGE NoImplicitPrelude #-}
|
||
{-# LANGUAGE OverloadedStrings #-}
|
||
{- |
|
||
Module : Text.Pandoc.RoffChar
|
||
Copyright : Copyright (C) 2007-2019 John MacFarlane
|
||
License : GNU GPL, version 2 or above
|
||
|
||
Maintainer : John MacFarlane <jgm@berkeley.edu>
|
||
Stability : alpha
|
||
Portability : portable
|
||
|
||
Roff character escaping/unescaping.
|
||
-}
|
||
|
||
module Text.Pandoc.RoffChar (
|
||
standardEscapes
|
||
, characterCodes
|
||
, combiningAccents
|
||
) where
|
||
import Prelude
|
||
|
||
-- | These are the escapes specifically mentioned in groff_man(7),
|
||
-- plus @ and ellipsis.
|
||
standardEscapes :: [(Char, String)]
|
||
standardEscapes =
|
||
[ ('\160', "\\ ")
|
||
, ('\'', "\\[aq]")
|
||
, ('‘', "\\[oq]")
|
||
, ('’', "\\[cq]")
|
||
, ('"', "\\[dq]")
|
||
, ('“', "\\[lq]")
|
||
, ('”', "\\[rq]")
|
||
, ('—', "\\[em]")
|
||
, ('–', "\\[en]")
|
||
, ('`', "\\[ga]")
|
||
, ('^', "\\[ha]")
|
||
, ('~', "\\[ti]")
|
||
, ('\\', "\\[rs]")
|
||
, ('@', "\\[at]") -- because we use @ as a table and math delimiter
|
||
, ('\x2026', "\\&...") -- because u2026 doesn't render on tty
|
||
]
|
||
|
||
characterCodes :: [(Char, String)]
|
||
characterCodes =
|
||
[ ('Ð', "-D")
|
||
, ('ð', "Sd")
|
||
, ('Þ', "TP")
|
||
, ('þ', "Tp")
|
||
, ('ß', "ss")
|
||
, ('ff', "ff")
|
||
, ('fi', "fi")
|
||
, ('fl', "fl")
|
||
, ('ffi', "Fi")
|
||
, ('ffl', "Fl")
|
||
, ('Ł', "/L")
|
||
, ('ł', "/l")
|
||
, ('Ø', "/O")
|
||
, ('ø', "/o")
|
||
, ('Æ', "AE")
|
||
, ('æ', "ae")
|
||
, ('Œ', "OE")
|
||
, ('œ', "oe")
|
||
, ('IJ', "IJ")
|
||
, ('ij', "ij")
|
||
, ('ı', ".i")
|
||
, ('ȷ', ".j")
|
||
, ('Á', "'A")
|
||
, ('Ć', "'C")
|
||
, ('É', "'E")
|
||
, ('Í', "'I")
|
||
, ('Ó', "'O")
|
||
, ('Ú', "'U")
|
||
, ('Ý', "'Y")
|
||
, ('á', "'a")
|
||
, ('ć', "'c")
|
||
, ('é', "'e")
|
||
, ('í', "'i")
|
||
, ('ó', "'o")
|
||
, ('ú', "'u")
|
||
, ('ý', "'y")
|
||
, ('Ä', ":A")
|
||
, ('Ë', ":E")
|
||
, ('Ï', ":I")
|
||
, ('Ö', ":O")
|
||
, ('Ü', ":U")
|
||
, ('Ÿ', ":Y")
|
||
, ('ä', ":a")
|
||
, ('ë', ":e")
|
||
, ('ï', ":i")
|
||
, ('ö', ":o")
|
||
, ('ü', ":u")
|
||
, ('ÿ', ":y")
|
||
, ('Â', "^A")
|
||
, ('Ê', "^E")
|
||
, ('Î', "^I")
|
||
, ('Ô', "^O")
|
||
, ('Û', "^U")
|
||
, ('â', "^a")
|
||
, ('ê', "^e")
|
||
, ('î', "^i")
|
||
, ('ô', "^o")
|
||
, ('û', "^u")
|
||
, ('À', "`A")
|
||
, ('È', "`E")
|
||
, ('Ì', "`I")
|
||
, ('Ò', "`O")
|
||
, ('Ù', "`U")
|
||
, ('à', "`a")
|
||
, ('è', "`e")
|
||
, ('ì', "`i")
|
||
, ('ò', "`o")
|
||
, ('ù', "`u")
|
||
, ('Ã', "~A")
|
||
, ('Ñ', "~N")
|
||
, ('Õ', "~O")
|
||
, ('ã', "~a")
|
||
, ('ñ', "~n")
|
||
, ('õ', "~o")
|
||
, ('Š', "vS")
|
||
, ('š', "vs")
|
||
, ('Ž', "vZ")
|
||
, ('ž', "vz")
|
||
, ('Ç', ",C")
|
||
, ('ç', ",c")
|
||
, ('Å', "oA")
|
||
, ('å', "oa")
|
||
, ('˝', "a\"")
|
||
, ('¯', "a-")
|
||
, ('˙', "a.")
|
||
, ('^', "a^")
|
||
, ('´', "aa")
|
||
, ('`', "ga")
|
||
, ('˘', "ab")
|
||
, ('¸', "ac")
|
||
, ('¨', "ad")
|
||
, ('ˇ', "ah")
|
||
, ('˚', "ao")
|
||
, ('~', "a~")
|
||
, ('˛', "ho")
|
||
, ('^', "ha")
|
||
, ('~', "ti")
|
||
, ('„', "Bq")
|
||
, ('‚', "bq")
|
||
, ('“', "lq")
|
||
, ('”', "rq")
|
||
, ('‘', "oq")
|
||
, ('’', "cq")
|
||
, ('\'', "aq")
|
||
, ('"', "dq")
|
||
, ('«', "Fo")
|
||
, ('»', "Fc")
|
||
, ('‹', "fo")
|
||
, ('›', "fc")
|
||
, ('¡', "r!")
|
||
, ('¿', "r?")
|
||
, ('—', "em")
|
||
, ('–', "en")
|
||
, ('‐', "hy")
|
||
, ('[', "lB")
|
||
, (']', "rB")
|
||
, ('{', "lC")
|
||
, ('}', "rC")
|
||
, ('⟨', "la")
|
||
, ('⟩', "ra")
|
||
, ('⎪', "bv")
|
||
, ('⎪', "braceex")
|
||
, ('⎡', "bracketlefttp")
|
||
, ('⎣', "bracketleftbt")
|
||
, ('⎢', "bracketleftex")
|
||
, ('⎤', "bracketrighttp")
|
||
, ('⎦', "bracketrightbt")
|
||
, ('⎥', "bracketrightex")
|
||
, ('╭', "lt")
|
||
, ('⎧', "bracelefttp")
|
||
, ('┥', "lk")
|
||
, ('⎨', "braceleftmid")
|
||
, ('╰', "lb")
|
||
, ('⎩', "braceleftbt")
|
||
, ('⎪', "braceleftex")
|
||
, ('╮', "rt")
|
||
, ('⎫', "bracerighttp")
|
||
, ('┝', "rk")
|
||
, ('⎬', "bracerightmid")
|
||
, ('╯', "rb")
|
||
, ('⎭', "bracerightbt")
|
||
, ('⎪', "bracerightex")
|
||
, ('⎛', "parenlefttp")
|
||
, ('⎝', "parenleftbt")
|
||
, ('⎜', "parenleftex")
|
||
, ('⎞', "parenrighttp")
|
||
, ('⎠', "parenrightbt")
|
||
, ('⎟', "parenrightex")
|
||
, ('←', "<-")
|
||
, ('→', "->")
|
||
, ('↔', "<>")
|
||
, ('↓', "da")
|
||
, ('↑', "ua")
|
||
, ('↕', "va")
|
||
, ('⇐', "lA")
|
||
, ('⇒', "rA")
|
||
, ('⇔', "hA")
|
||
, ('⇓', "dA")
|
||
, ('⇑', "uA")
|
||
, ('⇕', "vA")
|
||
, ('⎯', "an")
|
||
, ('|', "ba")
|
||
, ('│', "br")
|
||
, ('_', "ul")
|
||
, ('‾', "rn")
|
||
, ('_', "ru")
|
||
, ('¦', "bb")
|
||
, ('/', "sl")
|
||
, ('\\', "rs")
|
||
, ('○', "ci")
|
||
, ('·', "bu")
|
||
, ('‡', "dd")
|
||
, ('†', "dg")
|
||
, ('◊', "lz")
|
||
, ('□', "sq")
|
||
, ('¶', "ps")
|
||
, ('§', "sc")
|
||
, ('☜', "lh")
|
||
, ('☞', "rh")
|
||
, ('@', "at")
|
||
, ('#', "sh")
|
||
, ('↵', "CR")
|
||
, ('✓', "OK")
|
||
, ('©', "co")
|
||
, ('®', "rg")
|
||
, ('™', "tm")
|
||
, ('$', "Do")
|
||
, ('¢', "ct")
|
||
, ('€', "eu")
|
||
, ('€', "Eu")
|
||
, ('¥', "Ye")
|
||
, ('£', "Po")
|
||
, ('¤', "Cs")
|
||
, ('ƒ', "Fn")
|
||
, ('°', "de")
|
||
, ('‰', "%0")
|
||
, ('′', "fm")
|
||
, ('″', "sd")
|
||
, ('µ', "mc")
|
||
, ('ª', "Of")
|
||
, ('º', "Om")
|
||
, ('∧', "AN")
|
||
, ('∨', "OR")
|
||
, ('¬', "no")
|
||
, ('¬', "tno")
|
||
, ('∃', "te")
|
||
, ('∀', "fa")
|
||
, ('∋', "st")
|
||
, ('∴', "3d")
|
||
, ('∴', "tf")
|
||
, ('|', "or")
|
||
, ('½', "12")
|
||
, ('¼', "14")
|
||
, ('¾', "34")
|
||
, ('⅛', "18")
|
||
, ('⅜', "38")
|
||
, ('⅝', "58")
|
||
, ('⅞', "78")
|
||
, ('¹', "S1")
|
||
, ('²', "S2")
|
||
, ('³', "S3")
|
||
, ('+', "pl")
|
||
, ('−', "mi")
|
||
, ('∓', "-+")
|
||
, ('±', "+-")
|
||
, ('±', "t+-")
|
||
, ('·', "pc")
|
||
, ('⋅', "md")
|
||
, ('×', "mu")
|
||
, ('×', "tmu")
|
||
, ('⊗', "c*")
|
||
, ('⊕', "c+")
|
||
, ('÷', "di")
|
||
, ('÷', "tdi")
|
||
, ('⁄', "f/")
|
||
, ('∗', "**")
|
||
, ('≤', "<=")
|
||
, ('≥', ">=")
|
||
, ('≪', "<<")
|
||
, ('≫', ">>")
|
||
, ('=', "eq")
|
||
, ('≠', "!=")
|
||
, ('≡', "==")
|
||
, ('≢', "ne")
|
||
, ('≅', "=~")
|
||
, ('≃', "|=")
|
||
, ('∼', "ap")
|
||
, ('≈', "~~")
|
||
, ('≈', "~=")
|
||
, ('∝', "pt")
|
||
, ('∅', "es")
|
||
, ('∈', "mo")
|
||
, ('∉', "nm")
|
||
, ('⊂', "sb")
|
||
, ('⊄', "nb")
|
||
, ('⊃', "sp")
|
||
, ('⊅', "nc")
|
||
, ('⊆', "ib")
|
||
, ('⊇', "ip")
|
||
, ('∩', "ca")
|
||
, ('∪', "cu")
|
||
, ('∠', "/_")
|
||
, ('⊥', "pp")
|
||
, ('∫', "is")
|
||
, ('∫', "integral")
|
||
, ('∑', "sum")
|
||
, ('∏', "product")
|
||
, ('∐', "coproduct")
|
||
, ('∇', "gr")
|
||
, ('√', "sr")
|
||
, ('√', "sqrt")
|
||
-- , "radicalex"
|
||
-- "sqrtex"
|
||
, ('⌈', "lc")
|
||
, ('⌉', "rc")
|
||
, ('⌊', "lf")
|
||
, ('⌋', "rf")
|
||
, ('∞', "if")
|
||
, ('ℵ', "Ah")
|
||
, ('ℑ', "Im")
|
||
, ('ℜ', "Re")
|
||
, ('℘', "wp")
|
||
, ('∂', "pd")
|
||
, ('ℏ', "-h")
|
||
, ('ℏ', "hbar")
|
||
, ('Α', "*A")
|
||
, ('Β', "*B")
|
||
, ('Γ', "*G")
|
||
, ('Δ', "*D")
|
||
, ('Ε', "*E")
|
||
, ('Ζ', "*Z")
|
||
, ('Η', "*Y")
|
||
, ('Θ', "*H")
|
||
, ('Ι', "*I")
|
||
, ('Κ', "*K")
|
||
, ('Λ', "*L")
|
||
, ('Μ', "*M")
|
||
, ('Ν', "*N")
|
||
, ('Ξ', "*C")
|
||
, ('Ο', "*O")
|
||
, ('Π', "*P")
|
||
, ('Ρ', "*R")
|
||
, ('Σ', "*S")
|
||
, ('Τ', "*T")
|
||
, ('Υ', "*U")
|
||
, ('Φ', "*F")
|
||
, ('Χ', "*X")
|
||
, ('Ψ', "*Q")
|
||
, ('Ω', "*W")
|
||
, ('α', "*a")
|
||
, ('β', "*b")
|
||
, ('γ', "*g")
|
||
, ('δ', "*d")
|
||
, ('ε', "*e")
|
||
, ('ζ', "*z")
|
||
, ('η', "*y")
|
||
, ('θ', "*h")
|
||
, ('ι', "*i")
|
||
, ('κ', "*k")
|
||
, ('λ', "*l")
|
||
, ('μ', "*m")
|
||
, ('ν', "*n")
|
||
, ('ξ', "*c")
|
||
, ('ο', "*o")
|
||
, ('π', "*p")
|
||
, ('ρ', "*r")
|
||
, ('ς', "ts")
|
||
, ('σ', "*s")
|
||
, ('τ', "*t")
|
||
, ('υ', "*u")
|
||
, ('ϕ', "*f")
|
||
, ('χ', "*x")
|
||
, ('ψ', "*q")
|
||
, ('ω', "*w")
|
||
, ('ϑ', "+h")
|
||
, ('φ', "+f")
|
||
, ('ϖ', "+p")
|
||
, ('ϵ', "+e")
|
||
, ('♣', "CL")
|
||
, ('♠', "SP")
|
||
, ('♥', "HE")
|
||
, ('♦', "DI")
|
||
, ('˝' , "a\"")
|
||
, ('¯', "a-")
|
||
, ('˙', "a.")
|
||
, ('^', "a^")
|
||
, ('´', "aa")
|
||
, ('`', "ga")
|
||
, ('˘', "ab")
|
||
, ('¸', "ac")
|
||
, ('¨', "ad")
|
||
, ('ˇ', "ah")
|
||
, ('˚', "ao")
|
||
, ('~', "a~")
|
||
, ('˛', "ho")
|
||
, ('^', "ha")
|
||
, ('~', "ti")
|
||
]
|
||
|
||
-- use like: \\[E a^ aa]
|
||
combiningAccents :: [(Char, String)]
|
||
combiningAccents =
|
||
[ ('\779' , "a\"")
|
||
, ('\772', "a-")
|
||
, ('\775', "a.")
|
||
, ('\770', "a^")
|
||
, ('\769', "aa")
|
||
, ('\768', "ga")
|
||
, ('\774', "ab")
|
||
, ('\807', "ac")
|
||
, ('\776', "ad")
|
||
, ('\780', "ah")
|
||
, ('\778', "ao")
|
||
, ('\771', "a~")
|
||
, ('\808', "ho")
|
||
, ('\770', "ha")
|
||
, ('\771', "ti")
|
||
]
|