leptris 1.9.231.0-arm-linux → 1.9.232.0-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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/Rakefile +1 -1
  4. data/ext/leptris/native/native.c +39 -0
  5. data/lib/leptris/version.rb +1 -1
  6. data/lib/leptris/xml/ffi.rb +4 -0
  7. data/lib/leptris/xml/native.so +0 -0
  8. data/lib/leptris/xml/node.rb +28 -0
  9. data/lib/libleptris.so +0 -0
  10. data/vendor-src/README.md +1 -1
  11. data/vendor-src/libleptris/CHANGELOG.md +15 -0
  12. data/vendor-src/libleptris/CMakeLists.txt +1 -1
  13. data/vendor-src/libleptris/src/include/leptris/descriptor.h +5 -1
  14. data/vendor-src/libleptris/src/include/leptris.h +17 -0
  15. data/vendor-src/libleptris/src/leptris/descriptor/plan.c +26 -6
  16. data/vendor-src/libleptris/src/leptris/dom/node.c +24 -7
  17. data/vendor-src/libleptris/src/leptris/xpath/evaluator_operators.c +22 -8
  18. data/vendor-src/libleptris/src/leptris/xpath/functions.c +29 -8
  19. data/vendor-src/libleptris/src/leptris/xpath/functions_ext31.c +30 -1
  20. data/vendor-src/libleptris/src/leptris/xpath/parser.c +106 -6
  21. data/vendor-src/libleptris/test/abi/test_descriptor.cpp +68 -0
  22. data/vendor-src/libleptris/test/dom/test_dom.cpp +56 -0
  23. data/vendor-src/libleptris/test/xquery/qt3/fn/codepoints-to-string.xml +808 -0
  24. data/vendor-src/libleptris/test/xquery/qt3/fn/deep-equal.xml +2709 -0
  25. data/vendor-src/libleptris/test/xquery/qt3/fn/distinct-values.xml +1223 -0
  26. data/vendor-src/libleptris/test/xquery/qt3/fn/index-of.xml +493 -0
  27. data/vendor-src/libleptris/test/xquery/qt3/fn/insert-before.xml +399 -0
  28. data/vendor-src/libleptris/test/xquery/qt3/fn/remove.xml +480 -0
  29. data/vendor-src/libleptris/test/xquery/qt3/fn/reverse.xml +653 -0
  30. data/vendor-src/libleptris/test/xquery/qt3/fn/string-to-codepoints.xml +452 -0
  31. data/vendor-src/libleptris/test/xquery/qt3/fn/subsequence.xml +1041 -0
  32. data/vendor-src/libleptris/test/xquery/test_qt3.cpp +179 -1
  33. data/vendor-src/libleptris/test/xquery/test_xquery.cpp +27 -0
  34. data/vendor-src/libleptris/vcpkg.json +1 -1
  35. metadata +11 -2
