HaXml-1.25.4: Utilities for manipulating XML documents

Safe Haskell | Safe
Language | Haskell98

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
  - | StringMixed
  - | 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 # |
Methods (==) :: TypeDef -> TypeDef -> Bool # (/=) :: TypeDef -> TypeDef -> Bool #

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
StringMixed | mixed (#PCDATA | ... )*
String | string only (#PCDATA)
Defined Name |

Instances

Eq StructType # |
Methods (==) :: StructType -> StructType -> Bool # (/=) :: StructType -> StructType -> Bool #
Show StructType # |
Methods showsPrec :: Int -> StructType -> ShowS # show :: StructType -> String # showList :: [StructType] -> ShowS #

# 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 |
Fields xName :: String original XML name hName :: String mangled Haskell name

Instances

Eq Name # |
Methods (==) :: Name -> Name -> Bool # (/=) :: Name -> Name -> Bool #

name :: String -> Name #

Make a type 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.