Safe Haskell | Safe-Inferred |
---|
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.
- 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
- | StringMixed
- | String
- | Defined Name
- ppTypeDef :: TypeDef -> Doc
- ppHName :: Name -> Doc
- ppXName :: Name -> Doc
- ppAName :: Name -> Doc
- data Name = Name {}
- 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
DataDef Bool Name AttrFields Constructors | Bool for main/aux. |
EnumDef Name [Name] |
type Constructors = [(Name, [StructType])]Source
type AttrFields = [(Name, StructType)]Source
data StructType Source
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 |
StringMixed | mixed (#PCDATA | ... )* |
String | string only (#PCDATA) |
Defined Name |
Pretty-print a TypeDef
Name mangling
Need to keep both the XML and Haskell versions of a name.
name_a :: String -> String -> NameSource
Prefix an attribute enumeration type name with its containing element name.