Skip to content

Commit da643e4

Browse files
committed
fix: properly set the rendition fields in the JSON report
See #1515
1 parent 39234a6 commit da643e4

File tree

48 files changed

+620
-17
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+620
-17
lines changed

src/main/java/com/adobe/epubcheck/opf/OPFHandler30.java

Lines changed: 58 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
import com.adobe.epubcheck.api.QuietReport;
6363
import com.adobe.epubcheck.messages.LocalizedMessages;
6464
import com.adobe.epubcheck.messages.MessageId;
65+
import com.adobe.epubcheck.opf.MetadataSet.Metadata;
6566
import com.adobe.epubcheck.opf.ResourceCollection.Roles;
6667
import com.adobe.epubcheck.util.EpubConstants;
6768
import com.adobe.epubcheck.util.FeatureEnum;
@@ -96,7 +97,8 @@ public class OPFHandler30 extends OPFHandler
9697
.put(DCTERMS_PREFIX, DCTERMS_VOCAB).put(MARC_PREFIX, MARC_VOCAB).put(ONIX_PREFIX, ONIX_VOCAB)
9798
.put(SCHEMA_PREFIX, SCHEMA_VOCAB).put(XSD_PREFIX, XSD_VOCAB).build();
9899
private static final Map<String, Vocab> RESERVED_META_VOCABS = new ImmutableMap.Builder<String, Vocab>()
99-
.put("", AggregateVocab.of(META_VOCAB, META_VOCAB_CAMEL)).put(AccessibilityVocab.PREFIX, AccessibilityVocab.META_VOCAB)
100+
.put("", AggregateVocab.of(META_VOCAB, META_VOCAB_CAMEL))
101+
.put(AccessibilityVocab.PREFIX, AccessibilityVocab.META_VOCAB)
100102
.put(MediaOverlaysVocab.PREFIX, MediaOverlaysVocab.VOCAB)
101103
.put(RenditionVocabs.PREFIX, RenditionVocabs.META_VOCAB).putAll(RESERVED_VOCABS).build();
102104
private static final Map<String, Vocab> RESERVED_ITEM_VOCABS = new ImmutableMap.Builder<String, Vocab>()
@@ -646,32 +648,72 @@ private void checkLanguageTag(String language)
646648

647649
protected void reportMetadata()
648650
{
651+
// Report publication rendition layout
649652
if (getMetadata().containsPrimary(
650653
RenditionVocabs.META_VOCAB.get(RenditionVocabs.META_PROPERTIES.LAYOUT), "pre-paginated"))
651654
{
652-
report.info(null, FeatureEnum.HAS_FIXED_LAYOUT, "pre-paginated");
655+
report.info(null, FeatureEnum.RENDITION_LAYOUT, "pre-paginated");
656+
report.info(null, FeatureEnum.HAS_FIXED_LAYOUT, "true");
657+
}
658+
// Report publication rendition orientation (if set)
659+
Optional<Metadata> orientation = MetadataSet.tryFind(getMetadata().getAll(),
660+
RenditionVocabs.META_VOCAB.get(RenditionVocabs.META_PROPERTIES.ORIENTATION),
661+
Optional.absent());
662+
if (orientation.isPresent())
663+
{
664+
report.info(null, FeatureEnum.RENDITION_ORIENTATION, orientation.get().getValue());
665+
}
666+
// Report publication rendition spread (if set)
667+
Optional<Metadata> spread = MetadataSet.tryFind(getMetadata().getAll(),
668+
RenditionVocabs.META_VOCAB.get(RenditionVocabs.META_PROPERTIES.SPREAD),
669+
Optional.absent());
670+
if (spread.isPresent())
671+
{
672+
report.info(null, FeatureEnum.RENDITION_SPREAD, spread.get().getValue());
653673
}
654674
}
655675

