From: John Coggeshall Date: Thu, 23 Mar 2006 14:22:40 +0000 (+0000) Subject: Under threat of being slept with by Marcus, adding new getParent() method X-Git-Tag: RELEASE_1_3~295 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d9a412a146f21a3444e7ed8bc0ff6848cd50f1a2;p=php Under threat of being slept with by Marcus, adding new getParent() method for node traversals --- diff --git a/ext/tidy/php_tidy.h b/ext/tidy/php_tidy.h index 3beff75dd8..d038be2254 100644 --- a/ext/tidy/php_tidy.h +++ b/ext/tidy/php_tidy.h @@ -89,6 +89,7 @@ TIDY_NODE_METHOD(isText); TIDY_NODE_METHOD(isJste); TIDY_NODE_METHOD(isAsp); TIDY_NODE_METHOD(isPhp); +TIDY_NODE_METHOD(getParent); ZEND_BEGIN_MODULE_GLOBALS(tidy) char *default_config; diff --git a/ext/tidy/tests/tidy_019.phpt b/ext/tidy/tests/tidy_019.phpt new file mode 100644 index 0000000000..f92168b5a9 --- /dev/null +++ b/ext/tidy/tests/tidy_019.phpt @@ -0,0 +1,12 @@ +--TEST-- +Test getParent() +--SKIPIF-- + +--FILE-- +
Content
"); +var_dump($x->body()->child[0]->getParent()->name); +?> +--EXPECT-- +string(4) "body" + diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index 2fae9c7ac9..f72319cb39 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -302,6 +302,7 @@ zend_function_entry tidy_funcs_node[] = { TIDY_NODE_ME(isJste, NULL) TIDY_NODE_ME(isAsp, NULL) TIDY_NODE_ME(isPhp, NULL) + TIDY_NODE_ME(getParent, NULL) {NULL, NULL, NULL} }; @@ -1696,6 +1697,30 @@ TIDY_NODE_METHOD(isPhp) } /* }}} */ +/* {{{ proto boolean tidyNode::getParent() + Returns the parent node if available or NULL */ +TIDY_NODE_METHOD(getParent) +{ + TidyNode parent_node; + PHPTidyObj *newobj; + TIDY_FETCH_ONLY_OBJECT; + + parent_node = tidyGetParent(obj->node); + if(parent_node) { + tidy_instanciate(tidy_ce_node, return_value TSRMLS_CC); + newobj = (PHPTidyObj *) zend_object_store_get_object(return_value TSRMLS_CC); + newobj->node = parent_node; + newobj->type = is_node; + newobj->ptdoc = obj->ptdoc; + newobj->ptdoc->ref_count++; + tidy_add_default_properties(newobj, is_node TSRMLS_CC); + } else { + ZVAL_NULL(return_value); + } +} +/* }}} */ + + static void _php_tidy_register_nodetypes(INIT_FUNC_ARGS) { TIDY_NODE_CONST(ROOT, Root);