| Safe Haskell | None |
|---|
Game.Goatee.Sgf.Tree
Description
SGF data structures modelling the hierarchical game tree.
- data Collection = Collection {
- collectionTrees :: [Node]
- newtype CollectionWithDeepEquality = CollectionWithDeepEquality {}
- data Node = Node {
- nodeProperties :: [Property]
- nodeChildren :: [Node]
- newtype NodeWithDeepEquality = NodeWithDeepEquality {}
- emptyNode :: Node
- rootNode :: Maybe (Int, Int) -> Node
- findProperty :: Descriptor a => a -> Node -> Maybe Property
- findProperty' :: Descriptor a => a -> [Property] -> Maybe Property
- findPropertyValue :: ValuedDescriptor a v => a -> Node -> Maybe v
- findPropertyValue' :: ValuedDescriptor a v => a -> [Property] -> Maybe v
- addProperty :: Property -> Node -> Node
- addChild :: Node -> Node -> Node
- addChildAt :: Int -> Node -> Node -> Node
- validateNode :: Bool -> Bool -> Node -> [String]
Documentation
data Collection Source
An SGF collection of game trees.
Constructors
| Collection | |
Fields
| |
Instances
| Show Collection |
newtype CollectionWithDeepEquality Source
See NodeWithDeepEquality.
Constructors
| CollectionWithDeepEquality | |
Fields | |
Instances
An SGF game tree node. Unlike in the SGF spec, we represent a game tree with nodes uniformly, rather than having the separation between sequences and nodes.
Constructors
| Node | |
Fields
| |
Instances
| Show Node |
newtype NodeWithDeepEquality Source
A wrapper around Node with an Eq instance that considers two nodes
equal iff they contain the same properties (not necessarily in the same
order), and if they contain children (in the same order) whose nodes are
recursively equal.
This instance is not on Node directly because it is not the only obvious
sense of equality (only comparing properties would be another one), and it's
also potentially expensive.
Constructors
| NodeWithDeepEquality | |
Fields | |
Instances
findProperty :: Descriptor a => a -> Node -> Maybe PropertySource
Searches for a matching property in a node's property list.
findProperty' :: Descriptor a => a -> [Property] -> Maybe PropertySource
Searches for a matching property in a property list.
findPropertyValue :: ValuedDescriptor a v => a -> Node -> Maybe vSource
Retrieves the value of a property in a node's property list.
findPropertyValue' :: ValuedDescriptor a v => a -> [Property] -> Maybe vSource
Retrieves the value of a property in a property list.
addProperty :: Property -> Node -> NodeSource
Appends a property to a node's property list.
addChild :: Node -> Node -> NodeSource
addChild child parent appends a child node to a node's child list.
addChildAt :: Int -> Node -> Node -> NodeSource
addChildAt index child parent inserts a child node into a node's child
list at the given index, shifting all nodes at or after the given index to
the right. The index must be in the range [0, numberOfChildren].
validateNode :: Bool -> Bool -> Node -> [String]Source
Returns a list of validation errors for the current node, an empty list if no errors are detected.