diff options
author | John Coggeshall <john@php.net> | 2004-01-21 11:36:30 +0000 |
---|---|---|
committer | John Coggeshall <john@php.net> | 2004-01-21 11:36:30 +0000 |
commit | 289fb87a5e6a225c211510b851fe1728334f2b4d (patch) | |
tree | ef8619941817ef9a108a5f44a0231b1ec70c9d38 | |
parent | 6b642ebfc512a17c59bfc49e077721eec30a0703 (diff) | |
download | php-git-289fb87a5e6a225c211510b851fe1728334f2b4d.tar.gz |
Cleaning up the 4.3 branch to remove the ZE2 stuff that was laying around
and fixed a bug we fixed earlier in HEAD
-rw-r--r-- | ext/tidy/README | 72 | ||||
-rw-r--r-- | ext/tidy/TODO | 2 | ||||
-rw-r--r-- | ext/tidy/examples/dumpit.php | 93 | ||||
-rw-r--r-- | ext/tidy/examples/urlgrab.php | 60 | ||||
-rw-r--r-- | ext/tidy/php_tidy.h | 110 | ||||
-rw-r--r-- | ext/tidy/tests/007.phpt | 6 | ||||
-rw-r--r-- | ext/tidy/tidy.c | 884 |
7 files changed, 7 insertions, 1220 deletions
diff --git a/ext/tidy/README b/ext/tidy/README index 2d4e015176..1ae64ff629 100644 --- a/ext/tidy/README +++ b/ext/tidy/README @@ -1,23 +1,12 @@ README FOR ext/tidy by John Coggeshall <john@php.net> -Tidy Version: 0.7b - Tidy is an extension based on Libtidy (http://tidy.sf.net/) and allows a PHP developer to clean, repair, and traverse HTML, XHTML, and XML documents -- including ones with embedded scripting languages such as PHP or ASP within them using OO constructs. ---------------------------------------------------------------------------------------- -!! Important Note !! ---------------------------------------------------------------------------------------- -At this time libtidy has a small memory leak inside the ParseConfigFileEnc() function -used to load configuration from a file. If you intend to use this functionality apply -the "libtidy.txt" patch (cd tidy/src/; patch -p0 < libtidy.txt) to libtidy sources and -then recompile libtidy. ---------------------------------------------------------------------------------------- -The Tidy extension has two separate APIs, one for general parsing, cleaning, and -repairing and another for document traversal. The general API is provided below: +The general API is provided below: tidy_create() Reinitialize the tidy engine tidy_parse_file($file) Parse the document stored in $file @@ -60,63 +49,4 @@ repairing and another for document traversal. The general API is provided below: tidy_save_config($file) Saves the current config to $file -Beyond these general-purpose API functions, Tidy also supports the following -functions which are used to retrieve an object for document traversal: - - tidy_get_root() Returns an object starting at the root of the - document - tidy_get_head() Returns an object starting at the <HEAD> tag - tidy_get_html() Returns an object starting at the <HTML> tag - tidy_get_body() Returns an object starting at the <BODY> tag - -All Navigation of the specified document is done via the PHP5 object constructs. -There are two types of objects which Tidy can create. The first is TidyNode, which -represents HTML Tags, Text, and more (see the TidyNode_Type Constants). The second -is TidyAttr, which represents an attribute within an HTML tag (TidyNode). The -functionality of these objects is represented by the following schema: - -class TidyNode { - - public $name; // name of node (i.e. HEAD) - public $value; // value of node (everything between tags) - public $type; // type of node (text, php, asp, etc.) - public $id; // id of node (i.e. TIDY_TAG_HEAD) - - public function attributes(); // an array of attributes (see TidyAttr) - public function children(); // an array of child nodes - - function has_siblings(); // any sibling nodes? - function has_children(); // any child nodes? - - function is_comment(); // is node a comment? - function is_xhtml(); // is document XHTML? - function is_xml(); // is document generic XML (not HTML/XHTML) - function is_text(); // is node text? - function is_html(); // is node an HTML tag? - - function is_jste(); // is jste block? - function is_asp(); // is Microsoft ASP block? - function is_php(); // is PHP block? - - function next(); // returns next node - function prev(); // returns prev node - - /* Searches for a particular attribute in the current node based - on node ID. If found returns a TidyAttr object for it */ - function get_attr($attr_id); - - /* -} - -class TidyAttr { - - public $name; // attribute name i.e. HREF - public $value; // attribute value - public $id; // attribute id i.e. TIDY_ATTR_HREF - -} - -Examples of using these objects to navigate the tree can be found in the examples/ -directory (I suggest looking at urlgrab.php and dumpit.php) - E-mail thoughts, suggestions, patches, etc. to <john@php.net> diff --git a/ext/tidy/TODO b/ext/tidy/TODO index 699c207dcb..f23a764794 100644 --- a/ext/tidy/TODO +++ b/ext/tidy/TODO @@ -1,3 +1,3 @@ TODO - - Implement get_nodes() method + diff --git a/ext/tidy/examples/dumpit.php b/ext/tidy/examples/dumpit.php deleted file mode 100644 index e77b7b9323..0000000000 --- a/ext/tidy/examples/dumpit.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - /* - * dumpit.php - * - * a command-line script which dumps the given HTML, PHP, ASP, XHTML, etc. - * file as it is represented in the document model. - * - * By: John Coggeshall <john@php.net> - * - * Usage; php dumpit.php <filename> - */ - - tidy_parse_file($_SERVER['argv'][1]); - - /* Optionally you can do this here if you want to fix up the document */ - - /* tidy_clean_repair(); */ - - $tree = tidy_get_root(); - dump_tree($tree); - echo "\n"; - - function node_type($type) { - - switch($type) { - - case TIDY_NODETYPE_ROOT: return "Root Node"; - case TIDY_NODETYPE_DOCTYPE: return "DocType Node"; - case TIDY_NODETYPE_COMMENT: return "Comment Node"; - case TIDY_NODETYPE_PROCINS: return "ProcIns Node"; - case TIDY_NODETYPE_TEXT: return "Text Node"; - case TIDY_NODETYPE_START: return "Start Node"; - case TIDY_NODETYPE_END: return "End Node"; - case TIDY_NODETYPE_STARTEND: return "Start/End Node"; - case TIDY_NODETYPE_CDATA: return "CDATA Node"; - case TIDY_NODETYPE_SECTION: return "Section Node"; - case TIDY_NODETYPE_ASP: return "ASP Source Code Node"; - case TIDY_NODETYPE_PHP: return "PHP Source Code Node"; - case TIDY_NODETYPE_JSTE: return "JSTE Source Code"; - case TIDY_NODETYPE_XMLDECL: return "XML Declaration Node"; - default: return "Unknown Node"; - } - } - - function do_leaf($string, $indent) { - for($i = 0; $i < $indent; $i++) { - echo " "; - } - echo $string; - } - - function dump_tree($node, $indent = 0) { - if($node) { - /* Put something there if the node name is empty */ - $nodename = trim(strtoupper($node->name)); - $nodename = (empty($nodename)) ? "[EMPTY]" : $nodename; - - /* Generate the Node, and a pretty name for it */ - do_leaf(" + $nodename (".node_type($node->type).")\n", $indent); - - /* Check to see if this node is a text node. Text nodes are - generated by start/end tags and contain the text in between. - i.e. <B>foo</B> will create a text node with $node->value - equal to 'foo' */ - if($node->type == TIDY_NODETYPE_TEXT) { - do_leaf(" |\n", $indent); - do_leaf(" +---- Value: '{$node->value}'\n", $indent); - } - - /* Any attributes on this node? */ - if(count($node->attributes())) { - do_leaf(" |\n", $indent); - do_leaf(" +---- Attributes\n", $indent); - - /* Cycle through the attributes and display them and their values. */ - foreach($node->attributes() as $attrib) { - do_leaf(" +--{$attrib->name}\n", $indent); - do_leaf(" | +-- Value: {$attrib->value}\n", $indent); - } - } - - /* Recurse along the children to generate the remaining nodes */ - if($node->has_children()) { - foreach($node->children() as $child) { - dump_tree($child, $indent + 3); - } - } - } - } - - echo tidy_get_output(); - -?>
\ No newline at end of file diff --git a/ext/tidy/examples/urlgrab.php b/ext/tidy/examples/urlgrab.php deleted file mode 100644 index 7896792ea5..0000000000 --- a/ext/tidy/examples/urlgrab.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php - - /* - * urlgrab.php - * - * A simple command-line utility to extract all of the URLS contained - * within <A HREF> tags from a document. - * - * By: John Coggeshall <john@php.net> - * - * Usage: php urlgrab.php <file> - * - */ - - /* Parse the document */ - tidy_parse_file($_SERVER['argv'][1]); - - /* Fix up the document */ - tidy_clean_repair(); - - /* Get an object representing everything from the <HTML> tag in */ - $html = tidy_get_html(); - - /* Traverse the document tree */ - print_r(get_links($html)); - - function get_links($node) { - $urls = array(); - - /* Check to see if we are on an <A> tag or not */ - if($node->id == TIDY_TAG_A) { - /* If we are, find the HREF attribute */ - $attrib = $node->get_attr(TIDY_ATTR_HREF); - if($attrib) { - /* Add the value of the HREF attrib to $urls */ - $urls[] = $attrib->value; - } - - } - - /* Are there any children? */ - if($node->has_children()) { - - /* Traverse down each child recursively */ - foreach($node->children() as $child) { - - /* Append the results from recursion to $urls */ - foreach(get_links($child) as $url) { - - $urls[] = $url; - - } - - } - } - - return $urls; - } - -?>
\ No newline at end of file diff --git a/ext/tidy/php_tidy.h b/ext/tidy/php_tidy.h index e170d37086..1d649a52cc 100644 --- a/ext/tidy/php_tidy.h +++ b/ext/tidy/php_tidy.h @@ -55,78 +55,6 @@ extern zend_module_entry tidy_module_entry; #define REMOVE_NEWLINE(_z) _z->value.str.val[_z->value.str.len-1] = '\0'; _z->value.str.len--; -#define TIDY_TAG_CONST(tag) REGISTER_LONG_CONSTANT("TIDY_TAG_" #tag, TidyTag_##tag, CONST_CS | CONST_PERSISTENT) -#define TIDY_ATTR_CONST(attr) REGISTER_LONG_CONSTANT("TIDY_ATTR_" #attr, TidyAttr_##attr, CONST_CS | CONST_PERSISTENT) -#define TIDY_NODE_CONST(name, type) REGISTER_LONG_CONSTANT("TIDY_NODETYPE_" #name, TidyNode_##type, CONST_CS | CONST_PERSISTENT) - -#define PHP_ME_MAPPING(name, func_name, arg_types) \ - ZEND_NAMED_FE(name, ZEND_FN(func_name), arg_types) - -#define PHP_NODE_METHOD(name) PHP_FUNCTION(tnm_ ##name) -#define PHP_ATTR_METHOD(name) PHP_FUNCTION(tam_ ##name) -#define PHP_NODE_ME(name, param) PHP_ME_MAPPING(name, tnm_ ##name, param) -#define PHP_ATTR_ME(name, param) PHP_ME_MAPPING(name, tam_ ##name, param) - - - -#define TIDY_REGISTER_OBJECT(_type, _object, _ptr) \ - { \ - tidy_object *obj; \ - obj = (tidy_object*)zend_object_store_get_object(_object TSRMLS_CC); \ - obj->type = is_ ## _type; \ - obj->u._type = _ptr; \ - } - -#define REGISTER_TIDY_CLASS(name, parent) \ - { \ - zend_class_entry ce; \ - INIT_CLASS_ENTRY(ce, "tidy_" # name, tidy_funcs_ ## name); \ - ce.create_object = tidy_object_new_ ## name; \ - tidy_ce_ ## name = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); \ - tidy_ce_ ## name->ce_flags |= ZEND_ACC_FINAL_CLASS; \ - memcpy(&tidy_object_handlers_ ## name, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); \ - tidy_object_handlers_ ## name.clone_obj = NULL; \ - } - -#define GET_THIS_CONTAINER() \ - PHPTidyObj *obj; \ - { \ - zval *object = getThis(); \ - obj = (PHPTidyObj *)zend_object_store_get_object(object TSRMLS_CC); \ - } - -#define INSTANCIATE_NODE(_zval, _container, _node) \ - tidy_instanciate(tidy_ce_node, _zval TSRMLS_CC); \ - _container = (PHPTidyObj *) zend_object_store_get_object(_zval TSRMLS_CC); \ - _container->node = _node; \ - _container->attr = NULL; \ - _container->type = is_node; \ - tidy_add_default_properities(_container, is_node TSRMLS_CC); - -#define INSTANCIATE_ATTR(_zval, _container, _attr) \ - tidy_instanciate(tidy_ce_attr, _zval TSRMLS_CC); \ - _container = (PHPTidyObj *) zend_object_store_get_object(_zval TSRMLS_CC); \ - _container->node = NULL; \ - _container->attr = _attr; \ - _container->type = is_attr; \ - tidy_add_default_properities(_container, is_attr TSRMLS_CC); - -#define PHP_NODE_METHOD_IS_TYPE(_type, _const) \ -PHP_NODE_METHOD(is_ ##_type) \ -{ \ - GET_THIS_CONTAINER(); \ - if(tidyNodeGetType(obj->node) == _const) {\ - RETURN_TRUE; \ - } else { \ - RETURN_FALSE; \ - } \ -} - -typedef enum { - is_node, - is_attr -} tidy_obj_type; - struct _PHPTidyDoc { TidyDoc doc; @@ -135,14 +63,6 @@ struct _PHPTidyDoc { }; typedef struct _PHPTidyDoc PHPTidyDoc; -typedef struct _PHPTidyObj PHPTidyObj; - -struct _PHPTidyObj { - zend_object std; - TidyNode node; - TidyAttr attr; - tidy_obj_type type; -}; PHP_MINIT_FUNCTION(tidy); @@ -177,39 +97,9 @@ PHP_FUNCTION(tidy_load_config_enc); PHP_FUNCTION(tidy_set_encoding); PHP_FUNCTION(tidy_save_config); -PHP_FUNCTION(tidy_get_root); -PHP_FUNCTION(tidy_get_html); -PHP_FUNCTION(tidy_get_head); -PHP_FUNCTION(tidy_get_body); - -PHP_NODE_METHOD(__construct); -PHP_NODE_METHOD(attributes); -PHP_NODE_METHOD(children); - -PHP_NODE_METHOD(has_children); -PHP_NODE_METHOD(has_siblings); -PHP_NODE_METHOD(is_comment); -PHP_NODE_METHOD(is_html); -PHP_NODE_METHOD(is_xhtml); -PHP_NODE_METHOD(is_xml); -PHP_NODE_METHOD(is_text); -PHP_NODE_METHOD(is_jste); -PHP_NODE_METHOD(is_asp); -PHP_NODE_METHOD(is_php); - -PHP_NODE_METHOD(next); -PHP_NODE_METHOD(prev); -PHP_NODE_METHOD(get_attr); -PHP_NODE_METHOD(get_nodes); - /* resource dtor */ void dtor_TidyDoc(zend_rsrc_list_entry * TSRMLS_DC); -/* constant register helpers */ -void _php_tidy_register_nodetypes(INIT_FUNC_ARGS); -void _php_tidy_register_tags(INIT_FUNC_ARGS); -void _php_tidy_register_attributes(INIT_FUNC_ARGS); - ZEND_BEGIN_MODULE_GLOBALS(tidy) PHPTidyDoc *tdoc; zend_bool used; diff --git a/ext/tidy/tests/007.phpt b/ext/tidy/tests/007.phpt index 9987677df6..0fd79eaa3d 100644 --- a/ext/tidy/tests/007.phpt +++ b/ext/tidy/tests/007.phpt @@ -10,17 +10,17 @@ Verbose tidy_setopt() / tidy_getopt() echo "Current Value of 'tidy-mark': "; var_dump(tidy_getopt("tidy-mark")); - tidy_setopt($tidy, "tidy-mark", true); + tidy_setopt("tidy-mark", true); echo "\nNew Value of 'tidy-mark': "; var_dump(tidy_getopt("tidy-mark")); echo "Current Value of 'error-file': "; var_dump(tidy_getopt("error-file")); - tidy_setopt($tidy, "error-file", "foobar"); + tidy_setopt("error-file", "foobar"); echo "\nNew Value of 'error-file': "; var_dump(tidy_getopt("error-file")); echo "Current Value of 'tab-size': "; var_dump(tidy_getopt("tab-size")); - tidy_setopt($tidy, "tab-size", 10); + tidy_setopt("tab-size", 10); echo "\nNew Value of 'tab-size': "; var_dump(tidy_getopt("tab-size")); ?> diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index c67e29c271..b42a3652c6 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -69,70 +69,9 @@ function_entry tidy_functions[] = { PHP_FE(tidy_load_config_enc, NULL) PHP_FE(tidy_set_encoding, NULL) PHP_FE(tidy_save_config, NULL) - -#ifdef ZEND_ENGINE_2 - PHP_FE(tidy_get_root, NULL) - PHP_FE(tidy_get_head, NULL) - PHP_FE(tidy_get_html, NULL) - PHP_FE(tidy_get_body, NULL) -#endif - {NULL, NULL, NULL} }; -#ifdef ZEND_ENGINE_2 -#include "zend_default_classes.h" - -static void tidy_object_dtor(void *object, zend_object_handle handle TSRMLS_DC); -static void tidy_object_new(zend_class_entry *class_type, zend_object_handlers *handlers, zend_object_value *retval TSRMLS_DC); - -static zend_object_value tidy_object_new_node(zend_class_entry *class_type TSRMLS_DC); -static zend_object_value tidy_object_new_attr(zend_class_entry *class_type TSRMLS_DC); -static zend_object_value tidy_object_new_exception(zend_class_entry *class_type TSRMLS_DC); - -static zend_class_entry *tidy_get_ce_node(zval *object TSRMLS_DC); -static zend_class_entry *tidy_get_ce_attr(zval *object TSRMLS_DC); - -static zval * tidy_instanciate(zend_class_entry *pce, zval *object TSRMLS_DC); - -zend_class_entry *tidy_ce_node, *tidy_ce_attr, - *tidy_ce_exception; - -static zend_object_handlers tidy_object_handlers_node; -static zend_object_handlers tidy_object_handlers_attr; -static zend_object_handlers tidy_object_handlers_exception; - -function_entry tidy_funcs_node[] = { - - PHP_NODE_ME(__construct, NULL) - PHP_NODE_ME(attributes, NULL) - PHP_NODE_ME(children, NULL) - - PHP_NODE_ME(has_children, NULL) - PHP_NODE_ME(has_siblings, NULL) - PHP_NODE_ME(is_comment, NULL) - PHP_NODE_ME(is_html, NULL) - PHP_NODE_ME(is_text, NULL) - PHP_NODE_ME(is_jste, NULL) - PHP_NODE_ME(is_asp, NULL) - PHP_NODE_ME(is_php, NULL) - - PHP_NODE_ME(next, NULL) - PHP_NODE_ME(prev, NULL) - PHP_NODE_ME(get_attr, NULL) - /*PHP_NODE_ME(get_nodes, NULL) TODO */ - {NULL, NULL, NULL} -}; - -function_entry tidy_funcs_attr[] = { - {NULL, NULL, NULL} -}; - -function_entry tidy_funcs_exception[] = { - {NULL, NULL, NULL} -}; - -#endif zend_module_entry tidy_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 @@ -290,22 +229,8 @@ static void php_tidy_quick_repair(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_fil PHP_MINIT_FUNCTION(tidy) { - REGISTER_INI_ENTRIES(); - -#ifdef ZEND_ENGINE_2 - REGISTER_TIDY_CLASS(node, NULL); - REGISTER_TIDY_CLASS(attr, NULL); - REGISTER_TIDY_CLASS(exception, zend_exception_get_default()); - - tidy_object_handlers_node.get_class_entry = tidy_get_ce_node; - tidy_object_handlers_attr.get_class_entry = tidy_get_ce_attr; -#endif - - _php_tidy_register_tags(INIT_FUNC_ARGS_PASSTHRU); - _php_tidy_register_attributes(INIT_FUNC_ARGS_PASSTHRU); - _php_tidy_register_nodetypes(INIT_FUNC_ARGS_PASSTHRU); - ZEND_INIT_MODULE_GLOBALS(tidy, tidy_globals_ctor, tidy_globals_dtor); + REGISTER_INI_ENTRIES(); return SUCCESS; } @@ -573,6 +498,7 @@ PHP_FUNCTION(tidy_get_config) add_assoc_bool(return_value, opt_name, (long)opt_value); break; } + } return; @@ -880,810 +806,4 @@ PHP_FUNCTION(tidy_getopt) } /* }}} */ -#ifdef ZEND_ENGINE_2 -static void tidy_object_dtor(void *object, zend_object_handle handle TSRMLS_DC) -{ - PHPTidyObj *intern = (PHPTidyObj *)object; - - zend_hash_destroy(intern->std.properties); - FREE_HASHTABLE(intern->std.properties); - - efree(object); -} - -static void tidy_object_new(zend_class_entry *class_type, zend_object_handlers *handlers, zend_object_value *retval TSRMLS_DC) -{ - PHPTidyObj *intern; - zval *tmp; - - intern = emalloc(sizeof(PHPTidyObj)); - memset(intern, 0, sizeof(PHPTidyObj)); - intern->std.ce = class_type; - - ALLOC_HASHTABLE(intern->std.properties); - zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0); - zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); - - retval->handle = zend_objects_store_put(intern, tidy_object_dtor, NULL TSRMLS_CC); - retval->handlers = handlers; -} - -static zend_object_value tidy_object_new_node(zend_class_entry *class_type TSRMLS_DC) -{ - zend_object_value retval; - tidy_object_new(class_type, &tidy_object_handlers_node, &retval TSRMLS_CC); - return retval; -} - -static zend_object_value tidy_object_new_attr(zend_class_entry *class_type TSRMLS_DC) -{ - zend_object_value retval; - tidy_object_new(class_type, &tidy_object_handlers_attr, &retval TSRMLS_CC); - return retval; - -} - -static zend_object_value tidy_object_new_exception(zend_class_entry *class_type TSRMLS_DC) -{ - zend_object_value retval; - tidy_object_new(class_type, &tidy_object_handlers_exception, &retval TSRMLS_CC); - return retval; - -} - -static zend_class_entry *tidy_get_ce_node(zval *object TSRMLS_DC) -{ - return tidy_ce_node; -} - -static zend_class_entry *tidy_get_ce_attr(zval *object TSRMLS_DC) -{ - return tidy_ce_attr; -} - -static zval * tidy_instanciate(zend_class_entry *pce, zval *object TSRMLS_DC) -{ - if (!object) { - ALLOC_ZVAL(object); - } - Z_TYPE_P(object) = IS_OBJECT; - object_init_ex(object, pce); - object->refcount = 1; - object->is_ref = 1; - return object; -} - -#define ADD_PROPERITY_STRING(_table, _key, _string) \ - { \ - zval *tmp; \ - MAKE_STD_ZVAL(tmp); \ - if(_string) { \ - ZVAL_STRING(tmp, (char *)_string, 1); \ - } else { \ - ZVAL_EMPTY_STRING(tmp); \ - } \ - zend_hash_update(_table, #_key, sizeof(#_key), (void *)&tmp, sizeof(zval *), NULL); \ - } - -#define ADD_PROPERITY_LONG(_table, _key, _long) \ - { \ - zval *tmp; \ - MAKE_STD_ZVAL(tmp); \ - ZVAL_LONG(tmp, _long); \ - zend_hash_update(_table, #_key, sizeof(#_key), (void *)&tmp, sizeof(zval *), NULL); \ - } - -static void tidy_add_default_properities(PHPTidyObj *obj, tidy_obj_type type TSRMLS_DC) { - - TidyBuffer buf; - - switch(type) { - - case is_node: - memset(&buf, 0, sizeof(buf)); - tidyNodeGetText(TG(tdoc)->doc, obj->node, &buf); - ADD_PROPERITY_STRING(obj->std.properties, value, buf.bp); - tidyBufFree(&buf); - - fprintf(stderr, "type: %d\n",tidyNodeGetType(obj->node)); - ADD_PROPERITY_STRING(obj->std.properties, name, tidyNodeGetName(obj->node)); - ADD_PROPERITY_LONG(obj->std.properties, type, tidyNodeGetType(obj->node)); - switch(tidyNodeGetType(obj->node)) { - - case TidyNode_Root: - case TidyNode_DocType: - case TidyNode_Text: - case TidyNode_Comment: - break; - default: - ADD_PROPERITY_LONG(obj->std.properties, id, tidyNodeGetId(obj->node)); - } - - break; - case is_attr: - ADD_PROPERITY_STRING(obj->std.properties, name, tidyAttrName(obj->attr)); - ADD_PROPERITY_STRING(obj->std.properties, value, tidyAttrValue(obj->attr)); - ADD_PROPERITY_LONG(obj->std.properties, id, tidyAttrGetId(obj->attr)); - break; - } - -} -/* {{{ proto TidyNode tidy_get_root() - Returns a TidyNode Object representing the root of the tidy parse tree */ -PHP_FUNCTION(tidy_get_root) -{ - PHPTidyObj *obj; - - if(ZEND_NUM_ARGS()) { - WRONG_PARAM_COUNT; - } - - TIDY_PARSED_CHECK(); - - tidy_instanciate(tidy_ce_node, return_value TSRMLS_CC); - obj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - obj->node = tidyGetRoot(TG(tdoc)->doc); - obj->attr = NULL; - obj->type = is_node; - - tidy_add_default_properities(obj, is_node TSRMLS_CC); - -} -/* }}} */ - -/* {{{ proto TidyNode tidy_get_html() - Returns a TidyNode Object starting from the <HTML> tag of the tidy parse tree */ -PHP_FUNCTION(tidy_get_html) -{ - PHPTidyObj *obj; - - if(ZEND_NUM_ARGS()) { - WRONG_PARAM_COUNT; - } - - TIDY_PARSED_CHECK(); - - tidy_instanciate(tidy_ce_node, return_value TSRMLS_CC); - obj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - obj->node = tidyGetHtml(TG(tdoc)->doc); - obj->attr = NULL; - obj->type = is_node; - - tidy_add_default_properities(obj, is_node TSRMLS_CC); -} -/* }}} */ - -/* {{{ proto TidyNode tidy_get_head() - Returns a TidyNode Object starting from the <HEAD> tag of the tidy parse tree */ -PHP_FUNCTION(tidy_get_head) -{ - PHPTidyObj *obj; - - if(ZEND_NUM_ARGS()) { - WRONG_PARAM_COUNT; - } - - TIDY_PARSED_CHECK(); - - tidy_instanciate(tidy_ce_node, return_value TSRMLS_CC); - obj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - obj->node = tidyGetHead(TG(tdoc)->doc); - obj->attr = NULL; - obj->type = is_node; - - tidy_add_default_properities(obj, is_node TSRMLS_CC); -} -/* }}} */ - -/* {{{ proto TidyNode tidy_get_body(resource tidy) - Returns a TidyNode Object starting from the <BODY> tag of the tidy parse tree */ -PHP_FUNCTION(tidy_get_body) -{ - PHPTidyObj *obj; - - if(ZEND_NUM_ARGS()) { - WRONG_PARAM_COUNT; - } - - TIDY_PARSED_CHECK(); - - tidy_instanciate(tidy_ce_node, return_value TSRMLS_CC); - obj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - obj->node = tidyGetBody(TG(tdoc)->doc); - obj->attr = NULL; - obj->type = is_node; - - tidy_add_default_properities(obj, is_node TSRMLS_CC); -} -/* }}} */ - -/* {{{ proto void tidy_node::tidy_node() - Constructor. */ -PHP_NODE_METHOD(__construct) -{ -} -/* }}} */ - -/* {{{ proto tidy_attr tidy_node::attributes() - Returns an array of attribute objects for node */ -PHP_NODE_METHOD(attributes) -{ - TidyAttr tempattr; - zval *object; - PHPTidyObj *objtemp; - GET_THIS_CONTAINER(); - - tempattr = tidyAttrFirst(obj->node); - - if(tempattr) { - array_init(return_value); - - do { - - MAKE_STD_ZVAL(object); - INSTANCIATE_ATTR(object, objtemp, tempattr); - add_next_index_zval(return_value, object); - - } while((tempattr = tidyAttrNext(tempattr))); - } -} -/* }}} */ - - - -/* {{{ proto tidy_node tidy_node::children() - Returns an array of child nodes */ -PHP_NODE_METHOD(children) -{ - TidyNode tempnode; - zval *object; - PHPTidyObj *objtemp; - GET_THIS_CONTAINER(); - - tempnode = tidyGetChild(obj->node); - - if(tempnode) { - array_init(return_value); - do { - - MAKE_STD_ZVAL(object); - INSTANCIATE_NODE(object, objtemp, tempnode); - add_next_index_zval(return_value, object); - - } while((tempnode = tidyGetNext(tempnode))); - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::has_children() - Returns true if this node has children */ -PHP_NODE_METHOD(has_children) -{ - GET_THIS_CONTAINER(); - - if(tidyGetChild(obj->node)) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } - -} -/* }}} */ - -/* {{{ proto boolean tidy_node::has_siblings() - Returns true if this node has siblings */ -PHP_NODE_METHOD(has_siblings) -{ - GET_THIS_CONTAINER(); - - if(tidyGetNext(obj->node)) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } - -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_comment() - Returns true if this node represents a comment */ -PHP_NODE_METHOD(is_comment) -{ - GET_THIS_CONTAINER(); - if(tidyNodeGetType(obj->node) == TidyNode_Comment) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } - -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_html() - Returns true if this node is part of a HTML document */ -PHP_NODE_METHOD(is_html) -{ - GET_THIS_CONTAINER(); - - if(tidyNodeGetType(obj->node) & (TidyNode_Start | TidyNode_End | TidyNode_StartEnd)) { - RETURN_TRUE; - } - RETURN_FALSE; - -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_xhtml() - Returns true if this node is part of a XHTML document */ -PHP_NODE_METHOD(is_xhtml) -{ - GET_THIS_CONTAINER(); - if(tidyDetectedXhtml(TG(tdoc)->doc)) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_xml() - Returns true if this node is part of a XML document */ -PHP_NODE_METHOD(is_xml) -{ - GET_THIS_CONTAINER(); - if(tidyDetectedGenericXml(TG(tdoc)->doc)) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ -/* {{{ proto boolean tidy_node::is_text() - Returns true if this node represents text (no markup) */ -PHP_NODE_METHOD(is_text) -{ - GET_THIS_CONTAINER(); - if(tidyNodeGetType(obj->node) == TidyNode_Text) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } - -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_jste() - Returns true if this node is JSTE */ -PHP_NODE_METHOD(is_jste) -{ - GET_THIS_CONTAINER(); - if(tidyNodeGetType(obj->node) == TidyNode_Jste) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_asp() - Returns true if this node is ASP */ -PHP_NODE_METHOD(is_asp) -{ - GET_THIS_CONTAINER(); - if(tidyNodeGetType(obj->node) == TidyNode_Asp) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto boolean tidy_node::is_jsp() - Returns true if this node is JSP */ -PHP_NODE_METHOD(is_php) -{ - GET_THIS_CONTAINER(); - if(tidyNodeGetType(obj->node) == TidyNode_Php) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto tidy_node tidy_node::next() - Returns the next sibling to this node */ -PHP_NODE_METHOD(next) -{ - PHPTidyObj *obj; - - if(ZEND_NUM_ARGS()) { - WRONG_PARAM_COUNT; - } - - TIDY_PARSED_CHECK(); - - tidy_instanciate(tidy_ce_node, return_value TSRMLS_CC); - obj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - obj->node = tidyGetNext(obj->node); - obj->attr = NULL; - obj->type = is_node; - - tidy_add_default_properities(obj, is_node TSRMLS_CC); -} -/* }}} */ - -/* {{{ proto tidy_node tidy_node::prev() - Returns the previous sibiling to this node */ -PHP_NODE_METHOD(prev) -{ - PHPTidyObj *obj; - - if(ZEND_NUM_ARGS()) { - WRONG_PARAM_COUNT; - } - - TIDY_PARSED_CHECK(); - - tidy_instanciate(tidy_ce_node, return_value TSRMLS_CC); - obj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - obj->node = tidyGetPrev(obj->node); - obj->attr = NULL; - obj->type = is_node; - - tidy_add_default_properities(obj, is_node TSRMLS_CC); -} -/* }}} */ - -/* {{{ proto tidy_attr tidy_node::get_attr(int attrib_id) - Return the attribute with the provided attribute id */ -PHP_NODE_METHOD(get_attr) -{ - TidyAttr tempattr; - long param; - GET_THIS_CONTAINER(); - - if(ZEND_NUM_ARGS() != 1) { - WRONG_PARAM_COUNT; - } - - TIDY_PARSED_CHECK(); - - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", ¶m) == FAILURE) { - RETURN_FALSE; - } - - for(tempattr = tidyAttrFirst(obj->node); tempattr; tempattr = tidyAttrNext(tempattr)) { - - if(tidyAttrGetId(tempattr) == param) { - - tidy_instanciate(tidy_ce_node, return_value TSRMLS_CC); - - obj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); - obj->node = NULL; - obj->attr = tempattr; - obj->type = is_attr; - - tidy_add_default_properities(obj, is_attr TSRMLS_CC); - } - } - -} -/* }}} */ - -/* {{{ proto tidy_node tidy_node::get_nodes(int node_id) - Return an array of nodes under this node with the specified id */ -PHP_NODE_METHOD(get_nodes) -{ - /* TODO */ -} -/* }}} */ - -#endif /* ZEND_ENGINE_2 */ - -void _php_tidy_register_nodetypes(INIT_FUNC_ARGS) -{ - - TIDY_NODE_CONST(ROOT, Root); - TIDY_NODE_CONST(DOCTYPE, DocType); - TIDY_NODE_CONST(COMMENT, Comment); - TIDY_NODE_CONST(PROCINS, ProcIns); - TIDY_NODE_CONST(TEXT, Text); - TIDY_NODE_CONST(START, Start); - TIDY_NODE_CONST(END, End); - TIDY_NODE_CONST(STARTEND, StartEnd); - TIDY_NODE_CONST(CDATA, CDATA); - TIDY_NODE_CONST(SECTION, Section); - TIDY_NODE_CONST(ASP, Asp); - TIDY_NODE_CONST(JSTE, Jste); - TIDY_NODE_CONST(PHP, Php); - TIDY_NODE_CONST(XMLDECL, XmlDecl); - -} - -void _php_tidy_register_tags(INIT_FUNC_ARGS) -{ - - TIDY_TAG_CONST(UNKNOWN); - TIDY_TAG_CONST(A); - TIDY_TAG_CONST(ABBR); - TIDY_TAG_CONST(ACRONYM); - TIDY_TAG_CONST(ADDRESS); - TIDY_TAG_CONST(ALIGN); - TIDY_TAG_CONST(APPLET); - TIDY_TAG_CONST(AREA); - TIDY_TAG_CONST(B); - TIDY_TAG_CONST(BASE); - TIDY_TAG_CONST(BASEFONT); - TIDY_TAG_CONST(BDO); - TIDY_TAG_CONST(BGSOUND); - TIDY_TAG_CONST(BIG); - TIDY_TAG_CONST(BLINK); - TIDY_TAG_CONST(BLOCKQUOTE); - TIDY_TAG_CONST(BODY); - TIDY_TAG_CONST(BR); - TIDY_TAG_CONST(BUTTON); - TIDY_TAG_CONST(CAPTION); - TIDY_TAG_CONST(CENTER); - TIDY_TAG_CONST(CITE); - TIDY_TAG_CONST(CODE); - TIDY_TAG_CONST(COL); - TIDY_TAG_CONST(COLGROUP); - TIDY_TAG_CONST(COMMENT); - TIDY_TAG_CONST(DD); - TIDY_TAG_CONST(DEL); - TIDY_TAG_CONST(DFN); - TIDY_TAG_CONST(DIR); - TIDY_TAG_CONST(DIV); - TIDY_TAG_CONST(DL); - TIDY_TAG_CONST(DT); - TIDY_TAG_CONST(EM); - TIDY_TAG_CONST(EMBED); - TIDY_TAG_CONST(FIELDSET); - TIDY_TAG_CONST(FONT); - TIDY_TAG_CONST(FORM); - TIDY_TAG_CONST(FRAME); - TIDY_TAG_CONST(FRAMESET); - TIDY_TAG_CONST(H1); - TIDY_TAG_CONST(H2); - TIDY_TAG_CONST(H3); - TIDY_TAG_CONST(H4); - TIDY_TAG_CONST(H5); - TIDY_TAG_CONST(H6); - TIDY_TAG_CONST(HEAD); - TIDY_TAG_CONST(HR); - TIDY_TAG_CONST(HTML); - TIDY_TAG_CONST(I); - TIDY_TAG_CONST(IFRAME); - TIDY_TAG_CONST(ILAYER); - TIDY_TAG_CONST(IMG); - TIDY_TAG_CONST(INPUT); - TIDY_TAG_CONST(INS); - TIDY_TAG_CONST(ISINDEX); - TIDY_TAG_CONST(KBD); - TIDY_TAG_CONST(KEYGEN); - TIDY_TAG_CONST(LABEL); - TIDY_TAG_CONST(LAYER); - TIDY_TAG_CONST(LEGEND); - TIDY_TAG_CONST(LI); - TIDY_TAG_CONST(LINK); - TIDY_TAG_CONST(LISTING); - TIDY_TAG_CONST(MAP); - TIDY_TAG_CONST(MARQUEE); - TIDY_TAG_CONST(MENU); - TIDY_TAG_CONST(META); - TIDY_TAG_CONST(MULTICOL); - TIDY_TAG_CONST(NOBR); - TIDY_TAG_CONST(NOEMBED); - TIDY_TAG_CONST(NOFRAMES); - TIDY_TAG_CONST(NOLAYER); - TIDY_TAG_CONST(NOSAVE); - TIDY_TAG_CONST(NOSCRIPT); - TIDY_TAG_CONST(OBJECT); - TIDY_TAG_CONST(OL); - TIDY_TAG_CONST(OPTGROUP); - TIDY_TAG_CONST(OPTION); - TIDY_TAG_CONST(P); - TIDY_TAG_CONST(PARAM); - TIDY_TAG_CONST(PLAINTEXT); - TIDY_TAG_CONST(PRE); - TIDY_TAG_CONST(Q); - TIDY_TAG_CONST(RB); - TIDY_TAG_CONST(RBC); - TIDY_TAG_CONST(RP); - TIDY_TAG_CONST(RT); - TIDY_TAG_CONST(RTC); - TIDY_TAG_CONST(RUBY); - TIDY_TAG_CONST(S); - TIDY_TAG_CONST(SAMP); - TIDY_TAG_CONST(SCRIPT); - TIDY_TAG_CONST(SELECT); - TIDY_TAG_CONST(SERVER); - TIDY_TAG_CONST(SERVLET); - TIDY_TAG_CONST(SMALL); - TIDY_TAG_CONST(SPACER); - TIDY_TAG_CONST(SPAN); - TIDY_TAG_CONST(STRIKE); - TIDY_TAG_CONST(STRONG); - TIDY_TAG_CONST(STYLE); - TIDY_TAG_CONST(SUB); - TIDY_TAG_CONST(SUP); - TIDY_TAG_CONST(TABLE); - TIDY_TAG_CONST(TBODY); - TIDY_TAG_CONST(TD); - TIDY_TAG_CONST(TEXTAREA); - TIDY_TAG_CONST(TFOOT); - TIDY_TAG_CONST(TH); - TIDY_TAG_CONST(THEAD); - TIDY_TAG_CONST(TITLE); - TIDY_TAG_CONST(TR); - TIDY_TAG_CONST(TT); - TIDY_TAG_CONST(U); - TIDY_TAG_CONST(UL); - TIDY_TAG_CONST(VAR); - TIDY_TAG_CONST(WBR); - TIDY_TAG_CONST(XMP); - -} - -void _php_tidy_register_attributes(INIT_FUNC_ARGS) -{ - - TIDY_ATTR_CONST(UNKNOWN); - TIDY_ATTR_CONST(ABBR); - TIDY_ATTR_CONST(ACCEPT); - TIDY_ATTR_CONST(ACCEPT_CHARSET); - TIDY_ATTR_CONST(ACCESSKEY); - TIDY_ATTR_CONST(ACTION); - TIDY_ATTR_CONST(ADD_DATE); - TIDY_ATTR_CONST(ALIGN); - TIDY_ATTR_CONST(ALINK); - TIDY_ATTR_CONST(ALT); - TIDY_ATTR_CONST(ARCHIVE); - TIDY_ATTR_CONST(AXIS); - TIDY_ATTR_CONST(BACKGROUND); - TIDY_ATTR_CONST(BGCOLOR); - TIDY_ATTR_CONST(BGPROPERTIES); - TIDY_ATTR_CONST(BORDER); - TIDY_ATTR_CONST(BORDERCOLOR); - TIDY_ATTR_CONST(BOTTOMMARGIN); - TIDY_ATTR_CONST(CELLPADDING); - TIDY_ATTR_CONST(CELLSPACING); - TIDY_ATTR_CONST(CHAR); - TIDY_ATTR_CONST(CHAROFF); - TIDY_ATTR_CONST(CHARSET); - TIDY_ATTR_CONST(CHECKED); - TIDY_ATTR_CONST(CITE); - TIDY_ATTR_CONST(CLASS); - TIDY_ATTR_CONST(CLASSID); - TIDY_ATTR_CONST(CLEAR); - TIDY_ATTR_CONST(CODE); - TIDY_ATTR_CONST(CODEBASE); - TIDY_ATTR_CONST(CODETYPE); - TIDY_ATTR_CONST(COLOR); - TIDY_ATTR_CONST(COLS); - TIDY_ATTR_CONST(COLSPAN); - TIDY_ATTR_CONST(COMPACT); - TIDY_ATTR_CONST(CONTENT); - TIDY_ATTR_CONST(COORDS); - TIDY_ATTR_CONST(DATA); - TIDY_ATTR_CONST(DATAFLD); - /* TIDY_ATTR_CONST(DATAFORMATSAS); */ - TIDY_ATTR_CONST(DATAPAGESIZE); - TIDY_ATTR_CONST(DATASRC); - TIDY_ATTR_CONST(DATETIME); - TIDY_ATTR_CONST(DECLARE); - TIDY_ATTR_CONST(DEFER); - TIDY_ATTR_CONST(DIR); - TIDY_ATTR_CONST(DISABLED); - TIDY_ATTR_CONST(ENCODING); - TIDY_ATTR_CONST(ENCTYPE); - TIDY_ATTR_CONST(FACE); - TIDY_ATTR_CONST(FOR); - TIDY_ATTR_CONST(FRAME); - TIDY_ATTR_CONST(FRAMEBORDER); - TIDY_ATTR_CONST(FRAMESPACING); - TIDY_ATTR_CONST(GRIDX); - TIDY_ATTR_CONST(GRIDY); - TIDY_ATTR_CONST(HEADERS); - TIDY_ATTR_CONST(HEIGHT); - TIDY_ATTR_CONST(HREF); - TIDY_ATTR_CONST(HREFLANG); - TIDY_ATTR_CONST(HSPACE); - TIDY_ATTR_CONST(HTTP_EQUIV); - TIDY_ATTR_CONST(ID); - TIDY_ATTR_CONST(ISMAP); - TIDY_ATTR_CONST(LABEL); - TIDY_ATTR_CONST(LANG); - TIDY_ATTR_CONST(LANGUAGE); - TIDY_ATTR_CONST(LAST_MODIFIED); - TIDY_ATTR_CONST(LAST_VISIT); - TIDY_ATTR_CONST(LEFTMARGIN); - TIDY_ATTR_CONST(LINK); - TIDY_ATTR_CONST(LONGDESC); - TIDY_ATTR_CONST(LOWSRC); - TIDY_ATTR_CONST(MARGINHEIGHT); - TIDY_ATTR_CONST(MARGINWIDTH); - TIDY_ATTR_CONST(MAXLENGTH); - TIDY_ATTR_CONST(MEDIA); - TIDY_ATTR_CONST(METHOD); - TIDY_ATTR_CONST(MULTIPLE); - TIDY_ATTR_CONST(NAME); - TIDY_ATTR_CONST(NOHREF); - TIDY_ATTR_CONST(NORESIZE); - TIDY_ATTR_CONST(NOSHADE); - TIDY_ATTR_CONST(NOWRAP); - TIDY_ATTR_CONST(OBJECT); - TIDY_ATTR_CONST(OnAFTERUPDATE); - TIDY_ATTR_CONST(OnBEFOREUNLOAD); - TIDY_ATTR_CONST(OnBEFOREUPDATE); - TIDY_ATTR_CONST(OnBLUR); - TIDY_ATTR_CONST(OnCHANGE); - TIDY_ATTR_CONST(OnCLICK); - TIDY_ATTR_CONST(OnDATAAVAILABLE); - TIDY_ATTR_CONST(OnDATASETCHANGED); - TIDY_ATTR_CONST(OnDATASETCOMPLETE); - TIDY_ATTR_CONST(OnDBLCLICK); - TIDY_ATTR_CONST(OnERRORUPDATE); - TIDY_ATTR_CONST(OnFOCUS); - TIDY_ATTR_CONST(OnKEYDOWN); - TIDY_ATTR_CONST(OnKEYPRESS); - TIDY_ATTR_CONST(OnKEYUP); - TIDY_ATTR_CONST(OnLOAD); - TIDY_ATTR_CONST(OnMOUSEDOWN); - TIDY_ATTR_CONST(OnMOUSEMOVE); - TIDY_ATTR_CONST(OnMOUSEOUT); - TIDY_ATTR_CONST(OnMOUSEOVER); - TIDY_ATTR_CONST(OnMOUSEUP); - TIDY_ATTR_CONST(OnRESET); - TIDY_ATTR_CONST(OnROWENTER); - TIDY_ATTR_CONST(OnROWEXIT); - TIDY_ATTR_CONST(OnSELECT); - TIDY_ATTR_CONST(OnSUBMIT); - TIDY_ATTR_CONST(OnUNLOAD); - TIDY_ATTR_CONST(PROFILE); - TIDY_ATTR_CONST(PROMPT); - TIDY_ATTR_CONST(RBSPAN); - TIDY_ATTR_CONST(READONLY); - TIDY_ATTR_CONST(REL); - TIDY_ATTR_CONST(REV); - TIDY_ATTR_CONST(RIGHTMARGIN); - TIDY_ATTR_CONST(ROWS); - TIDY_ATTR_CONST(ROWSPAN); - TIDY_ATTR_CONST(RULES); - TIDY_ATTR_CONST(SCHEME); - TIDY_ATTR_CONST(SCOPE); - TIDY_ATTR_CONST(SCROLLING); - TIDY_ATTR_CONST(SELECTED); - TIDY_ATTR_CONST(SHAPE); - TIDY_ATTR_CONST(SHOWGRID); - TIDY_ATTR_CONST(SHOWGRIDX); - TIDY_ATTR_CONST(SHOWGRIDY); - TIDY_ATTR_CONST(SIZE); - TIDY_ATTR_CONST(SPAN); - TIDY_ATTR_CONST(SRC); - TIDY_ATTR_CONST(STANDBY); - TIDY_ATTR_CONST(START); - TIDY_ATTR_CONST(STYLE); - TIDY_ATTR_CONST(SUMMARY); - TIDY_ATTR_CONST(TABINDEX); - TIDY_ATTR_CONST(TARGET); - TIDY_ATTR_CONST(TEXT); - TIDY_ATTR_CONST(TITLE); - TIDY_ATTR_CONST(TOPMARGIN); - TIDY_ATTR_CONST(TYPE); - TIDY_ATTR_CONST(USEMAP); - TIDY_ATTR_CONST(VALIGN); - TIDY_ATTR_CONST(VALUE); - TIDY_ATTR_CONST(VALUETYPE); - TIDY_ATTR_CONST(VERSION); - TIDY_ATTR_CONST(VLINK); - TIDY_ATTR_CONST(VSPACE); - TIDY_ATTR_CONST(WIDTH); - TIDY_ATTR_CONST(WRAP); - TIDY_ATTR_CONST(XML_LANG); - TIDY_ATTR_CONST(XML_SPACE); - TIDY_ATTR_CONST(XMLNS); - -} |