aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java3
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/Run.java11
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java8
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java19
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java2
6 files changed, 45 insertions, 3 deletions
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<HtmlNode> visit(Run run, Context context) {
Supplier<List<HtmlNode>> 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<Style> style;
private final List<DocumentElement> children;
@@ -17,14 +18,16 @@ public class Run implements DocumentElement, HasChildren {
boolean isItalic,
boolean isUnderline,
boolean isStrikethrough,
+ boolean isSmallCaps,
VerticalAlignment verticalAlignment,
Optional<Style> style,
- List<DocumentElement> children)
- {
+ List<DocumentElement> children
+ ) {
this.isBold = isBold;
this.isItalic = isItalic;
this.isUnderline = isUnderline;
this.isStrikethrough = isStrikethrough;
+ this.isSmallCaps = isSmallCaps;
this.verticalAlignment = verticalAlignment;
this.style = style;
this.children = children;
@@ -46,6 +49,10 @@ public class Run implements DocumentElement, HasChildren {
return isStrikethrough;
}
+ public boolean isSmallCaps() {
+ return isSmallCaps;
+ }
+
public VerticalAlignment getVerticalAlignment() {
return verticalAlignment;
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
index 3d0d7f2..464884a 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
@@ -179,6 +179,7 @@ class StatefulBodyXmlReader {
isItalic(properties),
isUnderline(properties),
isStrikethrough(properties),
+ isSmallCaps(properties),
readVerticalAlignment(properties),
style,
children
@@ -208,6 +209,10 @@ class StatefulBodyXmlReader {
return readBooleanElement(properties, "w:strike");
}
+ private boolean isSmallCaps(XmlElementLike properties) {
+ return readBooleanElement(properties, "w:smallCaps");
+ }
+
private boolean readBooleanElement(XmlElementLike properties, String tagName) {
return properties.findChild(tagName)
.map(child -> child.getAttributeOrNone("w:val")
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java
index 9856d70..7959acb 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMap.java
@@ -23,6 +23,7 @@ public class StyleMap {
Optionals.first(high.italic, low.italic),
Optionals.first(high.underline, low.underline),
Optionals.first(high.strikethrough, low.strikethrough),
+ Optionals.first(high.smallCaps, low.smallCaps),
Optionals.first(high.commentReference, low.commentReference),
Lists.eagerConcat(high.paragraphStyles, low.paragraphStyles),
Lists.eagerConcat(high.runStyles, low.runStyles),
@@ -36,6 +37,7 @@ public class StyleMap {
private final Optional<HtmlPath> italic;
private final Optional<HtmlPath> underline;
private final Optional<HtmlPath> strikethrough;
+ private final Optional<HtmlPath> smallCaps;
private final Optional<HtmlPath> commentReference;
private final List<StyleMapping<Paragraph>> paragraphStyles;
private final List<StyleMapping<Run>> runStyles;
@@ -46,6 +48,7 @@ public class StyleMap {
Optional<HtmlPath> italic,
Optional<HtmlPath> underline,
Optional<HtmlPath> strikethrough,
+ Optional<HtmlPath> smallCaps,
Optional<HtmlPath> commentReference,
List<StyleMapping<Paragraph>> paragraphStyles,
List<StyleMapping<Run>> runStyles,
@@ -56,6 +59,7 @@ public class StyleMap {
this.italic = italic;
this.underline = underline;
this.strikethrough = strikethrough;
+ this.smallCaps = smallCaps;
this.commentReference = commentReference;
this.paragraphStyles = paragraphStyles;
this.runStyles = runStyles;
@@ -83,6 +87,10 @@ public class StyleMap {
return strikethrough;
}
+ public Optional<HtmlPath> getSmallCaps() {
+ return smallCaps;
+ }
+
public Optional<HtmlPath> getCommentReference() {
return commentReference;
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java
index 4972883..4e6e27b 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/StyleMapBuilder.java
@@ -11,6 +11,7 @@ import java.util.Optional;
public class StyleMapBuilder {
private Optional<HtmlPath> underline;
private Optional<HtmlPath> strikethrough;
+ private Optional<HtmlPath> smallCaps;
private Optional<HtmlPath> bold;
private Optional<HtmlPath> italic;
private Optional<HtmlPath> commentReference;
@@ -22,6 +23,7 @@ public class StyleMapBuilder {
this.bold = Optional.empty();
this.underline = Optional.empty();
this.strikethrough = Optional.empty();
+ this.smallCaps = Optional.empty();
this.italic = Optional.empty();
this.commentReference = Optional.empty();
}
@@ -46,6 +48,11 @@ public class StyleMapBuilder {
return this;
}
+ public StyleMapBuilder smallCaps(HtmlPath path) {
+ this.smallCaps = Optional.of(path);
+ return this;
+ }
+
public StyleMapBuilder commentReference(HtmlPath path) {
this.commentReference = Optional.of(path);
return this;
@@ -67,6 +74,16 @@ public class StyleMapBuilder {
}
public StyleMap build() {
- return new StyleMap(bold, italic, underline, strikethrough, commentReference, paragraphStyles, runStyles, breakStyles);
+ return new StyleMap(
+ bold,
+ italic,
+ underline,
+ strikethrough,
+ smallCaps,
+ commentReference,
+ paragraphStyles,
+ runStyles,
+ breakStyles
+ );
}
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java
index db0b1bb..9f8d32b 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java
@@ -27,6 +27,8 @@ public class DocumentMatcherParser {
return StyleMapBuilder::underline;
case "strike":
return StyleMapBuilder::strikethrough;
+ case "small-caps":
+ return StyleMapBuilder::smallCaps;
case "comment-reference":
return StyleMapBuilder::commentReference;
case "br":