Skip to content

Css selectors #82

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 35 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
fc12a48
Update patches and patch Lexbor
nielsdos Jan 4, 2024
63aae9f
Re-import Lexbor CSS component (partially)
nielsdos Jan 5, 2024
e025d0d
Update Lexbor again (patched)
nielsdos Mar 24, 2024
6acb270
Add codecov
nielsdos Oct 19, 2023
b57f324
Disable macOS to not burn my action minutes
nielsdos Dec 14, 2023
81880c3
Initial implementation of CSS selectors
nielsdos Jan 5, 2024
c850017
Combinators test
nielsdos Jan 6, 2024
d9dfd97
Add id selector test
nielsdos Jan 6, 2024
530ec37
Add initial batch of pseudo classes test
nielsdos Jan 6, 2024
52f2ab1
Add pseudo elements test
nielsdos Jan 6, 2024
9bd943d
Add test for current
nielsdos Jan 7, 2024
3474c97
Add test for pseudo classes no-ops
nielsdos Jan 7, 2024
d1e9d9d
Test optional/required
nielsdos Jan 7, 2024
9b2c68c
Test placeholder-shown
nielsdos Jan 7, 2024
ba35b38
Test read-write/read-only
nielsdos Jan 7, 2024
efbbec4
Test blank selector
nielsdos Jan 7, 2024
5da093a
Test nth-child of
nielsdos Jan 7, 2024
a949093
Test has
nielsdos Jan 7, 2024
d9acaff
Test is/where
nielsdos Jan 7, 2024
3ff099c
Test attribute
nielsdos Jan 7, 2024
a879eb4
Test namespaces
nielsdos Jan 7, 2024
421457b
Add more unsupported tests
nielsdos Jan 7, 2024
1c46444
Implement matches() (TODO: cleanup)
nielsdos Jan 7, 2024
d34a07b
Add assertion
nielsdos Feb 11, 2024
5c488b8
Move CSS selector stuff to modern classes
nielsdos Mar 24, 2024
46c3a63
New implementation
nielsdos Mar 24, 2024
56c3a12
Reimplement matches more efficiently
nielsdos Mar 25, 2024
351ee87
Add TODO idea
nielsdos Mar 25, 2024
c96c21e
Implement Element::closest()
nielsdos Mar 25, 2024
a894eef
Cleanup
nielsdos Mar 25, 2024
7c1365f
Implement quirks mode
nielsdos Mar 26, 2024
91039ea
Optimizations
nielsdos Mar 26, 2024
ca11f04
Convert to tabs
nielsdos Mar 26, 2024
1c69053
Test matches() invalid selector
nielsdos Mar 27, 2024
6ca4ae2
Correct node type check for MATCH_ROOT (although unused for now)
nielsdos Mar 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
51 changes: 47 additions & 4 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,6 @@ permissions:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.url || github.run_id }}
cancel-in-progress: true
env:
CC: ccache gcc
CXX: ccache g++
jobs:
LINUX_X64:
if: github.repository_owner == 'php' || github.event_name == 'pull_request'
Expand Down Expand Up @@ -149,7 +146,7 @@ jobs:
if: ${{ !matrix.asan }}
uses: ./.github/actions/verify-generated-files
MACOS_DEBUG_NTS:
if: github.repository_owner == 'php' || github.event_name == 'pull_request'
if: false
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -216,6 +213,52 @@ jobs:
run: .github/scripts/windows/build.bat
- name: Test
run: .github/scripts/windows/test.bat
COVERAGE_DEBUG_NTS:
services:
postgres:
image: postgres
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test
runs-on: ubuntu-22.04
steps:
- name: git checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Create MSSQL container
uses: ./.github/actions/setup-mssql
- name: apt
uses: ./.github/actions/apt-x64
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{github.job}}-cov-${{hashFiles('main/php_version.h')}}"
append-timestamp: false
- name: Install gcovr
run: sudo -H pip install gcovr
- name: ./configure
uses: ./.github/actions/configure-x64
with:
configurationParameters: --enable-debug --disable-zts --enable-gcov
- name: make
run: make -j$(/usr/bin/nproc) >/dev/null
- name: make install
uses: ./.github/actions/install-linux
- name: Setup
uses: ./.github/actions/setup-x64
# We only test with OpCache, the difference in coverage is negligible
- name: Test OpCache
uses: ./.github/actions/test-linux
with:
jitType: tracing
runTestsParameters: >-
-d zend_extension=opcache.so
-d opcache.enable_cli=1
- name: Upload Test Coverage to Codecov.io
if: always()
run: bash <(curl -s https://codecov.io/bash)
BENCHMARKING:
name: BENCHMARKING
if: github.repository_owner == 'php' || github.event_name == 'pull_request'
Expand Down
1 change: 1 addition & 0 deletions UPGRADING.INTERNALS
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ PHP 8.4 INTERNALS UPGRADE NOTES
- Removed the "properties" HashTable field from php_libxml_node_object.
- Added a way to attached private data to a php_libxml_ref_obj.
- Added a way to fix a class type onto php_libxml_ref_obj.
- Added a way to record quirks mode in php_libxml_ref_obj.
- Added php_libxml_uses_internal_errors().

e. ext/date
Expand Down
12 changes: 10 additions & 2 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
ignore:
- "ext/dom/lexbor/lexbor" # bundled library
- "ext/pcre/pcre2lib" # bundled library
# bundled libraries
- "ext/dom/lexbor/lexbor/core"
- "ext/dom/lexbor/lexbor/css"
- "ext/dom/lexbor/lexbor/dom"
- "ext/dom/lexbor/lexbor/encoding"
- "ext/dom/lexbor/lexbor/html"
- "ext/dom/lexbor/lexbor/ns"
- "ext/dom/lexbor/lexbor/ports"
- "ext/dom/lexbor/lexbor/tag"
- "ext/pcre/pcre2lib"
12 changes: 9 additions & 3 deletions ext/dom/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,14 @@ if test "$PHP_DOM" != "no"; then
$LEXBOR_DIR/encoding/big5.c $LEXBOR_DIR/encoding/decode.c $LEXBOR_DIR/encoding/encode.c $LEXBOR_DIR/encoding/encoding.c $LEXBOR_DIR/encoding/euc_kr.c $LEXBOR_DIR/encoding/gb18030.c $LEXBOR_DIR/encoding/iso_2022_jp_katakana.c $LEXBOR_DIR/encoding/jis0208.c $LEXBOR_DIR/encoding/jis0212.c $LEXBOR_DIR/encoding/range.c $LEXBOR_DIR/encoding/res.c $LEXBOR_DIR/encoding/single.c \
$LEXBOR_DIR/html/encoding.c $LEXBOR_DIR/html/interface.c $LEXBOR_DIR/html/parser.c $LEXBOR_DIR/html/token.c $LEXBOR_DIR/html/token_attr.c $LEXBOR_DIR/html/tokenizer.c $LEXBOR_DIR/html/tree.c \
$LEXBOR_DIR/html/interfaces/anchor_element.c $LEXBOR_DIR/html/interfaces/area_element.c $LEXBOR_DIR/html/interfaces/audio_element.c $LEXBOR_DIR/html/interfaces/base_element.c $LEXBOR_DIR/html/interfaces/body_element.c $LEXBOR_DIR/html/interfaces/br_element.c $LEXBOR_DIR/html/interfaces/button_element.c $LEXBOR_DIR/html/interfaces/canvas_element.c $LEXBOR_DIR/html/interfaces/data_element.c $LEXBOR_DIR/html/interfaces/data_list_element.c $LEXBOR_DIR/html/interfaces/details_element.c $LEXBOR_DIR/html/interfaces/dialog_element.c $LEXBOR_DIR/html/interfaces/directory_element.c $LEXBOR_DIR/html/interfaces/div_element.c $LEXBOR_DIR/html/interfaces/d_list_element.c $LEXBOR_DIR/html/interfaces/document.c $LEXBOR_DIR/html/interfaces/element.c $LEXBOR_DIR/html/interfaces/embed_element.c $LEXBOR_DIR/html/interfaces/field_set_element.c $LEXBOR_DIR/html/interfaces/font_element.c $LEXBOR_DIR/html/interfaces/form_element.c $LEXBOR_DIR/html/interfaces/frame_element.c $LEXBOR_DIR/html/interfaces/frame_set_element.c $LEXBOR_DIR/html/interfaces/head_element.c $LEXBOR_DIR/html/interfaces/heading_element.c $LEXBOR_DIR/html/interfaces/hr_element.c $LEXBOR_DIR/html/interfaces/html_element.c $LEXBOR_DIR/html/interfaces/iframe_element.c $LEXBOR_DIR/html/interfaces/image_element.c $LEXBOR_DIR/html/interfaces/input_element.c $LEXBOR_DIR/html/interfaces/label_element.c $LEXBOR_DIR/html/interfaces/legend_element.c $LEXBOR_DIR/html/interfaces/li_element.c $LEXBOR_DIR/html/interfaces/link_element.c $LEXBOR_DIR/html/interfaces/map_element.c $LEXBOR_DIR/html/interfaces/marquee_element.c $LEXBOR_DIR/html/interfaces/media_element.c $LEXBOR_DIR/html/interfaces/menu_element.c $LEXBOR_DIR/html/interfaces/meta_element.c $LEXBOR_DIR/html/interfaces/meter_element.c $LEXBOR_DIR/html/interfaces/mod_element.c $LEXBOR_DIR/html/interfaces/object_element.c $LEXBOR_DIR/html/interfaces/o_list_element.c $LEXBOR_DIR/html/interfaces/opt_group_element.c $LEXBOR_DIR/html/interfaces/option_element.c $LEXBOR_DIR/html/interfaces/output_element.c $LEXBOR_DIR/html/interfaces/paragraph_element.c $LEXBOR_DIR/html/interfaces/param_element.c $LEXBOR_DIR/html/interfaces/picture_element.c $LEXBOR_DIR/html/interfaces/pre_element.c $LEXBOR_DIR/html/interfaces/progress_element.c $LEXBOR_DIR/html/interfaces/quote_element.c $LEXBOR_DIR/html/interfaces/script_element.c $LEXBOR_DIR/html/interfaces/select_element.c $LEXBOR_DIR/html/interfaces/slot_element.c $LEXBOR_DIR/html/interfaces/source_element.c $LEXBOR_DIR/html/interfaces/span_element.c $LEXBOR_DIR/html/interfaces/style_element.c $LEXBOR_DIR/html/interfaces/table_caption_element.c $LEXBOR_DIR/html/interfaces/table_cell_element.c $LEXBOR_DIR/html/interfaces/table_col_element.c $LEXBOR_DIR/html/interfaces/table_element.c $LEXBOR_DIR/html/interfaces/table_row_element.c $LEXBOR_DIR/html/interfaces/table_section_element.c $LEXBOR_DIR/html/interfaces/template_element.c $LEXBOR_DIR/html/interfaces/text_area_element.c $LEXBOR_DIR/html/interfaces/time_element.c $LEXBOR_DIR/html/interfaces/title_element.c $LEXBOR_DIR/html/interfaces/track_element.c $LEXBOR_DIR/html/interfaces/u_list_element.c $LEXBOR_DIR/html/interfaces/unknown_element.c $LEXBOR_DIR/html/interfaces/video_element.c $LEXBOR_DIR/html/interfaces/window.c \
$LEXBOR_DIR/selectors/selectors.c \
$LEXBOR_DIR/css/state.c $LEXBOR_DIR/css/log.c $LEXBOR_DIR/css/parser.c $LEXBOR_DIR/css/selectors/state.c $LEXBOR_DIR/css/selectors/selectors.c $LEXBOR_DIR/css/selectors/selector.c $LEXBOR_DIR/css/selectors/pseudo_state.c $LEXBOR_DIR/css/selectors/pseudo.c $LEXBOR_DIR/css/syntax/tokenizer/error.c $LEXBOR_DIR/css/syntax/state.c $LEXBOR_DIR/css/syntax/parser.c $LEXBOR_DIR/css/syntax/syntax.c $LEXBOR_DIR/css/syntax/anb.c $LEXBOR_DIR/css/syntax/tokenizer.c $LEXBOR_DIR/css/syntax/token.c $LEXBOR_DIR/css/css.c \
$LEXBOR_DIR/selectors-adapted/selectors.c \
$LEXBOR_DIR/ns/ns.c \
$LEXBOR_DIR/tag/tag.c"
PHP_NEW_EXTENSION(dom, [php_dom.c attr.c document.c \
xml_document.c html_document.c xml_serializer.c html5_serializer.c html5_parser.c namespace_compat.c \
domexception.c parentnode.c \
domexception.c \
parentnode/tree.c parentnode/css_selectors.c \
processinginstruction.c cdatasection.c \
documentfragment.c domimplementation.c \
element.c node.c characterdata.c \
Expand All @@ -38,14 +40,18 @@ if test "$PHP_DOM" != "no"; then
namednodemap.c xpath_callbacks.c \
$LEXBOR_SOURCES],
$ext_shared,,$PHP_LEXBOR_CFLAGS)
PHP_ADD_BUILD_DIR($ext_builddir/parentnode)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/ports/posix/lexbor/core)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/core)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/dom/interfaces)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/html/tree/insertion_mode)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/html/tokenizer)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/html/interfaces)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/encoding)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/selectors)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/css/selectors)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/css/tokenizer)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/css/syntax/tokenizer)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/selectors-adapted)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/ns)
PHP_ADD_BUILD_DIR($ext_builddir/$LEXBOR_DIR/tag)
PHP_SUBST(DOM_SHARED_LIBADD)
Expand Down
9 changes: 7 additions & 2 deletions ext/dom/config.w32
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ if (PHP_DOM == "yes") {
) {
EXTENSION("dom", "php_dom.c attr.c document.c \
xml_document.c html_document.c xml_serializer.c html5_serializer.c html5_parser.c namespace_compat.c \
domexception.c parentnode.c processinginstruction.c \
domexception.c processinginstruction.c \
cdatasection.c documentfragment.c domimplementation.c element.c \
node.c characterdata.c documenttype.c \
entity.c nodelist.c text.c comment.c \
entityreference.c \
notation.c xpath.c dom_iterators.c \
namednodemap.c xpath_callbacks.c", null, "-Iext/dom/lexbor");

ADD_SOURCES("ext/dom/parentnode", "tree.c css_selectors.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/ports/windows_nt/lexbor/core", "memory.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/core", "array_obj.c array.c avl.c bst.c diyfp.c conv.c dobject.c dtoa.c hash.c mem.c mraw.c print.c serialize.c shs.c str.c strtod.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/dom", "interface.c", "dom");
Expand All @@ -27,7 +28,11 @@ if (PHP_DOM == "yes") {
ADD_SOURCES("ext/dom/lexbor/lexbor/html", "encoding.c interface.c parser.c token.c token_attr.c tokenizer.c tree.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/encoding", "big5.c decode.c encode.c encoding.c euc_kr.c gb18030.c iso_2022_jp_katakana.c jis0208.c jis0212.c range.c res.c single.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/html/interfaces", "anchor_element.c area_element.c audio_element.c base_element.c body_element.c br_element.c button_element.c canvas_element.c data_element.c data_list_element.c details_element.c dialog_element.c directory_element.c div_element.c d_list_element.c document.c element.c embed_element.c field_set_element.c font_element.c form_element.c frame_element.c frame_set_element.c head_element.c heading_element.c hr_element.c html_element.c iframe_element.c image_element.c input_element.c label_element.c legend_element.c li_element.c link_element.c map_element.c marquee_element.c media_element.c menu_element.c meta_element.c meter_element.c mod_element.c object_element.c o_list_element.c opt_group_element.c option_element.c output_element.c paragraph_element.c param_element.c picture_element.c pre_element.c progress_element.c quote_element.c script_element.c select_element.c slot_element.c source_element.c span_element.c style_element.c table_caption_element.c table_cell_element.c table_col_element.c table_element.c table_row_element.c table_section_element.c template_element.c text_area_element.c time_element.c title_element.c track_element.c u_list_element.c unknown_element.c video_element.c window.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/selectors", "selectors.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/selectors-adapted", "selectors.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/css", "state.c log.c parser.c css.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/css/selectors", "state.c selectors.c selector.c pseudo_state.c pseudo.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/css/syntax", "state.c parser.c syntax.c anb.c tokenizer.c token.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/css/syntax/tokenizer", "error.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/ns", "ns.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/tag", "tag.c", "dom");
ADD_FLAG("CFLAGS_DOM", "/D LEXBOR_STATIC ");
Expand Down
3 changes: 3 additions & 0 deletions ext/dom/domexception.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,7 @@ typedef enum {
VALIDATION_ERR = 16
} dom_exception_code;

void php_dom_throw_error(int error_code, bool strict_error);
void php_dom_throw_error_with_message(int error_code, char *error_message, bool strict_error);

#endif /* DOM_EXCEPTION_H */
62 changes: 62 additions & 0 deletions ext/dom/element.c
Original file line number Diff line number Diff line change
Expand Up @@ -1714,4 +1714,66 @@ PHP_METHOD(DOMElement, toggleAttribute)
}
/* }}} end DOMElement::prepend */

static void php_dom_dispatch_query_selector(INTERNAL_FUNCTION_PARAMETERS, bool all)
{
zend_string *selectors_str;

ZEND_PARSE_PARAMETERS_START(1, 1)
Z_PARAM_STR(selectors_str)
ZEND_PARSE_PARAMETERS_END();

xmlNodePtr thisp;
dom_object *intern;
zval *id;
DOM_GET_THIS_OBJ(thisp, id, xmlNodePtr, intern);

if (all) {
dom_parent_node_query_selector_all(thisp, intern, return_value, selectors_str);
} else {
dom_parent_node_query_selector(thisp, intern, return_value, selectors_str);
}
}

PHP_METHOD(DOM_Element, querySelector)
{
php_dom_dispatch_query_selector(INTERNAL_FUNCTION_PARAM_PASSTHRU, false);
}

PHP_METHOD(DOM_Element, querySelectorAll)
{
php_dom_dispatch_query_selector(INTERNAL_FUNCTION_PARAM_PASSTHRU, true);
}

PHP_METHOD(DOM_Element, matches)
{
zend_string *selectors_str;

ZEND_PARSE_PARAMETERS_START(1, 1)
Z_PARAM_STR(selectors_str)
ZEND_PARSE_PARAMETERS_END();

xmlNodePtr thisp;
dom_object *intern;
zval *id;
DOM_GET_THIS_OBJ(thisp, id, xmlNodePtr, intern);

dom_element_matches(thisp, intern, return_value, selectors_str);
}

PHP_METHOD(DOM_Element, closest)
{
zend_string *selectors_str;

ZEND_PARSE_PARAMETERS_START(1, 1)
Z_PARAM_STR(selectors_str)
ZEND_PARSE_PARAMETERS_END();

xmlNodePtr thisp;
dom_object *intern;
zval *id;
DOM_GET_THIS_OBJ(thisp, id, xmlNodePtr, intern);

dom_element_closest(thisp, intern, return_value, selectors_str);
}

#endif
2 changes: 2 additions & 0 deletions ext/dom/html5_parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include "html5_parser.h"
#include <lexbor/html/parser.h>
#include <lexbor/html/interfaces/element.h>
#include <lexbor/dom/dom.h>
#include <libxml/parserInternals.h>
#include <libxml/HTMLtree.h>
#include <Zend/zend.h>
Expand Down Expand Up @@ -379,6 +380,7 @@ void lexbor_libxml2_bridge_copy_observations(lxb_html_tree_t *tree, lexbor_libxm
observations->has_explicit_html_tag = tree->has_explicit_html_tag;
observations->has_explicit_head_tag = tree->has_explicit_head_tag;
observations->has_explicit_body_tag = tree->has_explicit_body_tag;
observations->quirks_mode = lxb_dom_interface_document(tree->document)->compat_mode == LXB_DOM_DOCUMENT_CMODE_QUIRKS;
}

#endif /* HAVE_LIBXML && HAVE_DOM */
1 change: 1 addition & 0 deletions ext/dom/html5_parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ typedef struct _lexbor_libxml2_bridge_extracted_observations {
bool has_explicit_html_tag;
bool has_explicit_head_tag;
bool has_explicit_body_tag;
bool quirks_mode;
} lexbor_libxml2_bridge_extracted_observations;

typedef struct _lexbor_libxml2_bridge_parse_context {
Expand Down
2 changes: 2 additions & 0 deletions ext/dom/html_document.c
Original file line number Diff line number Diff line change
Expand Up @@ -917,6 +917,7 @@ PHP_METHOD(DOM_HTMLDocument, createFromString)
NULL
);
intern->document->class_type = PHP_LIBXML_CLASS_MODERN;
intern->document->quirks_mode = ctx.observations.quirks_mode;
intern->document->private_data = php_dom_libxml_ns_mapper_header(ns_mapper);
return;

Expand Down Expand Up @@ -1137,6 +1138,7 @@ PHP_METHOD(DOM_HTMLDocument, createFromFile)
NULL
);
intern->document->class_type = PHP_LIBXML_CLASS_MODERN;
intern->document->quirks_mode = ctx.observations.quirks_mode;
intern->document->private_data = php_dom_libxml_ns_mapper_header(ns_mapper);
return;

Expand Down
Empty file modified ext/dom/lexbor/lexbor/core/array.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/array.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/array_obj.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/array_obj.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/avl.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/avl.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/bst.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/bst.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/bst_map.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/bst_map.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/def.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/diyfp.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/diyfp.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/dobject.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/dobject.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/dtoa.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/dtoa.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/fs.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/in.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/in.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/lexbor.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/mem.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/mem.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/mraw.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/mraw.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/plog.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/plog.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/sbst.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/shs.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/shs.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/str.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/str.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/str_res.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/strtod.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/strtod.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/types.h
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/utils.c
100755 → 100644
Empty file.
Empty file modified ext/dom/lexbor/lexbor/core/utils.h
100755 → 100644
Empty file.
Loading