hxt-9.3.1.22: A collection of tools for processing XML with Haskell.
CopyrightCopyright (C) 2010 Uwe Schmidt
LicenseMIT
MaintainerUwe Schmidt (uwe@fh-wedel.de)
Stabilitystable
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Text.XML.HXT.Arrow.XmlState.TypeDefs

Description

the basic state arrows for XML processing

A state is needed for global processing options, like encoding options, document base URI, trace levels and error message handling

The state is separated into a user defined state and a system state. The system state contains variables for error message handling, for tracing, for the document base for accessing XML documents with relative references, e.g. DTDs, and a global key value store. This assoc list has strings as keys and lists of XmlTrees as values. It is used to store arbitrary XML and text values, e.g. user defined global options.

The user defined part of the store is in the default case empty, defined as (). It can be extended with an arbitray data type

Synopsis

Documentation

data XIOSysState Source #

predefined system state data type with all components for the system functions, like trace, error handling, ...

Constructors

XIOSys 

Instances

Instances details
NFData XIOSysState Source # 
Instance details

Defined in Text.XML.HXT.Arrow.XmlState.TypeDefs

Methods

rnf :: XIOSysState -> () #

type IOSArrow b c = IOStateArrow () b c Source #

The arrow for stateful arrows with no user defined state

type IOStateArrow s b c = IOSLA (XIOState s) b c Source #

The arrow type for stateful arrows

data XIOState us Source #

state datatype consists of a system state and a user state the user state is not fixed

Constructors

XIOState 

Instances

Instances details
NFData us => NFData (XIOState us) Source # 
Instance details

Defined in Text.XML.HXT.Arrow.XmlState.TypeDefs

Methods

rnf :: XIOState us -> () #

getUserState :: IOStateArrow s b s Source #

read the user defined part of the state

changeUserState :: (b -> s -> s) -> IOStateArrow s b b Source #

change the user defined part of the state

setUserState :: IOStateArrow s s s Source #

set the user defined part of the state

withExtendedUserState :: s1 -> IOStateArrow (s1, s0) b c -> IOStateArrow s0 b c Source #

extend user state

Run an arrow with an extended user state component, The old component is stored together with a new one in a pair, the arrow is executed with this extended state, and the augmented state component is removed form the state when the arrow has finished its execution

withOtherUserState :: s1 -> IOStateArrow s1 b c -> IOStateArrow s0 b c Source #

change the type of user state

This conversion is useful, when running a state arrow with another structure of the user state, e.g. with () when executing some IO arrows

chgSysVar :: Selector XIOSysState c -> (b -> c -> c) -> IOStateArrow s b b Source #

setSysAttr :: String -> IOStateArrow s String String Source #

store a string in global state under a given attribute name

unsetSysAttr :: String -> IOStateArrow s b b Source #

remove an entry in global state, arrow input remains unchanged

getSysAttr :: String -> IOStateArrow s b String Source #

read an attribute value from global state

getAllSysAttrs :: IOStateArrow s b Attributes Source #

read all attributes from global state

setSysAttrInt :: String -> Int -> IOStateArrow s b b Source #

store an int value in global state

getSysAttrInt :: Int -> String -> IOStateArrow s b Int Source #

read an int value from global state

getSysAttrInt 0 myIntAttr

data Selector s a Source #

A Selector is a pair of an access function and a modifying function for reading and updating parts of a composite type

Constructors

S 

Fields

Instances

Instances details
Category Selector Source # 
Instance details

Defined in Data.Function.Selector

Methods

id :: forall (a :: k). Selector a a #

(.) :: forall (b :: k) (c :: k) (a :: k). Selector b c -> Selector a b -> Selector a c #

chgS :: Selector s a -> (a -> a) -> s -> s Source #

(.&&&.) :: Selector s a -> Selector s b -> Selector s (a, b) infixr 3 Source #