Text.XML.HaXml.DtdToHaskell.TypeDef

| HaXml | Parent | 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] |
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
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
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 0.4