| HaXml-1.13.3: Utilities for manipulating XML documents | Contents | Index

Text.XML.HaXml.DtdToHaskell.TypeDef

Contents

Internal representation of types
Pretty-print a TypeDef
Name mangling

Description
Defines an internal representation of Haskell data/newtype definitions that correspond to the XML DTD types, and provides pretty-printers to convert these types into the `Doc` type of Text.PrettyPrint.HughesPJ.
Synopsis

data TypeDef

= DataDef Bool Name AttrFields Constructors
| EnumDef Name [Name]

type Constructors = [(Name, [StructType])]
type AttrFields = [(Name, StructType)]

data StructType

= Maybe StructType
| Defaultable StructType String
| List StructType
| List1 StructType
| Tuple [StructType]
| OneOf [StructType]
| Any
| String
| Defined Name

ppTypeDef :: TypeDef -> Doc
ppHName :: Name -> Doc
ppXName :: Name -> Doc
ppAName :: Name -> Doc

data Name = Name {

xName :: String
hName :: String

}

name :: String -> Name
name_ :: String -> Name
name_a :: String -> String -> Name
name_ac :: String -> String -> String -> Name
name_f :: String -> String -> Name
mangle :: String -> String
manglef :: String -> String

Internal representation of types
data TypeDef

Constructors

DataDef Bool Name AttrFields Constructors | Bool for main/aux.
EnumDef Name [Name] |

Instances

Eq TypeDef |

type Constructors = [(Name, [StructType])]
type AttrFields = [(Name, StructType)]
data StructType

Constructors

Maybe StructType |
Defaultable StructType String | String holds default value.
List StructType |
List1 StructType | Non-empty lists.
Tuple [StructType] |
OneOf [StructType] |
Any | XML's contentspec allows ANY
String |
Defined Name |

Instances

Eq StructType |
Show StructType |

Pretty-print a TypeDef
ppTypeDef :: TypeDef -> Doc
ppHName :: Name -> Doc
Pretty print Haskell name.
ppXName :: Name -> Doc
Pretty print XML name.
ppAName :: Name -> Doc
Pretty print Haskell attributes name.
Name mangling
data Name

Need to keep both the XML and Haskell versions of a name.
Constructors

Name |

xName :: String | original XML name
hName :: String | mangled Haskell name

Instances

Eq Name |

name :: String -> Name
Make a name valid in both XML and Haskell.
name_ :: String -> Name
Append an underscore to the Haskell version of the name.
name_a :: String -> String -> Name
Prefix an attribute enumeration type name with its containing element name.
name_ac :: String -> String -> String -> Name
Prefix an attribute enumeration constructor with its element-tag name, and its enumeration type name.
name_f :: String -> String -> Name
Prefix a field name with its enclosing element name.
mangle :: String -> String
Convert an XML name to a Haskell conid.
manglef :: String -> String
Convert an XML name to a Haskell varid.
Produced by Haddock version 2.7.2