HaTeX-qq-0.1.0.0: src/Text/LaTeX/QQ/Orphans.hs
{-# LANGUAGE DeriveDataTypeable, MultiParamTypeClasses, StandaloneDeriving #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Text.LaTeX.QQ.Orphans () where
import Data.Data (Data, Typeable)
import Data.Generics.Uniplate.Direct (Biplate (..), Uniplate (..), plate, (|*))
import Data.Generics.Uniplate.Direct ((|-), (||*), (||+))
import Text.LaTeX.Base.Syntax (LaTeX (..), MathType (..), Measure (..))
import Text.LaTeX.Base.Syntax (TeXArg (..))
instance Biplate TeXArg LaTeX where
biplate (FixArg t) = plate FixArg |* t
biplate (OptArg t) = plate OptArg |* t
biplate (MOptArg ts) = plate MOptArg ||* ts
biplate (SymArg t) = plate SymArg |* t
biplate (MSymArg ts) = plate MSymArg ||* ts
biplate (ParArg t) = plate ParArg |* t
biplate (MParArg ts) = plate MParArg ||* ts
instance Uniplate LaTeX where
uniplate (TeXRaw w) = plate TeXRaw |- w
uniplate (TeXComm s args) = plate TeXComm |- s ||+ args
uniplate (TeXCommS s) = plate TeXCommS |- s
uniplate (TeXEnv env args lat) = plate TeXEnv |- env ||+ args |* lat
uniplate (TeXMath typ lat) = plate TeXMath |- typ |* lat
uniplate (TeXLineBreak mm b) = plate TeXLineBreak |- mm |- b
uniplate (TeXBraces l) = plate TeXBraces |* l
uniplate (TeXComment t) = plate TeXComment |- t
uniplate (TeXSeq l r) = plate TeXSeq |* l |* r
uniplate TeXEmpty = plate TeXEmpty