leptris 1.9.37 → 1.9.38

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69c5e9ac12901717be224595df4f25d8f73deae9dd52d305025ce41ee90664e5
4
- data.tar.gz: 35b825df17976e8afaf64adc879c77964bc91a80320fe4c6c205e51995a9bc3d
3
+ metadata.gz: d6a20a13a634924317b339a27ecae165e6998c4d3de38854edd48d6ca68fa963
4
+ data.tar.gz: 87fdd1085af203af496cb625f02406073a000c1e5d6f1bcce046222fcc8d9a74
5
5
  SHA512:
6
- metadata.gz: dd81428b349b52fc6133a089c589621dca7eaf6eba91070987cbfb79dbc8002ce3983ff79b8c76811e61215427a2e16f96b850ce2d28fe8d5fee29d39720ba5e
7
- data.tar.gz: b996ea6b4ed1c5005741aab368f32a9902a2c83179c6e7c90d2617aef5bf01b0efddcaeac80836524b682d2001ca4bda53242874c96440b3ea0db688cdc66863
6
+ metadata.gz: c635bbd6bff75845204d2e34665003f9652b68dfe834f1484b5da84dd26e4db5992b14bb9b5d51e5cb03d9ee2b8e4ca64d6190aeb3fffa631011fbf9b1316625
7
+ data.tar.gz: fdef1ebde1f5770b0379242ae258ef8fcc1331353bc25f0ad283a6c13fea23d0df9508fb4623ffd0dffd798298b3b324efc7d92dae3131063436682fa6762d7c
data/CHANGELOG.md CHANGED
@@ -5,6 +5,29 @@ All notable changes to Leptris will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.9.38] - 2026-08-29
9
+
10
+ ### Changed
11
+
12
+ - **libleptris 1.9.13 lockstep**: pin bumped; audit 250/250, no
13
+ new C surface. Engine: document-level whitespace now chains as
14
+ TEXT children of the document node with libxml2's exact rule
15
+ (leading prolog ws dropped, ws after a prolog PI dropped, ws
16
+ after a comment or the root kept, trailing tail trimmed) — a
17
+ spec pins the rule through `Document#children`; XSLT suite
18
+ 180 -> 181/205.
19
+ - **Element-only SAX handlers ride the element batch** in the
20
+ DOM-backed dispatcher (round XXIII's path): handlers overriding
21
+ only element events skip the per-child get_type walk entirely —
22
+ text/comments/PIs are never fetched. The document node keeps the
23
+ typed walk (it is not an element handle).
24
+
25
+ ### Meta
26
+
27
+ - Nokogiri-compat audit against moxml's adapter surface: no gaps
28
+ (remove_attribute, add_namespace_definition, replace,
29
+ add_previous/next_sibling all present).
30
+
8
31
  ## [1.9.37] - 2026-08-29
9
32
 
10
33
  ### Added
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ RSpec::Core::RakeTask.new(:spec)
8
8
  # Pin for `rake compile` and the platform-gem builds. Keep in lockstep
9
9
  # with .github/workflows/build.yml (which calls `rake compile`) and the
10
10
  # CHANGELOG when libleptris releases.
11
- LIBLEPTRIS_VERSION = "1.9.12"
11
+ LIBLEPTRIS_VERSION = "1.9.13"
12
12
 
13
13
  CMAKE_FLAGS = %w[
14
14
  -DCMAKE_BUILD_TYPE=Release
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leptris
4
- VERSION = "1.9.37"
4
+ VERSION = "1.9.38"
5
5
  end
@@ -29,7 +29,10 @@ module Leptris::XML::SAX::DomDispatch
29
29
  def dispatch(handler, dispatched, doc)
30
30
  handler.start_document if dispatched[:start_document]
31
31
  doc_node = doc.node
32
- visit_children(doc_node.c_ptr, doc, handler, dispatched) if doc_node
32
+ if doc_node
33
+ visit_children(doc_node.c_ptr, doc, handler, dispatched,
34
+ element_parent: false)
35
+ end
33
36
  handler.end_document if dispatched[:end_document]
34
37
  self
35
38
  end
@@ -41,10 +44,23 @@ module Leptris::XML::SAX::DomDispatch
41
44
  CDATA = Leptris::XML::FFI::NODE_CDATA
42
45
  PI = Leptris::XML::FFI::NODE_PI
43
46
 
44
- def visit_children(c_ptr, doc, handler, dispatched)
47
+ def visit_children(c_ptr, doc, handler, dispatched, element_parent: true)
45
48
  wants_text_kinds = dispatched[:characters] ||
46
49
  dispatched[:comment] ||
47
50
  dispatched[:cdata] || dispatched[:pi]
51
+ if element_parent && !wants_text_kinds
52
+ # Element-only handlers under an element: the element batch
53
+ # hands out element pointers with no per-child get_type
54
+ # (round XXIII's path) — text/comments/PIs are never fetched.
55
+ # (The document node is not an element handle — the typed
56
+ # walk serves it.)
57
+ Leptris::XML::FFI.fetch_element_children(c_ptr).each do |child_ptr|
58
+ visit_element(
59
+ Leptris::XML::Node.wrap(child_ptr, doc, node_type: ELEMENT),
60
+ handler, dispatched)
61
+ end
62
+ return
63
+ end
48
64
  Leptris::XML::FFI.fetch_children(c_ptr).each do |child_ptr|
49
65
  case Leptris::XML::FFI.leptris_node_get_type(child_ptr)
50
66
  when ELEMENT
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leptris
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.37
4
+ version: 1.9.38
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.