Skip to content

Commit

Permalink
fix: epub:type non-XML parsing fallback for pagebreak role
Browse files Browse the repository at this point in the history
  • Loading branch information
danielweck committed Feb 4, 2025
1 parent 97fc9c7 commit 4c95bff
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 6 deletions.
6 changes: 3 additions & 3 deletions lib/rules/pagebreak-label-matches.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ function pagebreakLabelMatches(node) {
node
.getAttributeNS('http://www.idpf.org/2007/ops', 'type')
.match(/\S+/g)
.includes('pagebreak'))
.includes('pagebreak')) ||
(node.hasAttribute('epub:type') &&
node.getAttribute('epub:type').match(/\S+/g).includes('pagebreak')) // for unit tests that are not XML-aware due to fixture.innerHTML
);

return false;
}

export default pagebreakLabelMatches;
9 changes: 8 additions & 1 deletion test/integration/full/pagebreak-label/content__.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,15 @@
<span id="p2" epub:type="pagebreak" title="p2" />
<span id="p3" role="doc-pagebreak" />
<span id="p4" epub:type="pagebreak" />

<span id="p5" role="doc-pagebreak"></span>
<span id="p6" role="doc-pagebreak" aria-label="p6" />
<div>
<span id="p9" epub:type="pagebreak" role="doc-pagebreak" aria-labelledby="p9desc"></span>
<span id="p9desc" aria-hidden="true" hidden="hidden">p9</span>
<span aria-hidden="true" class="page-number">Page break 9</span>
</div>
<div id="mocha"></div>
<script src="/test/integration/no-ui-reporter.js"></script>
<script src="/test/testutils.js"></script>
<script src="pagebreak-label.js"></script>
<script src="/test/integration/adapter.js"></script>
Expand Down
7 changes: 5 additions & 2 deletions test/integration/full/pagebreak-label/pagebreak-label.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,11 @@ describe('pagebreak-label test fail', function () {
assert.lengthOf(results.violations, 1);
});

it('should find #p3 #p4', function () {
it('should find #p3 #p4 #p5 #p9', function () {
assert.deepEqual(results.violations[0].nodes[0].target, ['#p3']);
assert.deepEqual(results.violations[0].nodes[1].target, ['#p4']);
assert.deepEqual(results.violations[0].nodes[2].target, ['#p5']);
assert.deepEqual(results.violations[0].nodes[3].target, ['#p9']);
});
});

Expand All @@ -38,9 +40,10 @@ describe('pagebreak-label test fail', function () {
assert.lengthOf(results.passes, 1);
});

it('should find section #p1 #p2', function () {
it('should find section #p1 #p2 #p6', function () {
assert.deepEqual(results.passes[0].nodes[0].target, ['#p1']);
assert.deepEqual(results.passes[0].nodes[1].target, ['#p2']);
assert.deepEqual(results.passes[0].nodes[2].target, ['#p6']);
});
});

Expand Down
6 changes: 6 additions & 0 deletions test/integration/rules/pagebreak-label/pagebreak-label.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"description": "pagebreak-label test",
"rule": "pagebreak-label",
"violations": [["#p3"], ["#p4"], ["#p5"], ["#p9"]],
"passes": [["#p1"], ["#p2"], ["#p6"]]
}
26 changes: 26 additions & 0 deletions test/integration/rules/pagebreak-label/pagebreak-label.xhtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:epub="http://www.idpf.org/2007/ops"
xml:lang="en"
>
<head>
<title>pagebreak-label test</title>
<meta charset="utf8" />
</head>
<body>
<h1>Loomings</h1>
<p>Call me Ishmael.</p>

<span id="p1" role="doc-pagebreak" title="p1" />
<span id="p2" epub:type="pagebreak" title="p2" />
<span id="p3" role="doc-pagebreak" />
<span id="p4" epub:type="pagebreak" />
<span id="p5" role="doc-pagebreak"></span>
<span id="p6" role="doc-pagebreak" aria-label="p6" />
<div>
<span id="p9" epub:type="pagebreak" role="doc-pagebreak" aria-labelledby="p9desc"></span>
<span id="p9desc" aria-hidden="true" hidden="hidden">p9</span>
<span aria-hidden="true" class="page-number">Page break 9</span>
</div>
</body>
</html>

0 comments on commit 4c95bff

Please sign in to comment.