module Generate.Generate
( module Generate.Generate
) where
import Protolude
import Text.PrettyPrint.Leijen.Text
import Generate.Pretty
import Generate.Types
prettyElement :: Element -> Doc
prettyElement (BF n)
= "BF" <+> prettyInteger n
prettyElement (EF ns)
= "EF" <+> align
( (if null ns then "[" else "[ ")
<> hcat (punctuate "\n, " (map prettyElement ns))
<$$> "]"
)
prettyElement (PF n)
= "PF" <+> prettyInteger n
prettyField :: Field -> Doc
prettyField (BinaryField fp p)
= "BinaryField" <+> prettyText fp <+> prettyInteger p
prettyField (ExtensionField fq fp p s k)
= align
( "ExtensionField" <+> prettyText fq <+> prettyText fp
<+> prettyText p <+> prettyText s <+> prettyField' k
)
where
prettyField' :: Maybe Field -> Doc
prettyField' (Just f) = "(Just" <$$> "(" <+> align (prettyField f) <$$> "))"
prettyField' _ = "Nothing"
prettyField (PrimeField f2m p)
= "PrimeField" <+> prettyText f2m <+> prettyInteger p