leptris 1.9.201.0-arm-linux → 1.9.201.2-arm-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +23 -0
- data/Rakefile +52 -12
- data/ext/leptris/native/extconf.rb +85 -0
- data/ext/leptris/native/native.c +1 -1
- data/lib/leptris/version.rb +1 -1
- data/lib/leptris/xml/ffi.rb +13 -0
- data/lib/leptris/xml/native.so +0 -0
- data/vendor-src/libleptris/CHANGELOG.md +8080 -0
- data/vendor-src/libleptris/CLAUDE.md +150 -0
- data/vendor-src/libleptris/CMakeLists.txt +379 -0
- data/vendor-src/libleptris/CMakePresets.json +61 -0
- data/vendor-src/libleptris/CODE_OF_CONDUCT.md +132 -0
- data/vendor-src/libleptris/CONTEXT.md +49 -0
- data/vendor-src/libleptris/LICENSE.md +33 -0
- data/vendor-src/libleptris/README.adoc +1197 -0
- data/vendor-src/libleptris/TODO.assemble/README.md +16 -0
- data/vendor-src/libleptris/TODO.bindings/01-mutation-construction.md +18 -0
- data/vendor-src/libleptris/TODO.bindings/02-incremental-iterparse.md +15 -0
- data/vendor-src/libleptris/TODO.bindings/03-compiled-xpath.md +15 -0
- data/vendor-src/libleptris/TODO.bindings/04-pull-stax-api.md +14 -0
- data/vendor-src/libleptris/TODO.bindings/05-per-parse-options.md +17 -0
- data/vendor-src/libleptris/TODO.bindings/06-serialize-encoding-guarantees.md +14 -0
- data/vendor-src/libleptris/TODO.bindings/README.md +36 -0
- data/vendor-src/libleptris/TODO.concurrency/01-thread-safe-errors.md +19 -0
- data/vendor-src/libleptris/TODO.concurrency/02-export-surface-gate.md +24 -0
- data/vendor-src/libleptris/TODO.concurrency/03-mixed-nodeset-batch.md +14 -0
- data/vendor-src/libleptris/TODO.concurrency/04-canonical-status-message.md +13 -0
- data/vendor-src/libleptris/TODO.concurrency/05-windows-dll-name.md +10 -0
- data/vendor-src/libleptris/TODO.concurrency/06-exslt-pack.md +26 -0
- data/vendor-src/libleptris/TODO.concurrency/07-ns-set-pairs.md +11 -0
- data/vendor-src/libleptris/TODO.concurrency/08-threading-contract.md +45 -0
- data/vendor-src/libleptris/TODO.engine/01-file-sources.md +11 -0
- data/vendor-src/libleptris/TODO.engine/02-compiled-contexts.md +10 -0
- data/vendor-src/libleptris/TODO.engine/03-rust-publish.md +9 -0
- data/vendor-src/libleptris/TODO.engine/04-ruby-release-input.md +8 -0
- data/vendor-src/libleptris/TODO.engine/05-todo-md-refresh.md +7 -0
- data/vendor-src/libleptris/TODO.engine/README.md +16 -0
- data/vendor-src/libleptris/TODO.hygiene/README.md +15 -0
- data/vendor-src/libleptris/TODO.max-perf/00-INDEX.md +22 -0
- data/vendor-src/libleptris/TODO.max-perf/1-simd-html-scanner.md +15 -0
- data/vendor-src/libleptris/TODO.max-perf/10-moxml-plan-followups.md +9 -0
- data/vendor-src/libleptris/TODO.max-perf/2-compiled-dispatch-tokenizer.md +8 -0
- data/vendor-src/libleptris/TODO.max-perf/3-iterparse-fixed-cost.md +5 -0
- data/vendor-src/libleptris/TODO.max-perf/4-compact-node-micro-opts.md +17 -0
- data/vendor-src/libleptris/TODO.max-perf/5-xslt-bench-profiling-rounds.md +13 -0
- data/vendor-src/libleptris/TODO.max-perf/6-language-tails.md +9 -0
- data/vendor-src/libleptris/TODO.max-perf/7-validate-bindings.md +6 -0
- data/vendor-src/libleptris/TODO.max-perf/8-native-xml-diff-consumer.md +5 -0
- data/vendor-src/libleptris/TODO.max-perf/9-prebuilt-gem-matrix.md +14 -0
- data/vendor-src/libleptris/TODO.md +33 -0
- data/vendor-src/libleptris/TODO.transform/README.md +39 -0
- data/vendor-src/libleptris/TODO.validate/README.md +32 -0
- data/vendor-src/libleptris/TODO.xpath2/README.md +91 -0
- data/vendor-src/libleptris/TODO.xslt-full/01-xpath-fn-sequences.md +27 -0
- data/vendor-src/libleptris/TODO.xslt-full/02-xpath-fn-regex.md +13 -0
- data/vendor-src/libleptris/TODO.xslt-full/03-xpath-fn-math.md +10 -0
- data/vendor-src/libleptris/TODO.xslt-full/04-xpath-fn-strings-qname-uri.md +97 -0
- data/vendor-src/libleptris/TODO.xslt-full/05-xpath-fn-dates.md +30 -0
- data/vendor-src/libleptris/TODO.xslt-full/06-xpath-grammar-3x.md +83 -0
- data/vendor-src/libleptris/TODO.xslt-full/07-xpath-function-items.md +124 -0
- data/vendor-src/libleptris/TODO.xslt-full/08-xpath-maps-arrays.md +79 -0
- data/vendor-src/libleptris/TODO.xslt-full/09-xslt-noop-fillins.md +35 -0
- data/vendor-src/libleptris/TODO.xslt-full/10-xslt-tunnel-params.md +9 -0
- data/vendor-src/libleptris/TODO.xslt-full/11-xquery-core.md +119 -0
- data/vendor-src/libleptris/TODO.xslt-full/12-xquery-31.md +65 -0
- data/vendor-src/libleptris/TODO.xslt-full/13-perf-inprocess.md +425 -0
- data/vendor-src/libleptris/TODO.xslt-full/14-html-mode.md +803 -0
- data/vendor-src/libleptris/TODO.xslt-full/15-binding-entries.md +19 -0
- data/vendor-src/libleptris/TODO.xslt-full/16-schematron.md +156 -0
- data/vendor-src/libleptris/TODO.xslt-full/17-xml-diff.md +52 -0
- data/vendor-src/libleptris/TODO.xslt-full/18-compact-nodes.md +278 -0
- data/vendor-src/libleptris/TODO.xslt-full/README.md +26 -0
- data/vendor-src/libleptris/TODO.xslt-full/REMAINING.md +163 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/00-triage.md +171 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/01-fragment-nodes.md +19 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/02-root-node-semantics.md +34 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/03-crashes.md +15 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/04-namespaces.md +14 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/05-number-attrset-sort.md +13 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/06-document-chains.md +10 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/07-charef-serializer.md +9 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/08-perf-gate.md +8 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/09-release.md +14 -0
- data/vendor-src/libleptris/VALIDATION.md +151 -0
- data/vendor-src/libleptris/benchmarks/CMakeLists.txt +259 -0
- data/vendor-src/libleptris/benchmarks/README.adoc +228 -0
- data/vendor-src/libleptris/benchmarks/README.md +212 -0
- data/vendor-src/libleptris/benchmarks/common/benchmark.c +252 -0
- data/vendor-src/libleptris/benchmarks/common/benchmark.h +77 -0
- data/vendor-src/libleptris/benchmarks/common/test_data.c +415 -0
- data/vendor-src/libleptris/benchmarks/common/test_data.h +18 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/CMakeLists.txt +184 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_decomp.cpp +110 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_first_access.cpp +261 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_many_attrs.cpp +150 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_memory.cpp +185 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_parse.cpp +270 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_parse_ops.cpp +392 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_sax.c +106 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_write.cpp +351 -0
- data/vendor-src/libleptris/benchmarks/data/attrs.xml +303 -0
- data/vendor-src/libleptris/benchmarks/data/cdata_test.xml +13 -0
- data/vendor-src/libleptris/benchmarks/data/comment_test.xml +15 -0
- data/vendor-src/libleptris/benchmarks/data/deep.xml +205 -0
- data/vendor-src/libleptris/benchmarks/data/generate_attrs.rb +22 -0
- data/vendor-src/libleptris/benchmarks/data/generate_deep.rb +25 -0
- data/vendor-src/libleptris/benchmarks/data/generate_large.rb +33 -0
- data/vendor-src/libleptris/benchmarks/data/generate_wide.rb +18 -0
- data/vendor-src/libleptris/benchmarks/data/large.xml +21003 -0
- data/vendor-src/libleptris/benchmarks/data/large_workflow.xml +4003 -0
- data/vendor-src/libleptris/benchmarks/data/medium.xml +67 -0
- data/vendor-src/libleptris/benchmarks/data/medium_workflow.xml +353 -0
- data/vendor-src/libleptris/benchmarks/data/pi_test.xml +9 -0
- data/vendor-src/libleptris/benchmarks/data/small.xml +10 -0
- data/vendor-src/libleptris/benchmarks/data/small_workflow.xml +36 -0
- data/vendor-src/libleptris/benchmarks/data/wide.xml +5003 -0
- data/vendor-src/libleptris/benchmarks/dom/bench_document_lifecycle.c +69 -0
- data/vendor-src/libleptris/benchmarks/dom/bench_leptris.c +184 -0
- data/vendor-src/libleptris/benchmarks/dom/bench_libxml2.c +176 -0
- data/vendor-src/libleptris/benchmarks/dom/bench_text_borrowed.c +74 -0
- data/vendor-src/libleptris/benchmarks/dom/dom_benchmark_v2.cpp +314 -0
- data/vendor-src/libleptris/benchmarks/fixtures/large.xml +4003 -0
- data/vendor-src/libleptris/benchmarks/fixtures/large_catalog.xml +50003 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2/eve.xml +6 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2/slashdot.rdf +66 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2/wap.xml +27 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/4rects.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/a-valid.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/a-wf.xml +9 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/bike.xml +41 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/circle.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/defs.xml +14 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/desc.xml +14 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/ellipse.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/flower2.xml +44 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/gradient.xml +16 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/group01.xml +15 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/group02.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/group03.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/image-valid.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/image-wf.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/lin-gradient.xml +16 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/marker.xml +28 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/mask.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/mathswitch.xml +32 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/parentns.xml +12 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/path01.xml +5 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/path02.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/patternfill.xml +12 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/polyline.xml +9 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/private.xml +19 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/rad-gradient.xml +17 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/rectangle.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/richdesc.xml +12 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/script.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/structure01.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/style.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/switch.xml +21 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/symbol-use.xml +28 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/template.xml +9 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/text01.xml +12 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/text02.xml +17 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/text03.xml +8 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/toap01.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/toap02.xml +33 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/transform.xml +26 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/trivial.xml +6 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/twin-gradients.xml +19 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/v-template.xml +9 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/viewport-nest.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/viewport-transform.xml +46 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/viewport.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/wf-template.xml +7 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_xsdtest.xml +5286 -0
- data/vendor-src/libleptris/benchmarks/fixtures/medium.xml +403 -0
- data/vendor-src/libleptris/benchmarks/fixtures/medium_catalog.xml +3003 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/empty.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/large.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/latintest_latin1.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/latintest_utf8.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/multiline.xml +3 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/small.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/truncation.xml +19 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8.xml +87 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8_bom.xml +87 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8_clean.xml +84 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8_nodecl.xml +86 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml//321/202/320/265/321/201/321/202.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/empty.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/large.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/latintest_latin1.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/latintest_utf8.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/multiline.xml +3 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/small.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/truncation.xml +19 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8.xml +87 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8_bom.xml +87 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8_clean.xml +84 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8_nodecl.xml +86 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests//321/202/320/265/321/201/321/202.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/small.xml +38 -0
- data/vendor-src/libleptris/benchmarks/html/bench_html_parse.c +111 -0
- data/vendor-src/libleptris/benchmarks/html/gen_nokogiri_reference.rb +112 -0
- data/vendor-src/libleptris/benchmarks/html/nokogiri_html_parse.rb +64 -0
- data/vendor-src/libleptris/benchmarks/matrix/README.md +71 -0
- data/vendor-src/libleptris/benchmarks/matrix/bench2html.rb +316 -0
- data/vendor-src/libleptris/benchmarks/matrix/bench_matrix.cpp +724 -0
- data/vendor-src/libleptris/benchmarks/modification/bench_leptris_modify.c +211 -0
- data/vendor-src/libleptris/benchmarks/modification/bench_node_creation.c +130 -0
- data/vendor-src/libleptris/benchmarks/results/BENCHMARK_REPORT.md +226 -0
- data/vendor-src/libleptris/benchmarks/results/baseline_report.md +219 -0
- data/vendor-src/libleptris/benchmarks/results/benchmark_20251223_134550.json +13 -0
- data/vendor-src/libleptris/benchmarks/results/benchmark_20260129_225844.json +13 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_dom_output.txt +24 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_modify.json +36 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_modify_optimized.json +36 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_modify_session1.json +36 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_modify_session2.json +36 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_serialize.json +34 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_xpath_output.txt +24 -0
- data/vendor-src/libleptris/benchmarks/results/libxml2_dom_output.txt +24 -0
- data/vendor-src/libleptris/benchmarks/results/libxml2_xpath_output.txt +24 -0
- data/vendor-src/libleptris/benchmarks/results/phase16_session2.json +21 -0
- data/vendor-src/libleptris/benchmarks/results/phase17.5_session1.json +30 -0
- data/vendor-src/libleptris/benchmarks/results/phase17_session1.json +30 -0
- data/vendor-src/libleptris/benchmarks/results/pugixml_dom_output.txt +51 -0
- data/vendor-src/libleptris/benchmarks/results/xpath_axes_leptris.json +318 -0
- data/vendor-src/libleptris/benchmarks/results/xpath_axes_libxml2.json +318 -0
- data/vendor-src/libleptris/benchmarks/results/xpath_functions_leptris.json +222 -0
- data/vendor-src/libleptris/benchmarks/results/xpath_functions_libxml2.json +222 -0
- data/vendor-src/libleptris/benchmarks/sax/bench_iterparse.c +115 -0
- data/vendor-src/libleptris/benchmarks/sax/bench_leptris.c +124 -0
- data/vendor-src/libleptris/benchmarks/sax/bench_libxml2.c +115 -0
- data/vendor-src/libleptris/benchmarks/serialization/bench_leptris_serialize.c +198 -0
- data/vendor-src/libleptris/benchmarks/src/benchmark_base.h +175 -0
- data/vendor-src/libleptris/benchmarks/twins/mutation_leptris.c +37 -0
- data/vendor-src/libleptris/benchmarks/twins/mutation_pugixml.cpp +28 -0
- data/vendor-src/libleptris/benchmarks/twins/parse_leptris.c +35 -0
- data/vendor-src/libleptris/benchmarks/twins/parse_pugixml.cpp +35 -0
- data/vendor-src/libleptris/benchmarks/utils.c +171 -0
- data/vendor-src/libleptris/benchmarks/utils.h +70 -0
- data/vendor-src/libleptris/benchmarks/workflows/bench_dom_modify.c +325 -0
- data/vendor-src/libleptris/benchmarks/workflows/bench_end_to_end.c +529 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_axes.c +411 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_axes_libxml2.c +108 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_diagnostic.c +431 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_functions.c +271 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_functions_libxml2.c +123 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_leptris.c +78 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_libxml2.c +98 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_pugixml.cpp +117 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_scalar_eval.c +86 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_scalar_eval_libxml2.c +70 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_xslt_transform.c +48 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_dispatch.c +52 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_dispatch_heavy.c +82 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_dispatch_pred.c +34 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_subtree_copy.c +55 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_valueof.c +46 -0
- data/vendor-src/libleptris/benchmarks/xslt/heavy_lxml.py +48 -0
- data/vendor-src/libleptris/benchmarks/xslt/scorecard_lxml.py +169 -0
- data/vendor-src/libleptris/bindings/ruby/leptris.gemspec +22 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/document.rb +60 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/element.rb +86 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/error.rb +6 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/node.rb +73 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/sax.rb +189 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/xpath.rb +44 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris.rb +137 -0
- data/vendor-src/libleptris/bindings/ruby/spec/leptris_spec.rb +113 -0
- data/vendor-src/libleptris/bindings/ruby/spec/sax_spec.rb +141 -0
- data/vendor-src/libleptris/bindings/ruby/spec/spec_helper.rb +7 -0
- data/vendor-src/libleptris/bindings/ruby/test_full.rb +21 -0
- data/vendor-src/libleptris/bindings/rust/Cargo.lock +7 -0
- data/vendor-src/libleptris/bindings/rust/Cargo.toml +13 -0
- data/vendor-src/libleptris/bindings/rust/README.md +61 -0
- data/vendor-src/libleptris/bindings/rust/build.rs +74 -0
- data/vendor-src/libleptris/bindings/rust/src/ffi.rs +204 -0
- data/vendor-src/libleptris/bindings/rust/src/lib.rs +580 -0
- data/vendor-src/libleptris/bindings/rust/tests/integration.rs +156 -0
- data/vendor-src/libleptris/cli/ARCHITECTURE_REVIEW.md +514 -0
- data/vendor-src/libleptris/cli/CLI_ARCHITECTURE.md +851 -0
- data/vendor-src/libleptris/cli/CMakeLists.txt +46 -0
- data/vendor-src/libleptris/cli/cli.c +115 -0
- data/vendor-src/libleptris/cli/cli.h +232 -0
- data/vendor-src/libleptris/cli/commands/diff.c +208 -0
- data/vendor-src/libleptris/cli/commands/format.c +379 -0
- data/vendor-src/libleptris/cli/commands/parse.c +343 -0
- data/vendor-src/libleptris/cli/commands/validate.c +284 -0
- data/vendor-src/libleptris/cli/commands/version.c +49 -0
- data/vendor-src/libleptris/cli/commands/xpath.c +428 -0
- data/vendor-src/libleptris/cli/commands/xquery.c +188 -0
- data/vendor-src/libleptris/cli/completion/leptris.bash +86 -0
- data/vendor-src/libleptris/cli/completion/leptris.zsh +74 -0
- data/vendor-src/libleptris/cli/error.c +394 -0
- data/vendor-src/libleptris/cli/error.h +360 -0
- data/vendor-src/libleptris/cli/leptris +0 -0
- data/vendor-src/libleptris/cli/main.c +127 -0
- data/vendor-src/libleptris/cli/man/leptris-format.1.adoc +226 -0
- data/vendor-src/libleptris/cli/man/leptris-parse.1.adoc +213 -0
- data/vendor-src/libleptris/cli/man/leptris-xpath.1.adoc +479 -0
- data/vendor-src/libleptris/cli/man/leptris.1.adoc +192 -0
- data/vendor-src/libleptris/cli/options.c +451 -0
- data/vendor-src/libleptris/cli/options.h +378 -0
- data/vendor-src/libleptris/cli/output.c +841 -0
- data/vendor-src/libleptris/cli/output.h +361 -0
- data/vendor-src/libleptris/cmake/FindUtf8proc.cmake +56 -0
- data/vendor-src/libleptris/cmake/leptris-config.cmake.in +14 -0
- data/vendor-src/libleptris/cmake/leptris.pc.in +11 -0
- data/vendor-src/libleptris/cmake/modules/AdocMan.cmake +132 -0
- data/vendor-src/libleptris/docs/ARCHITECTURE_REVIEW.md +280 -0
- data/vendor-src/libleptris/docs/Doxyfile +47 -0
- data/vendor-src/libleptris/docs/FFI.md +165 -0
- data/vendor-src/libleptris/docs/README.md +47 -0
- data/vendor-src/libleptris/docs/ROADMAP-SAXON-PARITY.md +194 -0
- data/vendor-src/libleptris/docs/guide/building.md +199 -0
- data/vendor-src/libleptris/docs/guide/getting-started.md +134 -0
- data/vendor-src/libleptris/docs/guide/parsing.md +315 -0
- data/vendor-src/libleptris/docs/guide/xpath-queries.md +444 -0
- data/vendor-src/libleptris/examples/c/CMakeLists.txt +58 -0
- data/vendor-src/libleptris/examples/c/README.md +345 -0
- data/vendor-src/libleptris/examples/c/basic_example.c +80 -0
- data/vendor-src/libleptris/examples/c/dom_traversal_example.c +58 -0
- data/vendor-src/libleptris/examples/c/error_handling_example.c +121 -0
- data/vendor-src/libleptris/examples/c/namespace_example.c +49 -0
- data/vendor-src/libleptris/examples/c/xpath_example.c +74 -0
- data/vendor-src/libleptris/ports/leptris/portfile.cmake +41 -0
- data/vendor-src/libleptris/ports/leptris/usage +28 -0
- data/vendor-src/libleptris/scripts/check_dll_exports.py +54 -0
- data/vendor-src/libleptris/scripts/check_export_surface.py +84 -0
- data/vendor-src/libleptris/scripts/check_ffi_mirrors.py +163 -0
- data/vendor-src/libleptris/scripts/check_formatting.sh +30 -0
- data/vendor-src/libleptris/scripts/check_shared_exports.sh +120 -0
- data/vendor-src/libleptris/scripts/check_trailing_whitespace.sh +18 -0
- data/vendor-src/libleptris/scripts/gen-api-docs.sh +31 -0
- data/vendor-src/libleptris/scripts/run_static_analysis.sh +16 -0
- data/vendor-src/libleptris/scripts/validate.sh +199 -0
- data/vendor-src/libleptris/scripts/xslt_triage.sh +72 -0
- data/vendor-src/libleptris/src/CMakeLists.txt +597 -0
- data/vendor-src/libleptris/src/include/leptris/descriptor.h +178 -0
- data/vendor-src/libleptris/src/include/leptris/dom/document.h +213 -0
- data/vendor-src/libleptris/src/include/leptris/dom/element.h +435 -0
- data/vendor-src/libleptris/src/include/leptris/dom/serialize.h +133 -0
- data/vendor-src/libleptris/src/include/leptris/dtd.h +178 -0
- data/vendor-src/libleptris/src/include/leptris/error.h +97 -0
- data/vendor-src/libleptris/src/include/leptris/sax/sax.h +584 -0
- data/vendor-src/libleptris/src/include/leptris/types.h +386 -0
- data/vendor-src/libleptris/src/include/leptris/xpath/xpath.h +250 -0
- data/vendor-src/libleptris/src/include/leptris/xquery/xquery.h +80 -0
- data/vendor-src/libleptris/src/include/leptris.h +3701 -0
- data/vendor-src/libleptris/src/leptris/chartype.h +124 -0
- data/vendor-src/libleptris/src/leptris/common/chartype.c +90 -0
- data/vendor-src/libleptris/src/leptris/common/chartype.h +44 -0
- data/vendor-src/libleptris/src/leptris/common/cpu.c +40 -0
- data/vendor-src/libleptris/src/leptris/common/cpu.h +63 -0
- data/vendor-src/libleptris/src/leptris/common/entities.c +329 -0
- data/vendor-src/libleptris/src/leptris/common/entities.h +79 -0
- data/vendor-src/libleptris/src/leptris/common/format_number.c +273 -0
- data/vendor-src/libleptris/src/leptris/common/format_number.h +29 -0
- data/vendor-src/libleptris/src/leptris/common/port.h +171 -0
- data/vendor-src/libleptris/src/leptris/common/simd_text.c +237 -0
- data/vendor-src/libleptris/src/leptris/common/simd_text.h +104 -0
- data/vendor-src/libleptris/src/leptris/common/simd_text_avx2.c +105 -0
- data/vendor-src/libleptris/src/leptris/common/simd_text_neon.c +280 -0
- data/vendor-src/libleptris/src/leptris/common/string_view.c +204 -0
- data/vendor-src/libleptris/src/leptris/common/string_view.h +68 -0
- data/vendor-src/libleptris/src/leptris/common/types_internal.h +31 -0
- data/vendor-src/libleptris/src/leptris/core.c +201 -0
- data/vendor-src/libleptris/src/leptris/descriptor/plan.c +527 -0
- data/vendor-src/libleptris/src/leptris/diff/diff.c +491 -0
- data/vendor-src/libleptris/src/leptris/dom/cdata.c +47 -0
- data/vendor-src/libleptris/src/leptris/dom/cdata.h +73 -0
- data/vendor-src/libleptris/src/leptris/dom/comment.c +48 -0
- data/vendor-src/libleptris/src/leptris/dom/comment.h +74 -0
- data/vendor-src/libleptris/src/leptris/dom/compact.c +397 -0
- data/vendor-src/libleptris/src/leptris/dom/compact.h +307 -0
- data/vendor-src/libleptris/src/leptris/dom/diag.c +58 -0
- data/vendor-src/libleptris/src/leptris/dom/diag.h +75 -0
- data/vendor-src/libleptris/src/leptris/dom/digest.c +255 -0
- data/vendor-src/libleptris/src/leptris/dom/doctype.c +137 -0
- data/vendor-src/libleptris/src/leptris/dom/doctype.h +52 -0
- data/vendor-src/libleptris/src/leptris/dom/document_node.c +13 -0
- data/vendor-src/libleptris/src/leptris/dom/document_node.h +21 -0
- data/vendor-src/libleptris/src/leptris/dom/edges.h +60 -0
- data/vendor-src/libleptris/src/leptris/dom/element.c +1114 -0
- data/vendor-src/libleptris/src/leptris/dom/element.h +1109 -0
- data/vendor-src/libleptris/src/leptris/dom/element_index.c +444 -0
- data/vendor-src/libleptris/src/leptris/dom/element_index.h +135 -0
- data/vendor-src/libleptris/src/leptris/dom/element_modify.c +2185 -0
- data/vendor-src/libleptris/src/leptris/dom/element_query.c +1468 -0
- data/vendor-src/libleptris/src/leptris/dom/entity_ref.c +57 -0
- data/vendor-src/libleptris/src/leptris/dom/entity_ref.h +70 -0
- data/vendor-src/libleptris/src/leptris/dom/node.c +420 -0
- data/vendor-src/libleptris/src/leptris/dom/node.h +170 -0
- data/vendor-src/libleptris/src/leptris/dom/node_public.c +937 -0
- data/vendor-src/libleptris/src/leptris/dom/node_vtable.c +138 -0
- data/vendor-src/libleptris/src/leptris/dom/pi.c +70 -0
- data/vendor-src/libleptris/src/leptris/dom/pi.h +80 -0
- data/vendor-src/libleptris/src/leptris/dom/root_doc_map.c +310 -0
- data/vendor-src/libleptris/src/leptris/dom/root_doc_map.h +30 -0
- data/vendor-src/libleptris/src/leptris/dom/text.c +157 -0
- data/vendor-src/libleptris/src/leptris/dom/text.h +119 -0
- data/vendor-src/libleptris/src/leptris/dtd/content_check.c +300 -0
- data/vendor-src/libleptris/src/leptris/dtd/model.c +533 -0
- data/vendor-src/libleptris/src/leptris/dtd/model.h +354 -0
- data/vendor-src/libleptris/src/leptris/dtd/parser.c +827 -0
- data/vendor-src/libleptris/src/leptris/dtd/resolver.c +354 -0
- data/vendor-src/libleptris/src/leptris/dtd/validator.c +668 -0
- data/vendor-src/libleptris/src/leptris/encoding/encoders.c +346 -0
- data/vendor-src/libleptris/src/leptris/encoding/encoders.h +61 -0
- data/vendor-src/libleptris/src/leptris/encoding/encoding.c +451 -0
- data/vendor-src/libleptris/src/leptris/encoding/encoding.h +118 -0
- data/vendor-src/libleptris/src/leptris/encoding/unicode.c +317 -0
- data/vendor-src/libleptris/src/leptris/encoding/unicode.h +64 -0
- data/vendor-src/libleptris/src/leptris/encoding/utf16.c +204 -0
- data/vendor-src/libleptris/src/leptris/encoding/utf16.h +78 -0
- data/vendor-src/libleptris/src/leptris/encoding/wrapper.c +243 -0
- data/vendor-src/libleptris/src/leptris/error.c +134 -0
- data/vendor-src/libleptris/src/leptris/flat/direct_parse.c +1935 -0
- data/vendor-src/libleptris/src/leptris/flat/direct_parse.h +41 -0
- data/vendor-src/libleptris/src/leptris/html/html_parse.c +8040 -0
- data/vendor-src/libleptris/src/leptris/leptris.c +1264 -0
- data/vendor-src/libleptris/src/leptris/leptris_internal.h +910 -0
- data/vendor-src/libleptris/src/leptris/leptris_memory.c +179 -0
- data/vendor-src/libleptris/src/leptris/leptris_memory.h +180 -0
- data/vendor-src/libleptris/src/leptris/leptris_parse.h +195 -0
- data/vendor-src/libleptris/src/leptris/memory/arena.c +243 -0
- data/vendor-src/libleptris/src/leptris/memory/arena.h +93 -0
- data/vendor-src/libleptris/src/leptris/memory/pool.c +1055 -0
- data/vendor-src/libleptris/src/leptris/memory/pool.h +426 -0
- data/vendor-src/libleptris/src/leptris/rng/parse.c +814 -0
- data/vendor-src/libleptris/src/leptris/rng/rng_internal.h +112 -0
- data/vendor-src/libleptris/src/leptris/rng/rng_public.c +159 -0
- data/vendor-src/libleptris/src/leptris/rng/rng_regex.c +453 -0
- data/vendor-src/libleptris/src/leptris/rng/validate.c +1923 -0
- data/vendor-src/libleptris/src/leptris/sax/iterparse.c +435 -0
- data/vendor-src/libleptris/src/leptris/sax/parser.c +105 -0
- data/vendor-src/libleptris/src/leptris/sax/pull.c +489 -0
- data/vendor-src/libleptris/src/leptris/sax/recorder.c +252 -0
- data/vendor-src/libleptris/src/leptris/sax/sax_internal.h +163 -0
- data/vendor-src/libleptris/src/leptris/sax/streaming.c +1469 -0
- data/vendor-src/libleptris/src/leptris/sch/schematron.c +1588 -0
- data/vendor-src/libleptris/src/leptris/serialize/c14n.c +1143 -0
- data/vendor-src/libleptris/src/leptris/serialize/serialize.c +2333 -0
- data/vendor-src/libleptris/src/leptris/serialize/serialize.h +188 -0
- data/vendor-src/libleptris/src/leptris/simd_helpers.h +447 -0
- data/vendor-src/libleptris/src/leptris/unicode/unicode.c +237 -0
- data/vendor-src/libleptris/src/leptris/unicode/unicode.h +113 -0
- data/vendor-src/libleptris/src/leptris/xinclude/xinclude.c +794 -0
- data/vendor-src/libleptris/src/leptris/xpath/bytecode.h +229 -0
- data/vendor-src/libleptris/src/leptris/xpath/compiler.c +1478 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator.c +1099 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator.h +189 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_axes.c +787 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_internal.h +112 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_operators.c +2138 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_path.c +1312 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_types.c +294 -0
- data/vendor-src/libleptris/src/leptris/xpath/functions.c +2544 -0
- data/vendor-src/libleptris/src/leptris/xpath/functions.h +161 -0
- data/vendor-src/libleptris/src/leptris/xpath/functions_exslt.c +545 -0
- data/vendor-src/libleptris/src/leptris/xpath/functions_ext31.c +4316 -0
- data/vendor-src/libleptris/src/leptris/xpath/lexer.c +636 -0
- data/vendor-src/libleptris/src/leptris/xpath/lexer.h +25 -0
- data/vendor-src/libleptris/src/leptris/xpath/parser.c +2992 -0
- data/vendor-src/libleptris/src/leptris/xpath/parser.h +28 -0
- data/vendor-src/libleptris/src/leptris/xpath/vm.c +2903 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_ast_cache.c +319 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_compiled.c +263 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_internal.h +134 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_public.c +1139 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_variables.c +410 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_variables.h +230 -0
- data/vendor-src/libleptris/src/leptris/xquery/xquery.c +2641 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_exec.c +4887 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_functions.c +1612 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_internal.h +862 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_parse.c +2418 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_pattern.c +441 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_public.c +710 -0
- data/vendor-src/libleptris/src/leptris.symvers +16 -0
- data/vendor-src/libleptris/src/man/libleptris.5.adoc +961 -0
- data/vendor-src/libleptris/test/CMakeLists.txt +234 -0
- data/vendor-src/libleptris/test/README.md +59 -0
- data/vendor-src/libleptris/test/abi/test_descriptor.cpp +441 -0
- data/vendor-src/libleptris/test/abi/test_doctype_api.cpp +51 -0
- data/vendor-src/libleptris/test/abi/test_dom_deep_copy.cpp +110 -0
- data/vendor-src/libleptris/test/abi/test_dom_mutation_bugs.cpp +210 -0
- data/vendor-src/libleptris/test/abi/test_header_hygiene.cpp +269 -0
- data/vendor-src/libleptris/test/abi/test_namespace_mutation_and_create.cpp +198 -0
- data/vendor-src/libleptris/test/abi/test_node_get_xpath.cpp +128 -0
- data/vendor-src/libleptris/test/abi/test_nokogiri_api.cpp +392 -0
- data/vendor-src/libleptris/test/abi/test_parse_fragment.cpp +114 -0
- data/vendor-src/libleptris/test/abi/test_previous_sibling_and_c14n_ex.cpp +299 -0
- data/vendor-src/libleptris/test/abi/test_public_surface.cpp +463 -0
- data/vendor-src/libleptris/test/abi/test_serialize_abi.cpp +67 -0
- data/vendor-src/libleptris/test/abi/test_v0_5_14_bugs.cpp +299 -0
- data/vendor-src/libleptris/test/abi/test_xpath_custom_fns.cpp +106 -0
- data/vendor-src/libleptris/test/cli/test_cli.cpp +493 -0
- data/vendor-src/libleptris/test/common/test_simd_spans.cpp +88 -0
- data/vendor-src/libleptris/test/common/test_simd_text.cpp +142 -0
- data/vendor-src/libleptris/test/concurrency/test_concurrency.cpp +218 -0
- data/vendor-src/libleptris/test/diff/test_diff.cpp +244 -0
- data/vendor-src/libleptris/test/dom/test_compact.cpp +339 -0
- data/vendor-src/libleptris/test/dom/test_digest.cpp +111 -0
- data/vendor-src/libleptris/test/dom/test_document_children.cpp +270 -0
- data/vendor-src/libleptris/test/dom/test_dom.cpp +2310 -0
- data/vendor-src/libleptris/test/dom/test_map_lifecycle.cpp +111 -0
- data/vendor-src/libleptris/test/dom/test_node_surface_parity.cpp +268 -0
- data/vendor-src/libleptris/test/dom/test_text_borrowed.cpp +126 -0
- data/vendor-src/libleptris/test/dom/test_vtable.cpp +108 -0
- data/vendor-src/libleptris/test/dtd/test_dtd_validate.cpp +1227 -0
- data/vendor-src/libleptris/test/dtd/test_w3c_conformance.cpp +212 -0
- data/vendor-src/libleptris/test/fixtures/basic.xml +13 -0
- data/vendor-src/libleptris/test/fixtures/cdata.xml +5 -0
- data/vendor-src/libleptris/test/fixtures/malformed.xml +2 -0
- data/vendor-src/libleptris/test/fixtures/namespaces.xml +11 -0
- data/vendor-src/libleptris/test/fixtures/utf16_decl.xml +5 -0
- data/vendor-src/libleptris/test/fuzz/fuzz_parse.c +40 -0
- data/vendor-src/libleptris/test/html/html5lib-redlist.txt +1366 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/LICENSE +21 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/README.md +11 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/adoption01.dat +354 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/adoption02.dat +39 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/blocks.dat +695 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/comments01.dat +217 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/doctype01.dat +474 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/domjs-unsafe.dat +0 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/entities01.dat +943 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/entities02.dat +309 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/foreign-fragment.dat +645 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/html5test-com.dat +301 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/inbody01.dat +54 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/isindex.dat +49 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/main-element.dat +46 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/math.dat +104 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/menuitem-element.dat +240 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/namespace-sensitivity.dat +22 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/noscript01.dat +237 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/pending-spec-changes-plain-text-unsafe.dat +0 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/pending-spec-changes.dat +46 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/plain-text-unsafe.dat +0 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/ruby.dat +302 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/scriptdata01.dat +372 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/search-element.dat +46 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/svg.dat +104 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tables01.dat +308 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/template.dat +1673 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests1.dat +1956 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests10.dat +849 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests11.dat +523 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests12.dat +62 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests14.dat +75 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests15.dat +216 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests16.dat +2602 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests17.dat +179 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests18.dat +558 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests19.dat +1398 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests2.dat +821 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests20.dat +842 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests21.dat +306 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests22.dat +190 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests23.dat +168 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests24.dat +79 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests25.dat +288 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests26.dat +453 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests3.dat +305 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests4.dat +58 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests5.dat +210 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests6.dat +663 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests7.dat +417 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests8.dat +165 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests9.dat +472 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests_innerHTML_1.dat +843 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tricky01.dat +336 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/webkit01.dat +785 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/webkit02.dat +554 -0
- data/vendor-src/libleptris/test/html/html5lib_cases.h.in +6 -0
- data/vendor-src/libleptris/test/html/nokogiri-parity-redlist.txt +1183 -0
- data/vendor-src/libleptris/test/html/nokogiri-tree-tests.dat +18107 -0
- data/vendor-src/libleptris/test/html/test_html.cpp +2191 -0
- data/vendor-src/libleptris/test/html/test_html5lib.cpp +831 -0
- data/vendor-src/libleptris/test/memory/test_arena.cpp +252 -0
- data/vendor-src/libleptris/test/memory/test_oom_injection.cpp +170 -0
- data/vendor-src/libleptris/test/memory/test_pool.cpp +331 -0
- data/vendor-src/libleptris/test/memory/test_pool_arena.cpp +180 -0
- data/vendor-src/libleptris/test/parser/test_encoding.cpp +282 -0
- data/vendor-src/libleptris/test/parser/test_large_documents.cpp +346 -0
- data/vendor-src/libleptris/test/parser/test_parser.cpp +565 -0
- data/vendor-src/libleptris/test/parser/test_simd_count.cpp +70 -0
- data/vendor-src/libleptris/test/perf/test_perf.cpp +362 -0
- data/vendor-src/libleptris/test/perf/test_stress_high_doc_count.cpp +67 -0
- data/vendor-src/libleptris/test/rng/include-cases/bad-construct.rng +7 -0
- data/vendor-src/libleptris/test/rng/include-cases/bad-override.rng +6 -0
- data/vendor-src/libleptris/test/rng/include-cases/bad-start-override.rng +5 -0
- data/vendor-src/libleptris/test/rng/include-cases/ext-lib.rng +3 -0
- data/vendor-src/libleptris/test/rng/include-cases/ext-main.rng +7 -0
- data/vendor-src/libleptris/test/rng/include-cases/lib.rng +5 -0
- data/vendor-src/libleptris/test/rng/include-cases/lib2.rng +6 -0
- data/vendor-src/libleptris/test/rng/include-cases/main.rng +4 -0
- data/vendor-src/libleptris/test/rng/include-cases/no-href.rng +4 -0
- data/vendor-src/libleptris/test/rng/include-cases/override.rng +8 -0
- data/vendor-src/libleptris/test/rng/include-cases/self-include.rng +4 -0
- data/vendor-src/libleptris/test/rng/include-cases/start-override.rng +5 -0
- data/vendor-src/libleptris/test/rng/jing-cases/000.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/000.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/000.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/001.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/001.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/001.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/002.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/002.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/002.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/003.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/003.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/003.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/004.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/004.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/004.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/005.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/005.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/005.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/006.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/006.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/006.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/007.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/007.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/007.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/008.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/008.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/008.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/009.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/009.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/009.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/010.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/010.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/010.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/011.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/011.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/011.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/012.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/012.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/012.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/013.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/013.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/013.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/014.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/014.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/014.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/015.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/015.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/015.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/016.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/016.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/016.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/017.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/017.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/017.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/018.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/018.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/018.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/019.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/019.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/019.rng +7 -0
- data/vendor-src/libleptris/test/rng/jing-cases/020-book.rng +4 -0
- data/vendor-src/libleptris/test/rng/jing-cases/020.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/020.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/020.rng +3 -0
- data/vendor-src/libleptris/test/rng/jing-cases/README.md +32 -0
- data/vendor-src/libleptris/test/rng/jing-cases/jing-ref.json +212 -0
- data/vendor-src/libleptris/test/rng/jing-cases/meta.json +1 -0
- data/vendor-src/libleptris/test/rng/test_rng.cpp +1365 -0
- data/vendor-src/libleptris/test/rng/test_rng_corpus.cpp +133 -0
- data/vendor-src/libleptris/test/rng/test_rng_corpus_msg.cpp +233 -0
- data/vendor-src/libleptris/test/sax/test_iterparse.cpp +203 -0
- data/vendor-src/libleptris/test/sax/test_pull.cpp +214 -0
- data/vendor-src/libleptris/test/sax/test_pull_batch.cpp +201 -0
- data/vendor-src/libleptris/test/sax/test_recorder.cpp +265 -0
- data/vendor-src/libleptris/test/sax/test_sax.cpp +665 -0
- data/vendor-src/libleptris/test/sax/test_streaming.cpp +434 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/README.md +15 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/extends-baseuri-fixup-01.xml +28 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/extends-recursive-01.xml +27 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/include-baseuri-fixup-01.xml +24 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/include-recursive-01.xml +24 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-01.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-02.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-03.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-04.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-05.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-06.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-pattern-global-01.xml +24 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-02.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-03.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-04.xml +19 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-05.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-06.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-07.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-rule-global-01.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-rule-global-02.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-scope-pattern-01.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-scope-phase-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-scope-rule-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-value-element-content-01.xml +33 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/pattern-abstract-01.xml +22 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/pattern-subordinate-document-01.xml +21 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/pattern-subordinate-document-02.xml +21 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-abstract-01.xml +21 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-abstract-02.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-attribute-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-comment-01.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-element-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-pi-01.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-root-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-text-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-variable-01.xml +22 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-variable-02.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-variable-03.xml +22 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-order-01.xml +21 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/schema-default-phase-01.xml +26 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/schema-default-phase-02.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-diagnostic-01.xml +28 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-diagnostic-02.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-name-nopath-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-name-path-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-property-01.xml +28 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-property-copy-of.xml +26 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-value-of-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/xslt-key-01.xml +19 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/xslt-key-element-content-01.xml +21 -0
- data/vendor-src/libleptris/test/sch/test_schematron.cpp +337 -0
- data/vendor-src/libleptris/test/sch/test_schematron_corpus.cpp +421 -0
- data/vendor-src/libleptris/test/serializer/test_c14n.cpp +539 -0
- data/vendor-src/libleptris/test/serializer/test_serialize.cpp +890 -0
- data/vendor-src/libleptris/test/smoke/test_smoke.cpp +41 -0
- data/vendor-src/libleptris/test/xinclude/test_xinclude.cpp +903 -0
- data/vendor-src/libleptris/test/xpath/test_bytecode_vm.cpp +755 -0
- data/vendor-src/libleptris/test/xpath/test_compiled.cpp +171 -0
- data/vendor-src/libleptris/test/xpath/test_exslt.cpp +141 -0
- data/vendor-src/libleptris/test/xpath/test_xpath.cpp +2433 -0
- data/vendor-src/libleptris/test/xpath/test_xpath_conformance.cpp +570 -0
- data/vendor-src/libleptris/test/xpath/test_xslt.cpp +4245 -0
- data/vendor-src/libleptris/test/xquery/books.xml +1 -0
- data/vendor-src/libleptris/test/xquery/qt3/README.md +28 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/concat.xml +878 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/contains.xml +795 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/ends-with.xml +556 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/starts-with.xml +644 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/substring/concepts.xml +1 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/substring.xml +449 -0
- data/vendor-src/libleptris/test/xquery/test_qt3.cpp +324 -0
- data/vendor-src/libleptris/test/xquery/test_xquery.cpp +768 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/ATTRIBUTION.md +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/array.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/array.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/array.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-1-.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-1-.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-1-.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-10-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-10-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-10-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-100.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-100.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-100.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-101.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-101.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-101.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102-inc.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-103.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-103.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-103.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-104.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-104.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-104.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-105.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-105.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-105.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-106.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-106.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-106.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-107.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-107.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-107.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-108.out +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-108.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-108.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-109.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-109.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-109.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-11-.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-11-.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-11-.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.ent +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-111.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-111.xml +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-111.xsl +45 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-112.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-112.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-112.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-113.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-113.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-113.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-114.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-114.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-114.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-115.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-115.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-115.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-116.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-116.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-116.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-117.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-117.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-117.xsl +59 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-118.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-118.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-118.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-119.out +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-119.xml +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-119.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-12-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-12-.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-12-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-120.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-120.xml +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-120.xsl +27 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-121.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-121.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-121.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-122.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-122.xml +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-122.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-123.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-123.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-123.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-124.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-124.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-124.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-125.out +351 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-125.xml +118 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-125.xsl +99 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-126.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-126.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-126.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-127.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-127.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-127.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-128.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-128.xml +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-128.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-129.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-129.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-129.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-13-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-13-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-13-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp1.imp +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp2.imp +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp3.imp +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp4.imp +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.doc +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131-imp.imp +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-132.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-132.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-132.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-133.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-133.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-133.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-134.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-134.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-134.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-135.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-135.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-135.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-136.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-136.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-136.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.imp +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-138.out +23 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-138.xml +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-138.xsl +28 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-139.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-139.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-139.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-14-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-14-.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-14-.xsl +23 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-140.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-140.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-140.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-141.out +46 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-141.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-141.xsl +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-142.out +35 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-142.xml +65 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-142.xsl +85 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-143.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-143.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-143.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-144.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-144.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-144.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-145.err +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-145.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-145.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-1.imp +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-2.imp +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-3.imp +57 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-4.imp +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-5.imp +27 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-6.imp +31 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147.out +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147.xml +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147.xsl +29 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-148.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-148.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-148.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-149.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-149.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-149.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-15-.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-15-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-15-.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-150.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-150.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-150.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-151.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-151.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-152.out +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-152.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-152.xsl +30 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.doc +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-154.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-154.xsl +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-155.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-155.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-155.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.imp1.imp +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.imp2.imp +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.err +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.doc +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-159.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-159.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-159.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-16-.out +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-16-.xml +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-16-.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-160.out +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-160.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-160.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-161.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-161.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-161.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-163.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-163.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-163.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-164.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-164.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-164.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-165.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-165.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-165.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-166.out +15256 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-166.xml +15255 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-166.xsl +131 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-167.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-167.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-167.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-168.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-168.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-168.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.imp +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-17-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-17-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-17-.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-170.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-170.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-170.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-171.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-171.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-171.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-172.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-172.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-172.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-173.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-173.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-173.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-174.err +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-174.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-174.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.xsl +33 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-176.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-176.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-176.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-177.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-177.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-177.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-178.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-178.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-178.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-179.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-179.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-179.xsl +24 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-18-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-18-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-18-.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-180.err +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-180.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-180.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-181.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-181.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-181.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-182.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-182.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-182.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-183.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-183.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-183.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-184.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-184.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-184.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-186.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-186.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-186.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.out +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.xsl +42 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188-imp.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-189.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-189.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-189.xsl +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-19-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-19-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-19-.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190-imp.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191-imp.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-192.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-192.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-192.xsl +33 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-193.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-193.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-193.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-194.err +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-194.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-194.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-195.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-195.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-195.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-196.out +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-196.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-196.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-197.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-197.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-197.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-198.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-198.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-198.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-199.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-199.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-199.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-2-.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-2-.xml +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-2-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-20-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-20-.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-20-.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-200.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-200.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-200.xsl +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-201.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-201.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-201.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-202.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-202.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-202.xsl +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-203.err +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-203.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-203.xsl +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-204.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-204.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-204.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-205.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-205.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-205.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-206.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-206.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-206.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-207.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-207.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-207.xsl +61 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-208.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-208.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-208.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-209.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-209.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-209.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-21-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-21-.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-21-.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-210.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-210.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-210.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-211.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-211.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-211.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-212.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-212.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-212.xsl +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-213.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-213.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-213.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-214.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-214.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-214.xsl +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-215.err +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-215.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-215.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-216.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-216.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-216.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-217.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-217.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-217.xsl +24 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-218.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-218.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-218.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-219.out +68 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-219.xml +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-219.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-22-.out +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-22-.xml +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-22-.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-220.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-220.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-220.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-221.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-221.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-221.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-222.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-222.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-222.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223-imp.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223-inc.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-224.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-224.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-224.xsl +28 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-225.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-225.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-225.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-23-.out +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-23-.xml +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-23-.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-24-.out +27 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-24-.xml +2419 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-24-.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-25-.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-25-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-25-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-26-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-26-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-26-.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-27-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-27-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-27-.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-28-.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-28-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-28-.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.ent +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.out +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-3-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-3-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-3-.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-30-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-30-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-30-.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-31-.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-31-.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-31-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-32-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-32-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-32-.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-33-.out +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-33-.xml +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-33-.xsl +29 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-35-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-35-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-35-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-inc.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-inc.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-38-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-38-.xml +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-38-.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-39-.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-39-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-39-.xsl +34 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-4-.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-4-.xml +38 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-4-.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-40-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-40-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-40-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-41-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-41-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-41-.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-42-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-42-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-42-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-43-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-43-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-43-.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-44-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-44-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-44-.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-45-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-45-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-45-.xsl +27 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-46-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-46-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-46-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-47-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-47-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-47-.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-48-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-48-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-48-.xsl +24 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-49-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-49-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-49-.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-5-.out +954 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-5-.xml +475 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-5-.xsl +158 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-50-.out +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-50-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-50-.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-52.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-52.xml +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-52.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-53.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-53.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-53.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-54.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-54.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-54.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-55.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-55.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-55.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-56.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-56.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-56.xsl +28 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-57.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-57.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-57.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-58.xsl +274 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-59.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-59.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-59.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-6-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-6-.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-6-.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-61.out +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-61.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-61.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62-inc.xsl +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-63.out +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-63.xml +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-63.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-64.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-64.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-64.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.ent +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-66.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-66.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-66.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-68.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-68.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-68.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-69.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-69.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-69.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-7-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-7-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-7-.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-70.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-70.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-70.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-71.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-71.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-71.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-72.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-72.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-72.xsl +31 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-73.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-73.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-73.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-74.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-74.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-74.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-75.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-75.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-75.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-76.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-76.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-76.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-77.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-77.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-77.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-78.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-78.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-78.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-79.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-79.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-79.xsl +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-8-.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-8-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-8-.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-80.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-80.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-80.xsl +29 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-81.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-81.xml +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-81.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-82.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-82.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-82.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-83.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-83.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-83.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-84.out +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-84.xml +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-84.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-86.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-86.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-86.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-87.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-87.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-87.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-88.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-88.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-88.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-89.out +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-89.xml +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-89.xsl +105 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-9-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-9-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-9-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-90.out +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-90.xml +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-90.xsl +35 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-91.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-91.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-91.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-92.out +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-92.xml +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-92.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93-inc.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-94.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-94.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-94.xsl +35 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-95.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-95.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-95.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-96.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-96.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-96.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-97.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-97.xml +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-97.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-98.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-98.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-98.xsl +31 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-99.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-99.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-99.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/character.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/character.xml +23 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/character.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/date_add.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/date_add.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/date_add.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.dtd +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.out +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.xml +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.xsl +62 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/inner.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/items.xml +34 -0
- data/vendor-src/libleptris/test/xslt/open_cases.txt +0 -0
- data/vendor-src/libleptris/test/xslt/test_libxslt_suite.cpp +398 -0
- data/vendor-src/libleptris/vcpkg.json +29 -0
- data/vendor-src/utf8proc/CMakeLists.txt +133 -0
- data/vendor-src/utf8proc/Doxyfile +2765 -0
- data/vendor-src/utf8proc/LICENSE.md +93 -0
- data/vendor-src/utf8proc/MANIFEST +9 -0
- data/vendor-src/utf8proc/Makefile +203 -0
- data/vendor-src/utf8proc/NEWS.md +479 -0
- data/vendor-src/utf8proc/README.md +143 -0
- data/vendor-src/utf8proc/appveyor.yml +46 -0
- data/vendor-src/utf8proc/bench/Makefile +40 -0
- data/vendor-src/utf8proc/bench/bench.c +56 -0
- data/vendor-src/utf8proc/bench/icu.c +61 -0
- data/vendor-src/utf8proc/bench/unistring.c +60 -0
- data/vendor-src/utf8proc/bench/util.c +39 -0
- data/vendor-src/utf8proc/bench/util.h +22 -0
- data/vendor-src/utf8proc/cmake/utf8proc-config.cmake.in +5 -0
- data/vendor-src/utf8proc/data/Makefile +62 -0
- data/vendor-src/utf8proc/data/Manifest.toml +16 -0
- data/vendor-src/utf8proc/data/Project.toml +2 -0
- data/vendor-src/utf8proc/data/data_generator.jl +498 -0
- data/vendor-src/utf8proc/libutf8proc.pc.cmakein +10 -0
- data/vendor-src/utf8proc/libutf8proc.pc.in +10 -0
- data/vendor-src/utf8proc/lump.md +27 -0
- data/vendor-src/utf8proc/test/app/CMakeLists.txt +6 -0
- data/vendor-src/utf8proc/test/app/app.c +9 -0
- data/vendor-src/utf8proc/test/case.c +76 -0
- data/vendor-src/utf8proc/test/charwidth.c +91 -0
- data/vendor-src/utf8proc/test/custom.c +28 -0
- data/vendor-src/utf8proc/test/fuzz_main.c +54 -0
- data/vendor-src/utf8proc/test/fuzzer.c +97 -0
- data/vendor-src/utf8proc/test/graphemetest.c +136 -0
- data/vendor-src/utf8proc/test/iscase.c +63 -0
- data/vendor-src/utf8proc/test/iterate.c +168 -0
- data/vendor-src/utf8proc/test/maxdecomposition.c +22 -0
- data/vendor-src/utf8proc/test/misc.c +51 -0
- data/vendor-src/utf8proc/test/normtest.c +64 -0
- data/vendor-src/utf8proc/test/ossfuzz.sh +13 -0
- data/vendor-src/utf8proc/test/printproperty.c +68 -0
- data/vendor-src/utf8proc/test/tests.c +60 -0
- data/vendor-src/utf8proc/test/tests.h +27 -0
- data/vendor-src/utf8proc/test/valid.c +41 -0
- data/vendor-src/utf8proc/utf8proc.c +834 -0
- data/vendor-src/utf8proc/utf8proc.h +794 -0
- data/vendor-src/utf8proc/utf8proc_data.c +17141 -0
- data/vendor-src/utf8proc/utils.cmake +20 -0
- metadata +1528 -2
|
@@ -0,0 +1,1114 @@
|
|
|
1
|
+
/* lib/src/dom/element.c - Element node implementation (COMPACT ONLY)
|
|
2
|
+
* Copyright (c) 2024, Ribose Inc.
|
|
3
|
+
*
|
|
4
|
+
* HYBRID ARCHITECTURE:
|
|
5
|
+
* Uses regular pointers for hot navigation paths (parent, first_child, next_sibling)
|
|
6
|
+
* to achieve 1.2x performance target vs pugixml.
|
|
7
|
+
* - ~117 bytes per element (vs 192 bytes in legacy design = 1.6x reduction!)
|
|
8
|
+
* - Direct pointer access (no page_base calculation)
|
|
9
|
+
* - Better cache locality than pure compact design
|
|
10
|
+
* - Compact pointers only for cold paths (attributes)
|
|
11
|
+
*
|
|
12
|
+
* This is the ONLY element implementation - no backwards compatibility.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
#include "element.h"
|
|
16
|
+
#include "compact.h"
|
|
17
|
+
#include "root_doc_map.h"
|
|
18
|
+
#include "edges.h"
|
|
19
|
+
#include "text.h"
|
|
20
|
+
#include "comment.h"
|
|
21
|
+
#include "cdata.h"
|
|
22
|
+
#include "pi.h"
|
|
23
|
+
#include "entity_ref.h"
|
|
24
|
+
#include "../../include/leptris.h" /* for LEPTRIS_API on public exports */
|
|
25
|
+
#include "doctype.h"
|
|
26
|
+
#include "node.h" /* For leptris_node_get_next_sibling */
|
|
27
|
+
#include "../common/entities.h"
|
|
28
|
+
#include "../common/string_view.h"
|
|
29
|
+
#include "../memory/pool.h"
|
|
30
|
+
#include "../leptris_internal.h"
|
|
31
|
+
#include <stdlib.h>
|
|
32
|
+
#include <string.h>
|
|
33
|
+
#include <stdio.h>
|
|
34
|
+
#include <assert.h>
|
|
35
|
+
|
|
36
|
+
/* From leptris_memory.c — declared here to avoid pulling in the
|
|
37
|
+
* full leptris_memory.h, which conflicts with pi.h's leptris_pi_free. */
|
|
38
|
+
int leptris_element_add_namespace(struct leptris_element* elem, struct leptris_namespace* ns);
|
|
39
|
+
struct leptris_namespace* leptris_namespace_new_pooled(const char* prefix, const char* uri, LeptrisMemoryPool* pool);
|
|
40
|
+
|
|
41
|
+
/* ============================================================================
|
|
42
|
+
* Element Creation
|
|
43
|
+
* ============================================================================ */
|
|
44
|
+
|
|
45
|
+
/* Create element with StringView (true zero-copy!) */
|
|
46
|
+
LeptrisElement leptris_element_create_with_view(
|
|
47
|
+
LeptrisStringView name_view,
|
|
48
|
+
LeptrisMemoryPool* pool
|
|
49
|
+
) {
|
|
50
|
+
if (leptris_sv_is_empty(&name_view) || !pool) return NULL;
|
|
51
|
+
|
|
52
|
+
/* Allocate + zero element from pool. memset handles ALL field
|
|
53
|
+
* initialization to 0/NULL. Only type and name need non-zero
|
|
54
|
+
* values. This eliminates ~20 redundant stores that the old
|
|
55
|
+
* per-field init did after memset. */
|
|
56
|
+
LeptrisElement elem = (LeptrisElement)leptris_pool_alloc(pool, sizeof(struct leptris_element));
|
|
57
|
+
if (!elem) return NULL;
|
|
58
|
+
|
|
59
|
+
memset(elem, 0, sizeof(struct leptris_element));
|
|
60
|
+
elem->base.type = LEPTRIS_NODE_TYPE_ELEMENT;
|
|
61
|
+
elem->name = leptris_sv_to_cstr_pooled(&name_view, pool);
|
|
62
|
+
elem->name_hash = leptris_name_hash_compute(elem->name);
|
|
63
|
+
elem->name_len = (name_view.length > 254)
|
|
64
|
+
? 0xFF : (uint8_t)name_view.length;
|
|
65
|
+
/* Pool copy is writable: a QName splits in place (#846). */
|
|
66
|
+
leptris_elem_split_qname(elem, pool);
|
|
67
|
+
|
|
68
|
+
return elem;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Create element with in-place string (zero-copy) */
|
|
72
|
+
LeptrisElement leptris_element_create_pooled_inplace(char* name, LeptrisMemoryPool* pool) {
|
|
73
|
+
if (!name || !pool) return NULL;
|
|
74
|
+
|
|
75
|
+
/* Create StringView from in-place string */
|
|
76
|
+
LeptrisStringView name_view = leptris_sv_from_cstr(name);
|
|
77
|
+
return leptris_element_create_with_view(name_view, pool);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* Create an element skeleton with no name — for the deferred-NUL
|
|
81
|
+
* zero-copy parser path (TODO 113 Phase 5). The parser fills in
|
|
82
|
+
* elem->name/prefix after consuming the opening tag's terminator,
|
|
83
|
+
* at which point writing a NUL at name_view.data[name_view.length]
|
|
84
|
+
* is safe (the parser has moved past that byte).
|
|
85
|
+
*
|
|
86
|
+
* Caller MUST finalize via the parser before any code reads name. */
|
|
87
|
+
LeptrisElement leptris_element_create_zero_copy(LeptrisMemoryPool* pool) {
|
|
88
|
+
if (!pool) return NULL;
|
|
89
|
+
|
|
90
|
+
LeptrisElement elem = (LeptrisElement)leptris_pool_alloc(
|
|
91
|
+
pool, sizeof(struct leptris_element));
|
|
92
|
+
if (!elem) return NULL;
|
|
93
|
+
|
|
94
|
+
memset(elem, 0, sizeof(struct leptris_element));
|
|
95
|
+
elem->base.type = LEPTRIS_NODE_TYPE_ELEMENT;
|
|
96
|
+
return elem;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Create element using memory pool.
|
|
100
|
+
*
|
|
101
|
+
* The name is COPIED into the pool — callers can free or reuse their
|
|
102
|
+
* buffer immediately. This is the safe contract for the public
|
|
103
|
+
* leptris_element_create() and for cross-document copies; the parser
|
|
104
|
+
* uses leptris_element_create_with_view directly for true zero-copy. */
|
|
105
|
+
LeptrisElement leptris_element_create_pooled(const char* name, LeptrisMemoryPool* pool) {
|
|
106
|
+
if (!name || !pool) return NULL;
|
|
107
|
+
|
|
108
|
+
/* Pool-owned copy; lives for the document's lifetime. */
|
|
109
|
+
char* name_copy = leptris_pool_strdup(pool, name);
|
|
110
|
+
if (!name_copy) return NULL;
|
|
111
|
+
|
|
112
|
+
/* Hand ownership to create_with_view via the inplace path so the
|
|
113
|
+
* name_view points into pool-owned storage, not the caller's buffer. */
|
|
114
|
+
return leptris_element_create_pooled_inplace(name_copy, pool);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Free element - pool allocated, so this is a no-op */
|
|
118
|
+
void leptris_element_free(LeptrisElement elem) {
|
|
119
|
+
/* Pool-allocated elements don't need individual free */
|
|
120
|
+
/* This function exists for API compatibility only */
|
|
121
|
+
(void)elem;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* ============================================================================
|
|
125
|
+
* Regular Pointer Access Functions (no page_base calculation!)
|
|
126
|
+
* ============================================================================ */
|
|
127
|
+
|
|
128
|
+
/* Legacy public setter entrypoints — delegate to the compact-offset
|
|
129
|
+
* setters in element.h (TODO 90 Phase 2b). Kept as out-of-line
|
|
130
|
+
* symbols so the public API doesn't depend on the inline bodies. */
|
|
131
|
+
void leptris_element_set_parent(LeptrisElement elem, LeptrisElement parent) {
|
|
132
|
+
leptris_elem_set_parent(elem, parent);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
void leptris_element_set_first_child(LeptrisElement elem, LeptrisElement child) {
|
|
136
|
+
leptris_elem_set_first_child(elem, (LeptrisNode*)child);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
void leptris_element_set_last_child(LeptrisElement elem, LeptrisElement child) {
|
|
140
|
+
leptris_elem_set_last_child(elem, (LeptrisNode*)child);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
void leptris_element_set_next_sibling(LeptrisElement elem, LeptrisElement sibling) {
|
|
144
|
+
leptris_elem_set_next_sibling(elem, (LeptrisNode*)sibling);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* ============================================================================
|
|
148
|
+
* Attribute Access Functions (still uses compact pointers - cold path)
|
|
149
|
+
* ============================================================================ */
|
|
150
|
+
|
|
151
|
+
/* Get first attribute — decodes the int32_t offset (TODO 90 Phase 2d). */
|
|
152
|
+
struct leptris_attribute* leptris_element_get_first_attribute(LeptrisElement elem) {
|
|
153
|
+
return leptris_elem_first_attribute(elem);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* Set first attribute — encodes the int32_t offset (TODO 90 Phase 2d). */
|
|
157
|
+
void leptris_element_set_first_attribute(LeptrisElement elem, struct leptris_attribute* attr) {
|
|
158
|
+
leptris_elem_set_first_attribute(elem, attr);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* Get attribute by index */
|
|
162
|
+
struct leptris_attribute* leptris_element_get_attribute_by_index(LeptrisElement elem, uint8_t index) {
|
|
163
|
+
if (!elem || index >= elem->attr_count) return NULL;
|
|
164
|
+
|
|
165
|
+
/* Walk the linked list to find the attribute at index */
|
|
166
|
+
struct leptris_attribute* attr = leptris_element_get_first_attribute(elem);
|
|
167
|
+
for (uint8_t i = 0; i < index && attr; i++) {
|
|
168
|
+
/* Validate attr pointer before accessing next */
|
|
169
|
+
if ((uintptr_t)attr < 0x1000) return NULL; /* Invalid pointer */
|
|
170
|
+
attr = leptris_attr_next(attr);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/* Final validation before returning */
|
|
174
|
+
if ((uintptr_t)attr < 0x1000) return NULL;
|
|
175
|
+
|
|
176
|
+
return attr;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* Get attribute by name */
|
|
180
|
+
struct leptris_attribute* leptris_element_get_attribute_by_name(LeptrisElement elem, const char* name) {
|
|
181
|
+
if (!elem || !name) return NULL;
|
|
182
|
+
return leptris_dom_attr_find(elem, name, leptris_cstr_len16(name));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* S9: the hash-prefiltered walk, factored so the mutation path pays
|
|
186
|
+
* the name strlen exactly once per call (set_attribute used to
|
|
187
|
+
* strlen here AND again through the public wrapper).
|
|
188
|
+
*
|
|
189
|
+
* Hash-filtered attribute lookup (TODO 113 Phase 4). Compute the
|
|
190
|
+
* 15-bit hash of the search name once, then compare small integers
|
|
191
|
+
* in the loop before touching string data. This turns
|
|
192
|
+
* O(N x strlen) into O(N x uint16) for the non-matching case; the
|
|
193
|
+
* final confirm is a short inline byte compare (the TODO 174 law —
|
|
194
|
+
* a memcmp libc call costs more than the scan for 1-16 byte names). */
|
|
195
|
+
struct leptris_attribute* leptris_dom_attr_find(LeptrisElement elem,
|
|
196
|
+
const char* name,
|
|
197
|
+
size_t name_len) {
|
|
198
|
+
if (!elem || !name) return NULL;
|
|
199
|
+
uint16_t name_hash = attr_hash15(name, name_len);
|
|
200
|
+
|
|
201
|
+
struct leptris_attribute* attr = leptris_element_get_first_attribute(elem);
|
|
202
|
+
while (attr) {
|
|
203
|
+
if (attr_name_hash(attr) == name_hash &&
|
|
204
|
+
attr->name_view.length == name_len) {
|
|
205
|
+
if (!leptris_sv_is_empty(&attr->name_view) &&
|
|
206
|
+
leptris_memeq_short(attr->name_view.data, name,
|
|
207
|
+
name_len)) {
|
|
208
|
+
return attr;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
attr = leptris_attr_next(attr);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
return NULL;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/* Get attribute by name (StringView version - internal, faster)
|
|
218
|
+
* This is 2-3x faster than the C string version because:
|
|
219
|
+
* 1. No strlen() call needed
|
|
220
|
+
* 2. Uses length-based comparison first (O(1) mismatch check)
|
|
221
|
+
* 3. No C string conversion needed
|
|
222
|
+
*/
|
|
223
|
+
struct leptris_attribute* leptris_element_get_attribute_by_name_view(LeptrisElement elem, LeptrisStringView name) {
|
|
224
|
+
if (!elem || leptris_sv_is_empty(&name)) return NULL;
|
|
225
|
+
|
|
226
|
+
/* Walk the attribute linked list */
|
|
227
|
+
struct leptris_attribute* attr = leptris_element_get_first_attribute(elem);
|
|
228
|
+
while (attr) {
|
|
229
|
+
/* Direct StringView comparison (O(1) length check + memcmp) */
|
|
230
|
+
if (leptris_sv_equals(&attr->name_view, &name)) {
|
|
231
|
+
return attr;
|
|
232
|
+
}
|
|
233
|
+
attr = leptris_attr_next(attr);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return NULL;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* Add attribute to element */
|
|
240
|
+
int leptris_element_add_attribute(LeptrisElement elem,
|
|
241
|
+
LeptrisStringView name_view,
|
|
242
|
+
LeptrisStringView value_view,
|
|
243
|
+
LeptrisMemoryPool* pool) {
|
|
244
|
+
if (!elem || leptris_sv_is_empty(&name_view) || !pool) return -1;
|
|
245
|
+
|
|
246
|
+
/* Allocate attribute from pool */
|
|
247
|
+
struct leptris_attribute* attr = (struct leptris_attribute*)leptris_pool_alloc(
|
|
248
|
+
pool, sizeof(struct leptris_attribute));
|
|
249
|
+
if (!attr) return -1;
|
|
250
|
+
|
|
251
|
+
/* Initialize attribute */
|
|
252
|
+
attr->name_view = name_view;
|
|
253
|
+
leptris_attr_value_set_heap(attr, value_view);
|
|
254
|
+
|
|
255
|
+
/* Pre-compute the 15-bit hash of the attribute name for O(1)
|
|
256
|
+
* lookup filtering (TODO 113 Phase 4). Entity flag starts
|
|
257
|
+
* clear; the decode below sets it only when expansion fails.
|
|
258
|
+
* Round 19: hash and flag share the field (bit 15). */
|
|
259
|
+
attr->name_hash = attr_hash15(name_view.data, name_view.length);
|
|
260
|
+
|
|
261
|
+
/* CRITICAL FIX: Initialize namespace/prefix fields to prevent stale data.
|
|
262
|
+
* TODO 173: these now live in the side-cache struct (ns_cache_off).
|
|
263
|
+
* 0 = no prefix / namespace_uri = empty/NULL. */
|
|
264
|
+
attr->ns_cache_off = 0;
|
|
265
|
+
|
|
266
|
+
/* EAGER STRING CONVERSION: Convert attribute name and value to NULL-terminated C-strings.
|
|
267
|
+
*
|
|
268
|
+
* PERFORMANCE (TODO 22): attribute NAMES are interned via the pool's
|
|
269
|
+
* hash table (they recur across elements, so dedup pays off).
|
|
270
|
+
* attribute VALUES bypass interning — values are almost always
|
|
271
|
+
* unique per element, so the hash-table lookup/insert cost is
|
|
272
|
+
* wasted. Direct pool allocation instead.
|
|
273
|
+
*
|
|
274
|
+
* CRITICAL: Decode XML entities in attribute values BEFORE converting to C string.
|
|
275
|
+
* Entities like < > & must be decoded to < > & during parsing. */
|
|
276
|
+
/* SINGLE representation (TODO 184 round 4): the caller's views may
|
|
277
|
+
* point at temporary memory, so this path REPLACES them with owned
|
|
278
|
+
* pool copies. Parse-path attrs keep their zero-copy buffer views.
|
|
279
|
+
*
|
|
280
|
+
* Names: interned via the pool's hash table (they recur across
|
|
281
|
+
* elements). Values: direct pool allocation (values are almost
|
|
282
|
+
* always unique — interning cost is wasted).
|
|
283
|
+
*
|
|
284
|
+
* Entities decode BEFORE storing; < > & must read as
|
|
285
|
+
* < > & in the value. */
|
|
286
|
+
char* name_storage = leptris_sv_to_cstr_pooled(&name_view, pool);
|
|
287
|
+
if (name_storage) {
|
|
288
|
+
attr->name_view = leptris_sv_from_ptr(
|
|
289
|
+
name_storage, name_view.length);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/* Allocate value storage directly from the pool — no interning. */
|
|
293
|
+
char* value_storage = (char*)leptris_pool_alloc(pool, value_view.length + 1);
|
|
294
|
+
if (value_storage) {
|
|
295
|
+
memcpy(value_storage, value_view.data, value_view.length);
|
|
296
|
+
value_storage[value_view.length] = '\0';
|
|
297
|
+
|
|
298
|
+
/* Check if value contains entities and decode them */
|
|
299
|
+
if (memchr(value_storage, '&', value_view.length) != NULL) {
|
|
300
|
+
/* Value contains entities - decode them first.
|
|
301
|
+
* leptris_decode_entities_view allocates from the pool, so
|
|
302
|
+
* the value_storage we just allocated becomes garbage
|
|
303
|
+
* (pool will reclaim it eventually). This is a minor
|
|
304
|
+
* waste; entity-bearing attribute values are rare. */
|
|
305
|
+
LeptrisStringView decoded_sv = { value_storage, value_view.length };
|
|
306
|
+
char* decoded = leptris_decode_entities_view(&decoded_sv, pool);
|
|
307
|
+
if (decoded) {
|
|
308
|
+
leptris_attr_value_set_heap(attr, leptris_sv_from_cstr(decoded));
|
|
309
|
+
} else {
|
|
310
|
+
leptris_attr_value_set_heap(attr, leptris_sv_from_ptr(value_storage, value_view.length));
|
|
311
|
+
attr_set_entities(attr, 1);
|
|
312
|
+
}
|
|
313
|
+
} else {
|
|
314
|
+
leptris_attr_value_set_heap(attr, leptris_sv_from_ptr(value_storage, value_view.length));
|
|
315
|
+
}
|
|
316
|
+
} else {
|
|
317
|
+
leptris_attr_value_set_heap(attr, leptris_sv_from_ptr(NULL, 0));
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
leptris_attr_set_next(attr, NULL);
|
|
321
|
+
|
|
322
|
+
/* Append via cached last_attribute pointer (TODO 106).
|
|
323
|
+
* Maintains the same invariant as leptris_element_set_attribute.
|
|
324
|
+
* Decode the int32_t offset to access the struct, then update via
|
|
325
|
+
* the encoder (TODO 90 Phase 2d). */
|
|
326
|
+
struct leptris_attribute* last = leptris_elem_last_attribute(elem);
|
|
327
|
+
if (last) {
|
|
328
|
+
leptris_attr_set_next(last, attr);
|
|
329
|
+
} else {
|
|
330
|
+
leptris_elem_set_first_attribute(elem, attr);
|
|
331
|
+
}
|
|
332
|
+
leptris_elem_set_last_attribute(elem, attr);
|
|
333
|
+
|
|
334
|
+
/* Increment attribute count */
|
|
335
|
+
elem->attr_count++;
|
|
336
|
+
|
|
337
|
+
return 0;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/* Add attribute in deferred-NUL mode (TODO 113 Phase 5).
|
|
341
|
+
*
|
|
342
|
+
* Mirrors leptris_element_add_attribute but leaves attr->name and
|
|
343
|
+
* attr->value NULL when no entity decoding is needed. The parser
|
|
344
|
+
* fills them in by NUL-terminating in the writable XML buffer after
|
|
345
|
+
* the opening tag is consumed — saving two pool allocations per
|
|
346
|
+
* attribute on the common (no-entity) path. Entity-bearing values
|
|
347
|
+
* are still pool-allocated eagerly (rare path, can't be zero-copied
|
|
348
|
+
* because the decoded bytes don't exist in the source buffer). */
|
|
349
|
+
int leptris_element_add_attribute_zero_copy(LeptrisElement elem,
|
|
350
|
+
LeptrisStringView name_view,
|
|
351
|
+
LeptrisStringView value_view,
|
|
352
|
+
LeptrisMemoryPool* pool) {
|
|
353
|
+
if (!elem || leptris_sv_is_empty(&name_view) || !pool) return -1;
|
|
354
|
+
|
|
355
|
+
struct leptris_attribute* attr = (struct leptris_attribute*)leptris_pool_alloc(
|
|
356
|
+
pool, sizeof(struct leptris_attribute));
|
|
357
|
+
if (!attr) return -1;
|
|
358
|
+
|
|
359
|
+
attr->name_view = name_view;
|
|
360
|
+
leptris_attr_value_set_heap(attr, value_view);
|
|
361
|
+
|
|
362
|
+
attr->name_hash = attr_hash15(name_view.data, name_view.length);
|
|
363
|
+
|
|
364
|
+
attr->ns_cache_off = 0; /* TODO 173: side cache allocated on demand. */
|
|
365
|
+
|
|
366
|
+
if (memchr(value_view.data, '&', value_view.length) != NULL) {
|
|
367
|
+
char* value_storage = (char*)leptris_pool_alloc(pool, value_view.length + 1);
|
|
368
|
+
if (value_storage) {
|
|
369
|
+
memcpy(value_storage, value_view.data, value_view.length);
|
|
370
|
+
value_storage[value_view.length] = '\0';
|
|
371
|
+
LeptrisStringView decoded_sv = { value_storage, value_view.length };
|
|
372
|
+
char* decoded = leptris_decode_entities_view(&decoded_sv, pool);
|
|
373
|
+
if (decoded) {
|
|
374
|
+
leptris_attr_value_set_heap(attr, leptris_sv_from_cstr(decoded));
|
|
375
|
+
attr_set_entities(attr, 0);
|
|
376
|
+
} else {
|
|
377
|
+
leptris_attr_value_set_heap(attr, leptris_sv_from_ptr(value_storage, value_view.length));
|
|
378
|
+
attr_set_entities(attr, 1);
|
|
379
|
+
}
|
|
380
|
+
} else {
|
|
381
|
+
attr_set_entities(attr, 0);
|
|
382
|
+
}
|
|
383
|
+
} else {
|
|
384
|
+
attr_set_entities(attr, 0);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
leptris_attr_set_next(attr, NULL);
|
|
388
|
+
|
|
389
|
+
struct leptris_attribute* last = leptris_elem_last_attribute(elem);
|
|
390
|
+
if (last) {
|
|
391
|
+
leptris_attr_set_next(last, attr);
|
|
392
|
+
} else {
|
|
393
|
+
leptris_elem_set_first_attribute(elem, attr);
|
|
394
|
+
}
|
|
395
|
+
leptris_elem_set_last_attribute(elem, attr);
|
|
396
|
+
|
|
397
|
+
elem->attr_count++;
|
|
398
|
+
return 0;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/* ============================================================================
|
|
402
|
+
* Name and Namespace Access
|
|
403
|
+
* ============================================================================ */
|
|
404
|
+
|
|
405
|
+
/* Get element name (lazy conversion from StringView to C string) */
|
|
406
|
+
const char* leptris_element_get_name(LeptrisElement elem) {
|
|
407
|
+
if (!elem) return NULL;
|
|
408
|
+
|
|
409
|
+
/* Validate node type - only elements have names */
|
|
410
|
+
LeptrisNode* node = (LeptrisNode*)elem;
|
|
411
|
+
if (node->type != LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
412
|
+
return NULL; /* Not an element node */
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/* name_view removed (TODO 90) — name is set eagerly by create_with_view. */
|
|
416
|
+
return elem->name;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/* Set prefix using StringView (zero-copy!) */
|
|
420
|
+
|
|
421
|
+
/* Set namespace URI from StringView (eager pool-strdup — no lazy staging).
|
|
422
|
+
* TODO 90: namespace_uri_view removed from struct; this setter is now
|
|
423
|
+
* the only path. It does the conversion eagerly so subsequent
|
|
424
|
+
* leptris_element_get_namespace_uri() just returns the cached char*. */
|
|
425
|
+
void leptris_element_set_namespace_uri_view(LeptrisElement elem, LeptrisStringView uri_view) {
|
|
426
|
+
if (!elem) return;
|
|
427
|
+
if (leptris_sv_is_empty(&uri_view)) {
|
|
428
|
+
if (elem->ns_cache) elem->ns_cache->namespace_uri = NULL;
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
/* Issue #525: a namespace now exists — unprefixed XPath name
|
|
432
|
+
* tests must consult the resolver from here on. */
|
|
433
|
+
{
|
|
434
|
+
struct leptris_document* d = leptris_element_get_document(elem);
|
|
435
|
+
if (d) d->has_namespaces = 1;
|
|
436
|
+
}
|
|
437
|
+
LeptrisMemoryPool* pool = leptris_element_get_pool(elem);
|
|
438
|
+
if (pool) {
|
|
439
|
+
char* storage = (char*)leptris_pool_alloc(pool, uri_view.length + 1);
|
|
440
|
+
if (!storage) return;
|
|
441
|
+
memcpy(storage, uri_view.data, uri_view.length);
|
|
442
|
+
storage[uri_view.length] = '\0';
|
|
443
|
+
leptris_elem_set_ns_uri(elem, storage, pool);
|
|
444
|
+
} else {
|
|
445
|
+
leptris_elem_set_ns_uri(elem, (char*)uri_view.data, NULL);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/* Get element prefix */
|
|
450
|
+
const char* leptris_element_get_prefix(LeptrisElement elem) {
|
|
451
|
+
return leptris_elem_prefix(elem);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/* Get element namespace URI */
|
|
455
|
+
const char* leptris_element_get_namespace_uri(LeptrisElement elem) {
|
|
456
|
+
if (!elem) return NULL;
|
|
457
|
+
|
|
458
|
+
char* cached = leptris_elem_ns_uri(elem);
|
|
459
|
+
if (cached) return cached;
|
|
460
|
+
|
|
461
|
+
/* LAZY NAMESPACE RESOLUTION: resolve via ancestors. An
|
|
462
|
+
* xmlns="" UNDECLARATION resolves to the empty string — the
|
|
463
|
+
* element deliberately has NO namespace (the #817 detach and
|
|
464
|
+
* the default-ns undeclare path), not an empty-URI one. */
|
|
465
|
+
const char* prefix = leptris_elem_prefix(elem);
|
|
466
|
+
const char* uri = leptris_element_lookup_namespace(elem, prefix);
|
|
467
|
+
if (uri && !*uri) return NULL;
|
|
468
|
+
if (uri) {
|
|
469
|
+
LeptrisMemoryPool* pool = leptris_element_get_pool(elem);
|
|
470
|
+
if (pool) {
|
|
471
|
+
size_t len = strlen(uri);
|
|
472
|
+
char* copy = (char*)leptris_pool_alloc(pool, len + 1);
|
|
473
|
+
if (copy) {
|
|
474
|
+
memcpy(copy, uri, len);
|
|
475
|
+
copy[len] = '\0';
|
|
476
|
+
leptris_elem_set_ns_uri(elem, copy, pool);
|
|
477
|
+
}
|
|
478
|
+
} else {
|
|
479
|
+
leptris_elem_set_ns_uri(elem, leptris_strdup(uri), NULL);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return leptris_elem_ns_uri(elem);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
/* Legacy functions for C string input.
|
|
487
|
+
*
|
|
488
|
+
* POOL-STORAGE (Linux LSan leak): these used to heap-strdup into a
|
|
489
|
+
* POOL-allocated cache — document_free never freed the strings, so
|
|
490
|
+
* every XSLT result element with a namespace leaked them. The
|
|
491
|
+
* copies are pool-allocated now: the pool owns cache AND strings
|
|
492
|
+
* and frees both at teardown, so a re-set simply orphans the old
|
|
493
|
+
* pool bytes (bounded; prefix/URI re-assignment is rare). Pool-less
|
|
494
|
+
* (detached) elements keep the heap copy — nothing else could own
|
|
495
|
+
* it — which the (rare) explicit free contract covers. */
|
|
496
|
+
void leptris_element_set_prefix(LeptrisElement elem, const char* prefix) {
|
|
497
|
+
if (!elem) return;
|
|
498
|
+
LeptrisMemoryPool* pool = leptris_element_get_pool(elem);
|
|
499
|
+
char* copy = (prefix && *prefix)
|
|
500
|
+
? (pool ? leptris_pool_strdup(pool, prefix)
|
|
501
|
+
: leptris_strdup(prefix))
|
|
502
|
+
: NULL;
|
|
503
|
+
leptris_elem_set_prefix(elem, copy, pool);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
void leptris_element_set_namespace_uri(LeptrisElement elem, const char* uri) {
|
|
507
|
+
if (!elem) return;
|
|
508
|
+
LeptrisMemoryPool* pool = leptris_element_get_pool(elem);
|
|
509
|
+
char* copy = (uri && *uri)
|
|
510
|
+
? (pool ? leptris_pool_strdup(pool, uri)
|
|
511
|
+
: leptris_strdup(uri))
|
|
512
|
+
: NULL;
|
|
513
|
+
leptris_elem_set_ns_uri(elem, copy, pool);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/* ============================================================================
|
|
517
|
+
* Child Access Functions
|
|
518
|
+
* ============================================================================ */
|
|
519
|
+
|
|
520
|
+
/* Get child count */
|
|
521
|
+
size_t leptris_element_child_count(LeptrisElement elem) {
|
|
522
|
+
if (!elem) return 0;
|
|
523
|
+
return elem->child_count;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/* Get child by index */
|
|
527
|
+
LeptrisElement leptris_element_get_child(LeptrisElement elem, uint16_t index) {
|
|
528
|
+
if (!elem || index >= elem->child_count) return NULL;
|
|
529
|
+
|
|
530
|
+
/* Walk the child linked list */
|
|
531
|
+
LeptrisElement child = leptris_element_get_first_child(elem);
|
|
532
|
+
/* size_t counter: a uint8_t wraps for index > 255 and the walk
|
|
533
|
+
* never terminates early as intended (CodeQL comparison-with-
|
|
534
|
+
* wider-type). */
|
|
535
|
+
for (size_t i = 0; i < index && child; i++) {
|
|
536
|
+
child = leptris_element_get_next_sibling(child);
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
return child;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/* ============================================================================
|
|
543
|
+
* Legacy Public API Functions (compatibility wrappers)
|
|
544
|
+
* ============================================================================ */
|
|
545
|
+
|
|
546
|
+
/* Add attribute (legacy C string API) */
|
|
547
|
+
void leptris_element_add_attribute_legacy(
|
|
548
|
+
LeptrisElement elem,
|
|
549
|
+
const char* name,
|
|
550
|
+
const char* value
|
|
551
|
+
) {
|
|
552
|
+
if (!elem || !name) return;
|
|
553
|
+
|
|
554
|
+
/* Create StringViews from C strings */
|
|
555
|
+
LeptrisStringView name_view = leptris_sv_from_cstr(name);
|
|
556
|
+
LeptrisStringView value_view = leptris_sv_from_cstr(value ? value : "");
|
|
557
|
+
|
|
558
|
+
/* For now, we need a pool. Use element's document pool if available */
|
|
559
|
+
LeptrisMemoryPool* pool = leptris_element_get_pool(elem);
|
|
560
|
+
if (!pool) {
|
|
561
|
+
/* No pool available - can't add attribute in compact mode */
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
leptris_element_add_attribute(elem, name_view, value_view, pool);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
/* Add attribute using memory pool (fast) */
|
|
569
|
+
void leptris_element_add_attribute_pooled(
|
|
570
|
+
LeptrisElement elem,
|
|
571
|
+
const char* name,
|
|
572
|
+
const char* value,
|
|
573
|
+
LeptrisMemoryPool* pool
|
|
574
|
+
) {
|
|
575
|
+
if (!elem || !name || !pool) return;
|
|
576
|
+
|
|
577
|
+
/* Create StringViews from C strings */
|
|
578
|
+
LeptrisStringView name_view = leptris_sv_from_cstr(name);
|
|
579
|
+
LeptrisStringView value_view = leptris_sv_from_cstr(value ? value : "");
|
|
580
|
+
|
|
581
|
+
leptris_element_add_attribute(elem, name_view, value_view, pool);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/* Add attribute with in-place strings (zero-copy) */
|
|
585
|
+
void leptris_element_add_attribute_pooled_inplace(
|
|
586
|
+
LeptrisElement elem,
|
|
587
|
+
char* name,
|
|
588
|
+
char* value,
|
|
589
|
+
LeptrisMemoryPool* pool
|
|
590
|
+
) {
|
|
591
|
+
if (!elem || !name || !pool) return;
|
|
592
|
+
|
|
593
|
+
/* Create StringViews from in-place strings */
|
|
594
|
+
LeptrisStringView name_view = leptris_sv_from_cstr(name);
|
|
595
|
+
LeptrisStringView value_view = leptris_sv_from_cstr(value ? value : "");
|
|
596
|
+
|
|
597
|
+
leptris_element_add_attribute(elem, name_view, value_view, pool);
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
/* Get attribute value by name (legacy API) */
|
|
601
|
+
const char* leptris_element_get_attribute_legacy(LeptrisElement elem, const char* name) {
|
|
602
|
+
if (!elem || !name) return NULL;
|
|
603
|
+
|
|
604
|
+
struct leptris_attribute* attr = leptris_element_get_attribute_by_name(elem, name);
|
|
605
|
+
if (!attr) return NULL;
|
|
606
|
+
|
|
607
|
+
/* Single representation (TODO 184 round 4): entity values expand
|
|
608
|
+
* lazily into the view (owned copy); no-entity views are already
|
|
609
|
+
* NUL-terminated. */
|
|
610
|
+
if (attr_has_entities(attr)) {
|
|
611
|
+
LeptrisStringView raw_v = leptris_attr_value_sv(attr);
|
|
612
|
+
if (!leptris_sv_is_empty(&raw_v) &&
|
|
613
|
+
leptris_element_get_document(elem) &&
|
|
614
|
+
leptris_element_get_pool(elem)) {
|
|
615
|
+
char* decoded =
|
|
616
|
+
leptris_decode_entities_view(&raw_v,
|
|
617
|
+
leptris_element_get_pool(elem));
|
|
618
|
+
if (decoded) {
|
|
619
|
+
leptris_attr_value_set_heap(attr, leptris_sv_from_cstr(decoded));
|
|
620
|
+
attr_set_entities(attr, 0);
|
|
621
|
+
}
|
|
622
|
+
} else {
|
|
623
|
+
LeptrisStringView raw_e = leptris_attr_value_sv(attr);
|
|
624
|
+
char* expanded = leptris_sv_to_cstr(&raw_e);
|
|
625
|
+
if (expanded) {
|
|
626
|
+
leptris_attr_value_set_heap(attr, leptris_sv_from_cstr(expanded));
|
|
627
|
+
attr_set_entities(attr, 0);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
return leptris_attr_value_sv(attr).data;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
/* Add namespace with in-place strings (zero-copy).
|
|
636
|
+
*
|
|
637
|
+
* Stores prefix/uri in the element's own namespace-declaration fields
|
|
638
|
+
* AND adds a leptris_namespace entry to elem->namespaces so that
|
|
639
|
+
* leptris_element_lookup_namespace() can find it. The strings are
|
|
640
|
+
* NOT copied; caller must ensure they outlive the document (typically
|
|
641
|
+
* pool-allocated). */
|
|
642
|
+
void leptris_element_add_namespace_inplace(LeptrisElement elem,
|
|
643
|
+
char* prefix,
|
|
644
|
+
char* uri,
|
|
645
|
+
LeptrisMemoryPool* pool) {
|
|
646
|
+
if (!elem || !uri) return;
|
|
647
|
+
|
|
648
|
+
if (prefix) {
|
|
649
|
+
leptris_elem_set_prefix(elem, prefix, pool);
|
|
650
|
+
}
|
|
651
|
+
leptris_elem_set_ns_uri(elem, uri, pool);
|
|
652
|
+
|
|
653
|
+
/* Also register the namespace declaration on elem->namespaces so
|
|
654
|
+
* descendant lookups via leptris_element_lookup_namespace find it.
|
|
655
|
+
* If pool allocation fails, the in-place fields are still set; the
|
|
656
|
+
* namespace just won't be discoverable via prefix lookup. */
|
|
657
|
+
if (pool) {
|
|
658
|
+
struct leptris_namespace* ns = leptris_namespace_new_pooled(prefix, uri, pool);
|
|
659
|
+
if (ns) {
|
|
660
|
+
leptris_element_add_namespace(elem, ns);
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
/* Lookup namespace URI by prefix */
|
|
666
|
+
const char* leptris_element_lookup_namespace(LeptrisElement elem,
|
|
667
|
+
const char* prefix) {
|
|
668
|
+
if (!elem) return NULL;
|
|
669
|
+
|
|
670
|
+
/* Search namespaces linked list on current element */
|
|
671
|
+
struct leptris_namespace* ns = leptris_elem_namespaces(elem);
|
|
672
|
+
while (ns) {
|
|
673
|
+
if ((prefix == NULL && ns->prefix == NULL) ||
|
|
674
|
+
(prefix && ns->prefix && strcmp(prefix, ns->prefix) == 0)) {
|
|
675
|
+
return ns->uri;
|
|
676
|
+
}
|
|
677
|
+
ns = ns->next;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/* Search parent */
|
|
681
|
+
LeptrisElement parent = leptris_element_get_parent(elem);
|
|
682
|
+
if (parent) {
|
|
683
|
+
return leptris_element_lookup_namespace(parent, prefix);
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
return NULL;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/* Children manipulation */
|
|
690
|
+
void leptris_element_append_child_internal_doc(LeptrisElement elem, LeptrisNode* child,
|
|
691
|
+
struct leptris_document* doc);
|
|
692
|
+
void leptris_element_append_child_internal(LeptrisElement elem, LeptrisNode* child) {
|
|
693
|
+
if (!elem || !child) return;
|
|
694
|
+
leptris_element_append_child_internal_doc(elem, child,
|
|
695
|
+
leptris_element_get_document(elem));
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
/* doc is the caller-resolved document (NULL for detached trees) —
|
|
699
|
+
* the public mutation path resolves it once instead of paying the
|
|
700
|
+
* root walk + map lookup on every append (TODO 195c). */
|
|
701
|
+
void leptris_element_append_child_internal_doc(LeptrisElement elem, LeptrisNode* child,
|
|
702
|
+
struct leptris_document* doc) {
|
|
703
|
+
if (!elem || !child) return;
|
|
704
|
+
|
|
705
|
+
/* SAFETY: Verify node type field is valid before accessing it
|
|
706
|
+
* Small values like 0x4 or 0x1 in the type field suggest the pointer is corrupted */
|
|
707
|
+
if (child->type < LEPTRIS_NODE_TYPE_ELEMENT ||
|
|
708
|
+
(child->type > LEPTRIS_NODE_TYPE_DOCTYPE &&
|
|
709
|
+
child->type != LEPTRIS_NODE_TYPE_ENTITY_REF)) {
|
|
710
|
+
/* Invalid node type - corrupted pointer */
|
|
711
|
+
return;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
if (child->type != LEPTRIS_NODE_TYPE_ELEMENT &&
|
|
715
|
+
child->type != LEPTRIS_NODE_TYPE_TEXT &&
|
|
716
|
+
child->type != LEPTRIS_NODE_TYPE_CDATA &&
|
|
717
|
+
child->type != LEPTRIS_NODE_TYPE_COMMENT &&
|
|
718
|
+
child->type != LEPTRIS_NODE_TYPE_PI &&
|
|
719
|
+
child->type != LEPTRIS_NODE_TYPE_ENTITY_REF) {
|
|
720
|
+
return; /* Only allow these node types as children */
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
/* Issue #217: if child is already attached to a parent, unlink
|
|
724
|
+
* it first — even if the parent is the SAME element (re-ordering
|
|
725
|
+
* within the same parent). Without this, the child appears twice
|
|
726
|
+
* in the chain and child_count is inflated. */
|
|
727
|
+
LeptrisElement old_parent = leptris_node_parent_inline(child);
|
|
728
|
+
if (old_parent) {
|
|
729
|
+
leptris_node_unlink(child);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
/* Mutation tail cache (TODO 195): sequential appends target the
|
|
733
|
+
* same parent; the cached tail skips the O(N) walk. Direct-
|
|
734
|
+
* mapped by element address so INTERLEAVED parents (result-tree
|
|
735
|
+
* construction) each keep a slot — a single slot thrashed on
|
|
736
|
+
* every other append (#682). Validated by the child's parent
|
|
737
|
+
* back-pointer: a removed or re-parented cached tail fails the
|
|
738
|
+
* check and falls back to the walk. */
|
|
739
|
+
struct leptris_document* mut_doc = doc;
|
|
740
|
+
LeptrisNode* mut_tail = NULL;
|
|
741
|
+
if (mut_doc) {
|
|
742
|
+
struct leptris_mut_tail* s =
|
|
743
|
+
&mut_doc->mut_tail[(((uintptr_t)elem) >> 4) & 63];
|
|
744
|
+
if (s->parent == elem && s->child &&
|
|
745
|
+
leptris_node_parent_inline(s->child) == elem)
|
|
746
|
+
mut_tail = s->child;
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
/* For element children, set up linked list structure */
|
|
750
|
+
if (child->type == LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
751
|
+
LeptrisElement child_elem = (LeptrisElement)child;
|
|
752
|
+
|
|
753
|
+
/* Set parent relationship */
|
|
754
|
+
leptris_element_set_parent(child_elem, elem);
|
|
755
|
+
|
|
756
|
+
/* TODO 155 Phase A: document field removed; non-root walks to root. */
|
|
757
|
+
/* Append to end of children list.
|
|
758
|
+
* last_child may point to any node type (text/comment/etc.) so
|
|
759
|
+
* we set its next_sibling via the type-dispatching setter. */
|
|
760
|
+
LeptrisNode* last_node = mut_tail ? mut_tail : leptris_elem_last_child(elem);
|
|
761
|
+
if (last_node) {
|
|
762
|
+
/* Lane 18 P3: sequential appends' tail is an element —
|
|
763
|
+
* the offset store directly; the type-dispatching node
|
|
764
|
+
* setter only pays off for mixed-kind tails. */
|
|
765
|
+
if (last_node->type == LEPTRIS_NODE_TYPE_ELEMENT)
|
|
766
|
+
leptris_elem_set_next_sibling((LeptrisElement)last_node,
|
|
767
|
+
(LeptrisNode*)child_elem);
|
|
768
|
+
else
|
|
769
|
+
leptris_node_set_next_sibling(last_node,
|
|
770
|
+
(LeptrisNode*)child_elem);
|
|
771
|
+
} else {
|
|
772
|
+
leptris_elem_set_first_child(elem, (LeptrisNode*)child_elem);
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
/* Increment child count */
|
|
776
|
+
elem->child_count++;
|
|
777
|
+
} else {
|
|
778
|
+
/* For non-element children (text, cdata, comment, pi), append to linked list */
|
|
779
|
+
LeptrisNode* last = mut_tail ? mut_tail : leptris_elem_last_child(elem);
|
|
780
|
+
if (last) {
|
|
781
|
+
leptris_node_set_next_sibling(last, (LeptrisNode*)child);
|
|
782
|
+
leptris_elem_set_last_child(elem, (LeptrisNode*)child);
|
|
783
|
+
} else {
|
|
784
|
+
/* No children yet - set first and last child using direct pointer assignment */
|
|
785
|
+
leptris_elem_set_first_child(elem, (LeptrisNode*)child);
|
|
786
|
+
leptris_elem_set_last_child(elem, (LeptrisNode*)child);
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
/* Issue #168: set parent_off on the non-element child so
|
|
790
|
+
* leptris_node_parent can resolve in O(1). */
|
|
791
|
+
switch (child->type) {
|
|
792
|
+
case LEPTRIS_NODE_TYPE_TEXT:
|
|
793
|
+
leptris_textnode_set_parent((LeptrisTextNode*)child, elem);
|
|
794
|
+
break;
|
|
795
|
+
case LEPTRIS_NODE_TYPE_COMMENT:
|
|
796
|
+
leptris_comment_set_parent((LeptrisCommentNode*)child, elem);
|
|
797
|
+
break;
|
|
798
|
+
case LEPTRIS_NODE_TYPE_CDATA:
|
|
799
|
+
leptris_cdata_set_parent((LeptrisCDATANode*)child, elem);
|
|
800
|
+
break;
|
|
801
|
+
case LEPTRIS_NODE_TYPE_PI:
|
|
802
|
+
leptris_pi_set_parent((LeptrisPINode*)child, elem);
|
|
803
|
+
break;
|
|
804
|
+
case LEPTRIS_NODE_TYPE_ENTITY_REF:
|
|
805
|
+
leptris_entity_ref_set_parent(
|
|
806
|
+
(LeptrisEntityRefNode*)child, elem);
|
|
807
|
+
break;
|
|
808
|
+
default:
|
|
809
|
+
break;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
/* Don't increment child_count for non-element children */
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
if (mut_doc) {
|
|
816
|
+
struct leptris_mut_tail* s =
|
|
817
|
+
&mut_doc->mut_tail[(((uintptr_t)elem) >> 4) & 63];
|
|
818
|
+
s->parent = elem;
|
|
819
|
+
s->child = child;
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/* COW: Increment version on modification */
|
|
823
|
+
leptris_node_increment_version(LEPTRIS_ELEMENT_AS_NODE(elem));
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
void leptris_element_prepend_child_internal(LeptrisElement elem, LeptrisNode* child) {
|
|
827
|
+
if (!elem || !child) return;
|
|
828
|
+
|
|
829
|
+
/* SAFETY: Verify node type field is valid before accessing it
|
|
830
|
+
* Small values like 0x4 or 0x1 in the type field suggest the pointer is corrupted */
|
|
831
|
+
if (child->type < LEPTRIS_NODE_TYPE_ELEMENT ||
|
|
832
|
+
(child->type > LEPTRIS_NODE_TYPE_DOCTYPE &&
|
|
833
|
+
child->type != LEPTRIS_NODE_TYPE_ENTITY_REF)) {
|
|
834
|
+
/* Invalid node type - corrupted pointer */
|
|
835
|
+
return;
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
if (child->type != LEPTRIS_NODE_TYPE_ELEMENT &&
|
|
839
|
+
child->type != LEPTRIS_NODE_TYPE_TEXT &&
|
|
840
|
+
child->type != LEPTRIS_NODE_TYPE_CDATA &&
|
|
841
|
+
child->type != LEPTRIS_NODE_TYPE_COMMENT &&
|
|
842
|
+
child->type != LEPTRIS_NODE_TYPE_PI &&
|
|
843
|
+
child->type != LEPTRIS_NODE_TYPE_ENTITY_REF) {
|
|
844
|
+
return; /* Only allow these node types as children */
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
/* Issue #217: if child is already attached to a parent, unlink
|
|
848
|
+
* it first — even if the parent is the SAME element (re-ordering
|
|
849
|
+
* within the same parent). Without this, the child appears twice
|
|
850
|
+
* in the chain and child_count is inflated. */
|
|
851
|
+
LeptrisElement old_parent = leptris_node_parent_inline(child);
|
|
852
|
+
if (old_parent) {
|
|
853
|
+
leptris_node_unlink(child);
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/* For element children, set up linked list structure */
|
|
857
|
+
if (child->type == LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
858
|
+
LeptrisElement child_elem = (LeptrisElement)child;
|
|
859
|
+
|
|
860
|
+
/* Set parent relationship */
|
|
861
|
+
leptris_element_set_parent(child_elem, elem);
|
|
862
|
+
|
|
863
|
+
/* TODO 155 Phase A: document field removed; non-root walks to root. */
|
|
864
|
+
/* Insert at beginning of children list.
|
|
865
|
+
* first_child may point to a non-element node; the new element's
|
|
866
|
+
* next_sibling is set via the compact-offset setter. */
|
|
867
|
+
LeptrisNode* first_node = leptris_elem_first_child(elem);
|
|
868
|
+
if (first_node) {
|
|
869
|
+
leptris_elem_set_next_sibling(child_elem, first_node);
|
|
870
|
+
leptris_elem_set_first_child(elem, (LeptrisNode*)child_elem);
|
|
871
|
+
} else {
|
|
872
|
+
/* No children yet - set first and last child */
|
|
873
|
+
leptris_elem_set_first_child(elem, (LeptrisNode*)child_elem);
|
|
874
|
+
leptris_elem_set_last_child(elem, (LeptrisNode*)child_elem);
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
/* Increment child count */
|
|
878
|
+
elem->child_count++;
|
|
879
|
+
} else {
|
|
880
|
+
/* For non-element children (text, cdata, comment, pi), insert at beginning */
|
|
881
|
+
LeptrisNode* first = leptris_elem_first_child(elem);
|
|
882
|
+
if (first) {
|
|
883
|
+
/* Set the new child's next_sibling via the type-dispatching setter */
|
|
884
|
+
leptris_node_set_next_sibling(child, first);
|
|
885
|
+
leptris_elem_set_first_child(elem, (LeptrisNode*)child);
|
|
886
|
+
} else {
|
|
887
|
+
/* No children yet - set first and last child using direct pointer assignment */
|
|
888
|
+
leptris_elem_set_first_child(elem, (LeptrisNode*)child);
|
|
889
|
+
leptris_elem_set_last_child(elem, (LeptrisNode*)child);
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
/* Issue #168: set parent_off on the non-element child. */
|
|
893
|
+
switch (child->type) {
|
|
894
|
+
case LEPTRIS_NODE_TYPE_TEXT:
|
|
895
|
+
leptris_textnode_set_parent((LeptrisTextNode*)child, elem);
|
|
896
|
+
break;
|
|
897
|
+
case LEPTRIS_NODE_TYPE_COMMENT:
|
|
898
|
+
leptris_comment_set_parent((LeptrisCommentNode*)child, elem);
|
|
899
|
+
break;
|
|
900
|
+
case LEPTRIS_NODE_TYPE_CDATA:
|
|
901
|
+
leptris_cdata_set_parent((LeptrisCDATANode*)child, elem);
|
|
902
|
+
break;
|
|
903
|
+
case LEPTRIS_NODE_TYPE_PI:
|
|
904
|
+
leptris_pi_set_parent((LeptrisPINode*)child, elem);
|
|
905
|
+
break;
|
|
906
|
+
case LEPTRIS_NODE_TYPE_ENTITY_REF:
|
|
907
|
+
leptris_entity_ref_set_parent(
|
|
908
|
+
(LeptrisEntityRefNode*)child, elem);
|
|
909
|
+
break;
|
|
910
|
+
default:
|
|
911
|
+
break;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
/* Don't increment child_count for non-element children */
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
/* COW: Increment version on modification */
|
|
918
|
+
leptris_node_increment_version(LEPTRIS_ELEMENT_AS_NODE(elem));
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
/* Helper function to calculate text length recursively */
|
|
922
|
+
static size_t calculate_text_length_recursive(LeptrisNode* node) {
|
|
923
|
+
if (!node) return 0;
|
|
924
|
+
|
|
925
|
+
size_t len = 0;
|
|
926
|
+
LeptrisNode* child = leptris_node_first_child_internal(node);
|
|
927
|
+
while (child) {
|
|
928
|
+
if (child->type == LEPTRIS_NODE_TYPE_TEXT) {
|
|
929
|
+
LeptrisTextNode* text = (LeptrisTextNode*)child;
|
|
930
|
+
/* Route through leptris_text_get_content so entity-
|
|
931
|
+
* containing borrowed text (the fast-parse path) is
|
|
932
|
+
* expanded before measuring. After the call the node
|
|
933
|
+
* is materialized, so the copy pass can use
|
|
934
|
+
* text->content_len directly. */
|
|
935
|
+
const char* content = leptris_text_get_content(text);
|
|
936
|
+
if (content) {
|
|
937
|
+
len += strlen(content);
|
|
938
|
+
}
|
|
939
|
+
} else if (child->type == LEPTRIS_NODE_TYPE_CDATA) {
|
|
940
|
+
LeptrisCDATANode* cdata = (LeptrisCDATANode*)child;
|
|
941
|
+
if (cdata->content) {
|
|
942
|
+
len += strlen(cdata->content);
|
|
943
|
+
}
|
|
944
|
+
} else if (child->type == LEPTRIS_NODE_TYPE_ENTITY_REF) {
|
|
945
|
+
/* #1094: an unexpanded reference contributes its
|
|
946
|
+
* replacement text (predefined or DTD-declared). */
|
|
947
|
+
const char* v = leptris_entity_ref_resolve(
|
|
948
|
+
(LeptrisEntityRefNode*)child);
|
|
949
|
+
if (v) len += strlen(v);
|
|
950
|
+
} else if (child->type == LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
951
|
+
/* Recursively include text from child elements */
|
|
952
|
+
len += calculate_text_length_recursive(child);
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
child = leptris_node_get_next_sibling(child);
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
return len;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
/* Helper function to copy text content recursively */
|
|
962
|
+
static void copy_text_content_recursive(LeptrisNode* node, char* result, size_t* offset) {
|
|
963
|
+
if (!node || !result || !offset) return;
|
|
964
|
+
|
|
965
|
+
LeptrisNode* child = leptris_node_first_child_internal(node);
|
|
966
|
+
while (child) {
|
|
967
|
+
if (child->type == LEPTRIS_NODE_TYPE_TEXT) {
|
|
968
|
+
LeptrisTextNode* text = (LeptrisTextNode*)child;
|
|
969
|
+
const char* content = leptris_text_get_content(text);
|
|
970
|
+
if (content) {
|
|
971
|
+
size_t clen = strlen(content);
|
|
972
|
+
memcpy(result + *offset, content, clen);
|
|
973
|
+
*offset += clen;
|
|
974
|
+
}
|
|
975
|
+
} else if (child->type == LEPTRIS_NODE_TYPE_CDATA) {
|
|
976
|
+
LeptrisCDATANode* cdata = (LeptrisCDATANode*)child;
|
|
977
|
+
if (cdata->content) {
|
|
978
|
+
size_t len = strlen(cdata->content);
|
|
979
|
+
memcpy(result + *offset, cdata->content, len);
|
|
980
|
+
*offset += len;
|
|
981
|
+
}
|
|
982
|
+
} else if (child->type == LEPTRIS_NODE_TYPE_ENTITY_REF) {
|
|
983
|
+
const char* v = leptris_entity_ref_resolve(
|
|
984
|
+
(LeptrisEntityRefNode*)child);
|
|
985
|
+
if (v) {
|
|
986
|
+
size_t vlen = strlen(v);
|
|
987
|
+
memcpy(result + *offset, v, vlen);
|
|
988
|
+
*offset += vlen;
|
|
989
|
+
}
|
|
990
|
+
} else if (child->type == LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
991
|
+
/* Recursively include text from child elements */
|
|
992
|
+
copy_text_content_recursive(child, result, offset);
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
child = leptris_node_get_next_sibling(child);
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
/* Text content extraction (concatenates ALL text nodes recursively) */
|
|
1000
|
+
char* leptris_element_get_text_content(LeptrisElement elem) {
|
|
1001
|
+
if (!elem) return NULL;
|
|
1002
|
+
|
|
1003
|
+
/* First pass: calculate total length needed recursively */
|
|
1004
|
+
size_t total_len = calculate_text_length_recursive((LeptrisNode*)elem);
|
|
1005
|
+
|
|
1006
|
+
if (total_len == 0) {
|
|
1007
|
+
return leptris_strdup("");
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
/* Allocate buffer for concatenated text */
|
|
1011
|
+
char* result = (char*)leptris_malloc(total_len + 1);
|
|
1012
|
+
if (!result) return NULL;
|
|
1013
|
+
|
|
1014
|
+
/* Second pass: copy text content recursively */
|
|
1015
|
+
size_t offset = 0;
|
|
1016
|
+
copy_text_content_recursive((LeptrisNode*)elem, result, &offset);
|
|
1017
|
+
|
|
1018
|
+
result[offset] = '\0';
|
|
1019
|
+
return result;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
/* Document tree operations */
|
|
1023
|
+
void leptris_element_set_document_tree(LeptrisElement elem, struct leptris_document* doc) {
|
|
1024
|
+
/* TODO 155 Phase A: the document field is removed. We only need
|
|
1025
|
+
* to register the ROOT in the thread-local root→doc map; non-root
|
|
1026
|
+
* elements walk parent_off to find the root and look up there. */
|
|
1027
|
+
if (!elem) return;
|
|
1028
|
+
leptris_root_doc_register(elem, doc);
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
/* Remove all attributes from an element */
|
|
1032
|
+
int leptris_element_remove_all_attributes(LeptrisElement elem) {
|
|
1033
|
+
if (!elem) return LEPTRIS_ERROR_NULL_INPUT;
|
|
1034
|
+
|
|
1035
|
+
/* CRITICAL: Don't free pool-allocated attributes directly!
|
|
1036
|
+
* Attributes are allocated from the memory pool and will be freed
|
|
1037
|
+
* when the pool is destroyed. Just clear the pointers and let the pool handle cleanup.
|
|
1038
|
+
* We DON'T free any attribute strings - they're all pool-allocated. */
|
|
1039
|
+
|
|
1040
|
+
/* Just clear the attribute linked list pointers */
|
|
1041
|
+
struct leptris_attribute* attr = leptris_element_get_first_attribute(elem);
|
|
1042
|
+
while (attr) {
|
|
1043
|
+
struct leptris_attribute* next = leptris_attr_next(attr);
|
|
1044
|
+
/* Don't free attr or any of its strings - all pool-allocated!
|
|
1045
|
+
* They will be reclaimed when the document/pool is freed. */
|
|
1046
|
+
attr = next;
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
/* Clear the attribute-list head/tail offsets and count */
|
|
1050
|
+
leptris_elem_set_first_attribute(elem, NULL);
|
|
1051
|
+
leptris_elem_set_last_attribute(elem, NULL);
|
|
1052
|
+
elem->attr_count = 0;
|
|
1053
|
+
|
|
1054
|
+
return 0; /* LEPTRIS_OK */
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
/* ============================================================================
|
|
1058
|
+
* Subtree Analysis (for bulk allocation planning)
|
|
1059
|
+
* ============================================================================ */
|
|
1060
|
+
|
|
1061
|
+
/**
|
|
1062
|
+
* Count all nodes in subtree (for bulk allocation planning)
|
|
1063
|
+
*
|
|
1064
|
+
* Recursively traverses element tree and counts all nodes by type.
|
|
1065
|
+
* Used to pre-calculate allocation size for bulk operations.
|
|
1066
|
+
*
|
|
1067
|
+
* @param elem Root element to count
|
|
1068
|
+
* @param stats Output structure to fill with counts
|
|
1069
|
+
*/
|
|
1070
|
+
void leptris_element_count_subtree(LeptrisElement elem, LeptrisSubtreeStats* stats) {
|
|
1071
|
+
if (!elem || !stats) return;
|
|
1072
|
+
|
|
1073
|
+
/* Initialize counts to zero */
|
|
1074
|
+
memset(stats, 0, sizeof(LeptrisSubtreeStats));
|
|
1075
|
+
|
|
1076
|
+
/* Count this element */
|
|
1077
|
+
stats->element_count = 1;
|
|
1078
|
+
|
|
1079
|
+
/* Count attributes on this element */
|
|
1080
|
+
stats->attribute_count = elem->attr_count;
|
|
1081
|
+
|
|
1082
|
+
/* Recursively traverse all children */
|
|
1083
|
+
LeptrisNode* child = leptris_elem_first_child(elem);
|
|
1084
|
+
while (child) {
|
|
1085
|
+
switch (child->type) {
|
|
1086
|
+
case LEPTRIS_NODE_TYPE_ELEMENT:
|
|
1087
|
+
stats->element_count++;
|
|
1088
|
+
leptris_element_count_subtree((LeptrisElement)child, stats);
|
|
1089
|
+
break;
|
|
1090
|
+
|
|
1091
|
+
case LEPTRIS_NODE_TYPE_TEXT:
|
|
1092
|
+
stats->text_count++;
|
|
1093
|
+
break;
|
|
1094
|
+
|
|
1095
|
+
case LEPTRIS_NODE_TYPE_COMMENT:
|
|
1096
|
+
stats->comment_count++;
|
|
1097
|
+
break;
|
|
1098
|
+
|
|
1099
|
+
case LEPTRIS_NODE_TYPE_CDATA:
|
|
1100
|
+
stats->cdata_count++;
|
|
1101
|
+
break;
|
|
1102
|
+
|
|
1103
|
+
case LEPTRIS_NODE_TYPE_PI:
|
|
1104
|
+
stats->pi_count++;
|
|
1105
|
+
break;
|
|
1106
|
+
|
|
1107
|
+
default:
|
|
1108
|
+
/* Unknown node type, skip */
|
|
1109
|
+
break;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
child = leptris_node_get_next_sibling(child);
|
|
1113
|
+
}
|
|
1114
|
+
}
|