1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-12-04 14:46:47 -05:00
elinks/src/dom/configuration.h
2022-01-26 18:49:44 +01:00

104 lines
3.1 KiB
C

#ifndef EL__DOM_CONFIGURATION_H
#define EL__DOM_CONFIGURATION_H
#ifdef __cplusplus
extern "C" {
#endif
struct dom_node;
struct dom_stack;
/** DOM Configuration
*
* The DOMConfiguration interface represents the configuration of a document.
* Using the configuration, it is possible to change the behaviour of how
* document normalization is done, such as replacing the CDATASection nodes
* with Text nodes.
*
* Note: Parameters are similar to features and properties used in SAX2.
*/
/** DOM configuration flags.
*
* The following list of parameters defined in the DOM: */
enum dom_config_flag {
/** "cdata-sections"
*
* The default is true and will keep CDATASection nodes in the
* document. When false, CDATASection nodes in the document are
* transformed into Text nodes. The new Text node is then combined with
* any adjacent Text node. */
DOM_CONFIG_CDATA_SECTIONS = 1,
/** "comments"
*
* If true (the default) keep Comment nodes in the document, else
* discard them. */
DOM_CONFIG_COMMENTS = 2,
/** "element-content-whitespace"
*
* The default is true and will keep all whitespaces in the document.
* When false, discard all Text nodes that contain only whitespaces. */
DOM_CONFIG_ELEMENT_CONTENT_WHITESPACE = 4,
/** "entities"
*
* When true (the default) keep EntityReference nodes in the document.
* When false, remove all EntityReference nodes from the document,
* putting the entity expansions directly in their place. Text nodes
* are normalized. Only unexpanded entity references are kept in the
* document. Note: This parameter does not affect Entity nodes. */
DOM_CONFIG_ENTITIES = 8,
/** "normalize-characters"
*
* The default is false, not to perform character normalization, else
* fully normalized the characters in the document as defined in
* appendix B of [XML 1.1]. */
DOM_CONFIG_NORMALIZE_CHARACTERS = 16,
/** "unknown"
*
* If false (default) nothing is done, else elements and attributes
* that are not known according to the built-in node info are
* discarded. */
DOM_CONFIG_UNKNOWN = 32,
/** "normalize-whitespace"
*
* If false (default) nothing is done, else all text nodes are
* normalized so that sequences of space characters are changed to
* being only a single space. */
DOM_CONFIG_NORMALIZE_WHITESPACE = 64,
};
struct dom_error;
struct dom_config {
/*enum dom_config_flag*/ unsigned int flags; /**< DOM configuration flags. */
/** A user defined error handler.
*
* Contains an error handler. If an error is encountered in the
* document, this handler is called. When called, DOMError.relatedData
* will contain the closest node to where the error occurred. If the
* implementation is unable to determine the node where the error
* occurs, DOMError.relatedData will contain the Document node.
*/
void (*error_handler)(struct dom_config *, struct dom_error *);
};
struct dom_config *
add_dom_config_normalizer(struct dom_stack *stack, struct dom_config *config,
/*enum dom_config_flag*/ unsigned int flags);
/*enum dom_config_flag*/ unsigned int
parse_dom_config(char *flaglist, char separator);
#ifdef __cplusplus
}
#endif
#endif