Skip to content

Commit 237e5e3

Browse files
committed
undo skip orphan text nodes (cf. EzXML)
1 parent c4a24bb commit 237e5e3

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

src/raw.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ function get_attributes(data, i, j)
146146
out = OrderedDict{String,String}()
147147
while !isnothing(i) && i < j
148148
key, i = get_name(data, i)
149-
haskey(out, key) && error("Duplicate attribute name found: $key")
149+
#haskey(out, key) && error("Duplicate attribute name found: $key") # would this be useful?
150150
# get quotechar the value is wrapped in (either ' or ")
151151
i = findnext(x -> x === UInt8('"') || x === UInt8('''), data, i + 1)
152152
quotechar = data[i]
@@ -371,11 +371,11 @@ function next_xml_space(o::Raw)
371371
j = findnext(==(UInt8('<')), data, i) - 1
372372
j = ctx[end] ? j : findprev(!isspace, data, j) # preserving whitespace if needed
373373
if last_type === RawElementClose || last_type === RawElementSelfClosed|| last_type === RawDocument
374-
# drop pure-whitespace inter-element text nodes
374+
# Maybe drop pure-whitespace inter-element text nodes?
375375
# (e.g. whitespace between a closing and an opening tag which would otherwise make an orphan text node)
376-
if all(isspace, @view data[i:j]) && depth > 1
377-
return next(Raw(type, depth, j, 0, data, ctx, has_xml_space))
378-
end
376+
#if all(isspace, @view data[i:j]) && depth > 1
377+
# return next(Raw(type, depth, j, 0, data, ctx, has_xml_space))
378+
#end
379379
end
380380
else
381381
i = k

test/runtests.jl

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -342,15 +342,15 @@ end
342342
doc9 = XML.parse(XML.Node, xml9)
343343

344344
# level1b should preserve (inherits from root)
345-
level1b_text = XML.value(doc9[1][3][1])
345+
level1b_text = XML.value(doc9[1][4][1])
346346
@test level1b_text == " preserved b \n "
347347

348348
# level2 should normalize (explicit xml:space="default")
349-
level2b_text = XML.value(doc9[1][3][2][1])
349+
level2b_text = XML.value(doc9[1][4][2][1])
350350
@test level2b_text == "normalized b"
351351

352352
# level3 should preserve (explicit xml:space="preserve")
353-
level3b_text = XML.value(doc9[1][3][2][2][1])
353+
level3b_text = XML.value(doc9[1][4][2][2][1])
354354
@test level3b_text == " preserved again b "
355355

356356
# Test 10: futher repeated multiple levels of xml:space changes
@@ -396,7 +396,7 @@ end
396396
@test level3b_text == "normalized again b"
397397

398398
# level3c should preserve (inherited from level2b)
399-
level3c_text = XML.value(doc10[end][2][2][3][1])
399+
level3c_text = XML.value(doc10[end][2][2][4][1])
400400
@test level3c_text == " preserved c \n "
401401

402402
# level1c should normalize (as root)
@@ -419,11 +419,14 @@ end
419419
<r> after default gap </r>
420420
</root>"""
421421
d2 = XML.parse(XML.Node, s2)
422-
@test length(d2[1]) == 4
422+
@test length(d2[1]) == 7
423423
@test XML.value(d2[1][1]) == "\n "
424424
@test XML.value(d2[1][2][1]) == " keep "
425-
@test XML.value(d2[1][3][1]) == "norm"
426-
@test XML.value(d2[1][4][1]) == " after default gap "
425+
@test XML.value(d2[1][3]) == "\n "
426+
@test XML.value(d2[1][4][1]) == "norm"
427+
@test XML.value(d2[1][5]) == "\n "
428+
@test XML.value(d2[1][6][1]) == " after default gap "
429+
@test XML.value(d2[1][7]) == "\n"
427430
end
428431

429432
# @testset "XML whitespace vs Unicode whitespace" begin
@@ -469,10 +472,10 @@ end
469472
@test XML.value(d[1][2][1]) == " a \n "
470473
@test XML.value(d[1][2][2][1]) == "b"
471474
@test XML.value(d[1][2][2][2][1]) == " c "
472-
@test d[1][2][3].tag == "y2"
473-
@test XML.value(d[1][2][3][1]) == "d"
474-
@test d[1][2][4].tag == "w"
475-
@test XML.value(d[1][2][4][1]) == " e "
475+
@test d[1][2][4].tag == "y2"
476+
@test XML.value(d[1][2][4][1]) == "d"
477+
@test d[1][2][6].tag == "w"
478+
@test XML.value(d[1][2][6][1]) == " e "
476479
end
477480

478481
@testset "root/document boundaries" begin

0 commit comments

Comments
 (0)