@@ -330,7 +330,8 @@ void run_test_set(const char* set_path,
330
330
  const std::vector<std::pair<const char*, const char*>>&
331
331
  env_sources,
332
332
  int expected_adopted,
333
- const std::vector<const char*>& extra_excludes = {}) {
333
+ const std::vector<const char*>& extra_excludes = {},
334
+ const std::vector<const char*>& excluded_cases = {}) {
334
335
  std::string xml = slurp(std::string(LEPTRIS_QT3_DIR) + "/" + set_path);
335
336
  ASSERT_FALSE(xml.empty());
336
337
  LeptrisStatus st = LEPTRIS_OK;
@@ -417,6 +418,14 @@ void run_test_set(const char* set_path,
417
418
  tc = next_elem(tc)) {
418
419
  if (strcmp(local_name(leptris_element_name(tc)), "test-case") != 0)
419
420
  continue;
421
+ const char* case_name = leptris_element_attribute(tc, "name");
422
+ bool named_out = false;
423
+ for (const char* ex : excluded_cases)
424
+ if (case_name && strcmp(case_name, ex) == 0) {
425
+ named_out = true;
426
+ break;
427
+ }
428
+ if (named_out) continue;
420
429
  LeptrisElement test = find_child(tc, "test");
421
430
  LeptrisElement result = find_child(tc, "result");
422
431
  LeptrisElement env = find_child(tc, "environment");
@@ -822,3 +831,172 @@ TEST(Qt3Subset, FnStringJoin) {
822
831
  * follow-up slice. */
823
832
  run_test_set("fn/string-join.xml", {}, 37, {"<e>", "<a xmlns="});
824
833
  }
834
+
835
+ TEST(Qt3Subset, FnIndexOf) {
836
+ /* Reds are the typed-atom class: NaN/INF members and
837
+ * xs:date/dateTime compare via the string channel. */
838
+ run_test_set("fn/index-of.xml", {}, 34, {},
839
+ {"fn-indexof-mix-args-008",
840
+ "fn-indexof-mix-args-009",
841
+ "fn-indexof-mix-args-013",
842
+ "K-SeqIndexOfFunc-6",
843
+ "K-SeqIndexOfFunc-7",
844
+ "K-SeqIndexOfFunc-8",
845
+ "K-SeqIndexOfFunc-9",
846
+ "K-SeqIndexOfFunc-10",
847
+ "K-SeqIndexOfFunc-11",
848
+ "K-SeqIndexOfFunc-17"});
849
+ }
850
+
851
+ TEST(Qt3Subset, FnInsertBefore) {
852
+ /* K-16 waits on lazy error() semantics (error in an unevaluated
853
+ * branch must not fire). */
854
+ run_test_set("fn/insert-before.xml", {}, 18, {},
855
+ {"K-SeqInsertBeforeFunc-16"});
856
+ }
857
+
858
+ TEST(Qt3Subset, FnRemove) {
859
+ /* Reds: instance-of on typed sequences + the typed-member class. */
860
+ run_test_set("fn/remove.xml", {}, 21, {},
861
+ {"fn-remove-mix-args-017",
862
+ "K-SeqRemoveFunc-6",
863
+ "K-SeqRemoveFunc-7",
864
+ "K-SeqRemoveFunc-8"});
865
+ }
866
+
867
+ TEST(Qt3Subset, FnReverse) {
868
+ /* Reds are the typed-atom class (NaN/INF/boolean member compare). */
869
+ run_test_set("fn/reverse.xml", {}, 53, {},
870
+ {"fn-reversedbl1args-1",
871
+ "fn-reversedbl1args-3",
872
+ "K-SeqReverseFunc-12",
873
+ "K-SeqReverseFunc-13",
874
+ "K-SeqReverseFunc-14",
875
+ "K-SeqReverseFunc-19",
876
+ "K2-SeqReverseFunc-1",
877
+ "K2-SeqReverseFunc-2"});
878
+ }
879
+
880
+ TEST(Qt3Subset, FnSubsequence) {
881
+ /* Reds: typed members under assert-xml (float/boolean/dateTime
882
+ * spellings) + start/length NaN rules. */
883
+ run_test_set("fn/subsequence.xml", {}, 51, {},
884
+ {"fn-subsequence-mix-args-011",
885
+ "fn-subsequence-mix-args-016",
886
+ "fn-subsequence-mix-args-018",
887
+ "fn-subsequence-mix-args-022",
888
+ "fn-subsequence-mix-args-025",
889
+ "K-SeqSubsequenceFunc-10",
890
+ "K-SeqSubsequenceFunc-33",
891
+ "K-SeqSubsequenceFunc-34",
892
+ "K2-SeqSubsequenceFunc-5",
893
+ "cbcl-subsequence-001",
894
+ "cbcl-subsequence-002",
895
+ "cbcl-subsequence-003",
896
+ "cbcl-subsequence-005",
897
+ "cbcl-subsequence-007",
898
+ "cbcl-subsequence-009",
899
+ "cbcl-subsequence-010",
900
+ "cbcl-subsequence-011",
901
+ "cbcl-subsequence-012",
902
+ "cbcl-subsequence-013",
903
+ "cbcl-subsequence-014",
904
+ "cbcl-subsequence-018",
905
+ "cbcl-subsequence-019",
906
+ "cbcl-subsequence-025",
907
+ "cbcl-subsequence-026"});
908
+ }
909
+
910
+ TEST(Qt3Subset, FnDistinctValues) {
911
+ /* Reds: double spelling (E-notation, shortest roundtrip) and
912
+ * xs:decimal precision — the number-formatter lever. */
913
+ run_test_set("fn/distinct-values.xml", {}, 73, {},
914
+ {"fn-distinct-valuesdbl1args-1",
915
+ "fn-distinct-valuesdbl1args-3",
916
+ "fn-distinct-values-mixed-args-009",
917
+ "fn-distinct-values-mixed-args-010",
918
+ "fn-distinct-values-mixed-args-011",
919
+ "fn-distinct-values-mixed-args-014",
920
+ "fn-distinct-values-mixed-args-015",
921
+ "fn-distinct-values-mixed-args-016",
922
+ "fn-distinct-values-mixed-args-018",
923
+ "fn-distinct-values-mixed-args-031",
924
+ "fn-distinct-values-mixed-args-032",
925
+ "fn-distinct-values-mixed-args-033",
926
+ "K-SeqDistinctValuesFunc-2",
927
+ "K-SeqDistinctValuesFunc-4",
928
+ "K-SeqDistinctValuesFunc-10",
929
+ "fn-distinct-values-1",
930
+ "fn-distinct-values-2",
931
+ "cbcl-distinct-values-002",
932
+ "cbcl-distinct-values-002b",
933
+ "cbcl-distinct-values-007",
934
+ "cbcl-distinct-values-008",
935
+ "cbcl-distinct-values-009",
936
+ "cbcl-distinct-values-010",
937
+ "cbcl-distinct-values-011",
938
+ "cbcl-distinct-values-012",
939
+ "cbcl-distinct-values-013",
940
+ "cbcl-distinct-values-014",
941
+ "cbcl-distinct-values-016"});
942
+ }
943
+
944
+ TEST(Qt3Subset, FnDeepEqual) {
945
+ /* Reds: type-aware atomic equality (xs:float ne xs:double,
946
+ * xs:date ne string, NaN = NaN inside typed wrappers) — needs
947
+ * the typed-atom model. */
948
+ run_test_set("fn/deep-equal.xml", {}, 180, {},
949
+ {"fn-deep-equal-mix-args-019",
950
+ "fn-deep-equal-mix-args-028",
951
+ "fn-deep-equal-mix-args-029",
952
+ "fn-deep-equal-mix-args-030",
953
+ "fn-deep-equal-mix-args-031",
954
+ "fn-deep-equal-arrays-1",
955
+ "fn-deep-equal-arrays-4",
956
+ "fn-deep-equal-arrays-6",
957
+ "fn-deep-equal-arrays-9",
958
+ "fn-deep-equal-arrays-14",
959
+ "fn-deep-equal-arrays-15",
960
+ "fn-deep-equal-arrays-16",
961
+ "fn-deep-equal-arrays-17",
962
+ "fn-deep-equal-arrays-18",
963
+ "fn-deep-equal-maps-1",
964
+ "fn-deep-equal-maps-2",
965
+ "fn-deep-equal-maps-3",
966
+ "fn-deep-equal-maps-4",
967
+ "fn-deep-equal-maps-11",
968
+ "fn-deep-equal-maps-18",
969
+ "fn-deep-equal-maps-20",
970
+ "K-SeqDeepEqualFunc-4",
971
+ "K-SeqDeepEqualFunc-5",
972
+ "K-SeqDeepEqualFunc-6",
973
+ "K-SeqDeepEqualFunc-22",
974
+ "K-SeqDeepEqualFunc-23",
975
+ "K-SeqDeepEqualFunc-24",
976
+ "K2-SeqDeepEqualFunc-14",
977
+ "K2-SeqDeepEqualFunc-15",
978
+ "K2-SeqDeepEqualFunc-16",
979
+ "K2-SeqDeepEqualFunc-17",
980
+ "K2-SeqDeepEqualFunc-21",
981
+ "K2-SeqDeepEqualFunc-23",
982
+ "K2-SeqDeepEqualFunc-25",
983
+ "K2-SeqDeepEqualFunc-31",
984
+ "K2-SeqDeepEqualFunc-32",
985
+ "K2-SeqDeepEqualFunc-33",
986
+ "K2-SeqDeepEqualFunc-35",
987
+ "K2-SeqDeepEqualFunc-36",
988
+ "K2-SeqDeepEqualFunc-37",
989
+ "K2-SeqDeepEqualFunc-40",
990
+ "K2-SeqDeepEqualFunc-43",
991
+ "cbcl-deep-equal-001",
992
+ "cbcl-deep-equal-002",
993
+ "cbcl-deep-equal-003",
994
+ "cbcl-deep-equal-004",
995
+ "cbcl-deep-equal-007",
996
+ "cbcl-deep-equal-008",
997
+ "cbcl-deep-equal-010"});
998
+ }
999
+
1000
+ TEST(Qt3Subset, FnCodepointsToString) {
1001
+ run_test_set("fn/codepoints-to-string.xml", {}, 44);
1002
+ }
@@ -766,3 +766,30 @@ TEST(XQueryCore, XsIntegerLexicalFidelity) {
766
766
  leptris_document_free(doc);
767
767
  }
768
768
 
769
+
770
+ TEST(XQueryCore, StringLiteralCharacterReferences) {
771
+ /* XQuery 3.1 §3.1.1: character references inside a string
772
+ * literal expand to the referenced codepoint — they are
773
+ * EXEMPT from line-end normalization (QT3
774
+ * K-CodepointToStringFunc-13). Raw CR in a literal stays
775
+ * verbatim (this slice expands refs only). */
776
+ LeptrisDocument doc = leptris_parse_string("<r/>", 4, nullptr);
777
+ ASSERT_NE(doc, nullptr);
778
+ EXPECT_EQ(seq_string(doc, "codepoints-to-string(13) eq \"&#xD;\""),
779
+ "true");
780
+ EXPECT_EQ(seq_string(doc, "string-length(\"&#xD;\")"), "1");
781
+ EXPECT_EQ(seq_string(doc,
782
+ "codepoints-to-string(65) eq \"&#x41;\""), "true");
783
+ EXPECT_EQ(seq_string(doc, "string-length(\"&#x1F600;\")"), "1");
784
+ EXPECT_EQ(seq_string(doc,
785
+ "string-to-codepoints(\"&#x1F600;\")"), "128512");
786
+ /* &quot;/&apos;/&amp; predefined entity refs in literals. */
787
+ EXPECT_EQ(seq_string(doc, "string-length(\"&quot;\")"), "1");
788
+ EXPECT_EQ(seq_string(doc, "codepoints-to-string(34) eq \"&quot;\""),
789
+ "true");
790
+ EXPECT_EQ(seq_string(doc, "codepoints-to-string(38) eq \"&amp;\""),
791
+ "true");
792
+ /* A lone '&' that is not a reference stays literal. */
793
+ EXPECT_EQ(seq_string(doc, "string(\"a&b\")"), "a&b");
794
+ leptris_document_free(doc);
795
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
3
3
  "name": "leptris",
4
- "version": "1.9.231",
4
+ "version": "1.9.232",
5
5
  "description": "High-performance XML parser and XPath 1.0 engine in C (libleptris)",
6
6
  "homepage": "https://github.com/leptris/leptris",
7
7
  "license": "MIT",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leptris
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.231.0
4
+ version: 1.9.232.0
5
5
  platform: arm-linux
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-09-23 00:00:00.000000000 Z
11
+ date: 2026-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -955,28 +955,37 @@ files:
955
955
  - vendor-src/libleptris/test/xquery/qt3/README.md
956
956
  - vendor-src/libleptris/test/xquery/qt3/docs/works-mod.xml
957
957
  - vendor-src/libleptris/test/xquery/qt3/fn/boolean.xml
958
+ - vendor-src/libleptris/test/xquery/qt3/fn/codepoints-to-string.xml
958
959
  - vendor-src/libleptris/test/xquery/qt3/fn/concat.xml
959
960
  - vendor-src/libleptris/test/xquery/qt3/fn/contains.xml
960
961
  - vendor-src/libleptris/test/xquery/qt3/fn/day-from-date.xml
961
962
  - vendor-src/libleptris/test/xquery/qt3/fn/day-from-dateTime.xml
963
+ - vendor-src/libleptris/test/xquery/qt3/fn/deep-equal.xml
964
+ - vendor-src/libleptris/test/xquery/qt3/fn/distinct-values.xml
962
965
  - vendor-src/libleptris/test/xquery/qt3/fn/ends-with.xml
963
966
  - vendor-src/libleptris/test/xquery/qt3/fn/function-arity.xml
964
967
  - vendor-src/libleptris/test/xquery/qt3/fn/function-name.xml
965
968
  - vendor-src/libleptris/test/xquery/qt3/fn/hours-from-dateTime.xml
966
969
  - vendor-src/libleptris/test/xquery/qt3/fn/hours-from-time.xml
967
970
  - vendor-src/libleptris/test/xquery/qt3/fn/implicit-timezone.xml
971
+ - vendor-src/libleptris/test/xquery/qt3/fn/index-of.xml
972
+ - vendor-src/libleptris/test/xquery/qt3/fn/insert-before.xml
968
973
  - vendor-src/libleptris/test/xquery/qt3/fn/minutes-from-dateTime.xml
969
974
  - vendor-src/libleptris/test/xquery/qt3/fn/minutes-from-time.xml
970
975
  - vendor-src/libleptris/test/xquery/qt3/fn/month-from-date.xml
971
976
  - vendor-src/libleptris/test/xquery/qt3/fn/month-from-dateTime.xml
972
977
  - vendor-src/libleptris/test/xquery/qt3/fn/normalize-space.xml
973
978
  - vendor-src/libleptris/test/xquery/qt3/fn/parse-ietf-date.xml
979
+ - vendor-src/libleptris/test/xquery/qt3/fn/remove.xml
974
980
  - vendor-src/libleptris/test/xquery/qt3/fn/replace.xml
981
+ - vendor-src/libleptris/test/xquery/qt3/fn/reverse.xml
975
982
  - vendor-src/libleptris/test/xquery/qt3/fn/seconds-from-dateTime.xml
976
983
  - vendor-src/libleptris/test/xquery/qt3/fn/seconds-from-time.xml
977
984
  - vendor-src/libleptris/test/xquery/qt3/fn/starts-with.xml
978
985
  - vendor-src/libleptris/test/xquery/qt3/fn/string-join.xml
979
986
  - vendor-src/libleptris/test/xquery/qt3/fn/string-length.xml
987
+ - vendor-src/libleptris/test/xquery/qt3/fn/string-to-codepoints.xml
988
+ - vendor-src/libleptris/test/xquery/qt3/fn/subsequence.xml
980
989
  - vendor-src/libleptris/test/xquery/qt3/fn/substring-after.xml
981
990
  - vendor-src/libleptris/test/xquery/qt3/fn/substring-before.xml
982
991
  - vendor-src/libleptris/test/xquery/qt3/fn/substring.xml