From 87d8554726e81add059b211c6b120dc8d5003849 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 21 Jul 2017 12:31:11 +0100 Subject: Add style mapping for small caps --- NEWS | 2 ++ README.md | 11 ++++++++++ .../internal/conversion/DocumentToHtml.java | 3 +++ .../zwobble/mammoth/internal/documents/Run.java | 11 ++++++++-- .../internal/docx/StatefulBodyXmlReader.java | 5 +++++ .../zwobble/mammoth/internal/styles/StyleMap.java | 8 ++++++++ .../mammoth/internal/styles/StyleMapBuilder.java | 19 ++++++++++++++++- .../styles/parsing/DocumentMatcherParser.java | 2 ++ .../tests/conversion/DocumentToHtmlTests.java | 17 +++++++++++++++ .../tests/documents/DocumentElementMakers.java | 6 ++++++ .../zwobble/mammoth/tests/docx/BodyXmlTests.java | 24 +++++++++++++++++++++- .../tests/styles/parsing/StyleMapParserTests.java | 6 ++++++ 12 files changed, 110 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index c4582d0..c3f9040 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,8 @@ * Read children of v:group elements. +* Add style mapping for small caps. + # 1.3.1 * Read children of w:object elements. diff --git a/README.md b/README.md index e890dd2..96a41f2 100644 --- a/README.md +++ b/README.md @@ -432,6 +432,17 @@ strike Note that this matches text that has had strikethrough explicitly applied to it. It will not match any text that is struckthrough because of its paragraph or run style. +#### Small caps + +Match explicitly small caps text: + +``` +small-caps +``` + +Note that this matches text that has had small caps explicitly applied to it. +It will not match any text that is small caps because of its paragraph or run style. + ### HTML paths #### Single elements diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java index 9e6d223..8b15106 100644 --- a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java +++ b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java @@ -166,6 +166,9 @@ public class DocumentToHtml { @Override public List visit(Run run, Context context) { Supplier> nodes = () -> convertChildrenToHtml(run, context); + if (run.isSmallCaps()) { + nodes = styleMap.getSmallCaps().orElse(HtmlPath.EMPTY).wrap(nodes); + } if (run.isStrikethrough()) { nodes = styleMap.getStrikethrough().orElse(HtmlPath.collapsibleElement("s")).wrap(nodes); } diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Run.java b/src/main/java/org/zwobble/mammoth/internal/documents/Run.java index 29415c7..e047bf5 100644 --- a/src/main/java/org/zwobble/mammoth/internal/documents/Run.java +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Run.java @@ -8,6 +8,7 @@ public class Run implements DocumentElement, HasChildren { private final boolean isItalic; private final boolean isUnderline; private final boolean isStrikethrough; + private final boolean isSmallCaps; private final VerticalAlignment verticalAlignment; private final Optional