656676
@Override
657677
protected void reportItem(OPFItem item)
658678
{
659679
super.reportItem(item);
660-
boolean isFixed = getMetadata().containsPrimary(
661-
RenditionVocabs.META_VOCAB.get(RenditionVocabs.META_PROPERTIES.LAYOUT), "pre-paginated");
662-
if (item.getProperties().contains(
663-
RenditionVocabs.ITEMREF_VOCAB.get(RenditionVocabs.ITEMREF_PROPERTIES.LAYOUT_PRE_PAGINATED)))
664-
{
665-
isFixed = true;
666-
}
667-
else if (item.getProperties().contains(
668-
RenditionVocabs.ITEMREF_VOCAB.get(RenditionVocabs.ITEMREF_PROPERTIES.LAYOUT_REFLOWABLE)))
669-
{
670-
isFixed = false;
671-
}
672-
if (isFixed)
680+
681+
// Report rendition properties overrides
682+
Set<RenditionVocabs.ITEMREF_PROPERTIES> properties = Property.filter(item.getProperties(),
683+
RenditionVocabs.ITEMREF_PROPERTIES.class);
684+
for (RenditionVocabs.ITEMREF_PROPERTIES property : properties)
673685
{
674-
report.info(item.getPath(), FeatureEnum.HAS_FIXED_LAYOUT, String.valueOf(true));
686+
switch (property)
687+
{
688+
// Rendition layout properties
689+
case LAYOUT_PRE_PAGINATED:
690+
report.info(item.getPath(), FeatureEnum.RENDITION_LAYOUT, "pre-paginated");
691+
report.info(item.getPath(), FeatureEnum.HAS_FIXED_LAYOUT, "true");
692+
break;
693+
case LAYOUT_REFLOWABLE:
694+
report.info(item.getPath(), FeatureEnum.RENDITION_LAYOUT, "reflowable");
695+
report.info(item.getPath(), FeatureEnum.HAS_FIXED_LAYOUT, "false");
696+
break;
697+
// Orientation properties
698+
case ORIENTATION_AUTO:
699+
case ORIENTATION_LANDSCAPE:
700+
case ORIENTATION_PORTRAIT:
701+
report.info(item.getPath(), FeatureEnum.RENDITION_ORIENTATION,
702+
property.name().substring(12).toLowerCase(Locale.ROOT));
703+
break;
704+
// Spread properties
705+
case SPREAD_AUTO:
706+
case SPREAD_BOTH:
707+
case SPREAD_LANDSCAPE:
708+
case SPREAD_NONE:
709+
case SPREAD_PORTRAIT:
710+
report.info(item.getPath(), FeatureEnum.RENDITION_SPREAD,
711+
property.name().substring(7).toLowerCase(Locale.ROOT));
712+
break;
713+
714+
default:
715+
break;
716+
}
675717
}
676718
}
677719
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3+
<head>
4+
<meta charset="utf-8"/>
5+
<meta name="viewport" content="width=600,height=1200" />
6+
<title>Minimal EPUB</title>
7+
</head>
8+
<body>
9+
<h1>Loomings</h1>
10+
<p>Call me Ishmael.</p>
11+
</body>
12+
</html>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3+
<head>
4+
<meta charset="utf-8"/>
5+
<meta name="viewport" content="width=600,height=1200" />
6+
<title>Minimal EPUB</title>
7+
</head>
8+
<body>
9+
<h1>Loomings</h1>
10+
<p>Call me Ishmael.</p>
11+
</body>
12+
</html>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!DOCTYPE html>
2+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
3+
<head>
4+
<meta charset="utf-8"/>
5+
<title>Minimal Nav</title>
6+
</head>
7+
<body>
8+
<nav epub:type="toc">
9+
<ol>
10+
<li><a href="content_001.xhtml">content 001</a></li>
11+
</ol>
12+
</nav>
13+
</body>
14+
</html>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<package xmlns="http://www.idpf.org/2007/opf" version="3.0" xml:lang="en" unique-identifier="q">
3+
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
4+
<dc:title id="title">Minimal EPUB 3.0</dc:title>
5+
<dc:language>en</dc:language>
6+
<dc:identifier id="q">NOID</dc:identifier>
7+
<meta property="dcterms:modified">2017-06-14T00:00:01Z</meta>
8+
<meta property="rendition:layout">pre-paginated</meta>
9+
</metadata>
10+
<manifest>
11+
<item id="content_001" href="content_001.xhtml" media-type="application/xhtml+xml"/>
12+
<item id="content_002" href="content_002.xhtml" media-type="application/xhtml+xml"/>
13+
<item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
14+
</manifest>
15+
<spine>
16+
<itemref idref="content_001" />
17+
<itemref idref="content_002" properties="rendition:orientation-landscape"/>
18+
</spine>
19+
</package>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
3+
<rootfiles>
4+
<rootfile full-path="EPUB/package.opf" media-type="application/oebps-package+xml"/>
5+
</rootfiles>
6+
</container>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
application/epub+zip
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3+
<head>
4+
<meta charset="utf-8"/>
5+
<meta name="viewport" content="width=600,height=1200" />
6+
<title>Minimal EPUB</title>
7+
</head>
8+
<body>
9+
<h1>Loomings</h1>
10+
<p>Call me Ishmael.</p>
11+
</body>
12+
</html>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3+
<head>
4+
<meta charset="utf-8"/>
5+
<meta name="viewport" content="width=600,height=1200" />
6+
<title>Minimal EPUB</title>
7+
</head>
8+
<body>
9+
<h1>Loomings</h1>
10+
<p>Call me Ishmael.</p>
11+
</body>
12+
</html>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!DOCTYPE html>
2+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
3+
<head>
4+
<meta charset="utf-8"/>
5+
<title>Minimal Nav</title>
6+
</head>
7+
<body>
8+
<nav epub:type="toc">
9+
<ol>
10+
<li><a href="content_001.xhtml">content 001</a></li>
11+
</ol>
12+
</nav>
13+
</body>
14+
</html>

0 commit comments

Comments
 (0)