aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/internal/styles/parsing
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-06-13 12:40:05 +0100
committerMichael Williamson <mike@zwobble.org>2024-06-13 12:40:05 +0100
commita26168d0c52aeec2dfbe6fffc1531219b4dcd199 (patch)
tree7c05f0aa545ded685c08361f147573c5ac2616cd /src/main/java/org/zwobble/mammoth/internal/styles/parsing
parentd3a259e3e2d9ff17f2152eeae55e32d7cea09fed (diff)
Parse highlight matchers
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/styles/parsing')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java18
1 files changed, 18 insertions, 0 deletions
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 fdd2797..c40176a 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
@@ -34,6 +34,9 @@ public class DocumentMatcherParser {
return StyleMapBuilder::allCaps;
case "small-caps":
return StyleMapBuilder::smallCaps;
+ case "highlight":
+ HighlightMatcher highlight = parseHighlightMatcher(tokens);
+ return (builder, path) -> builder.mapHighlight(highlight, path);
case "comment-reference":
return StyleMapBuilder::commentReference;
case "br":
@@ -112,6 +115,21 @@ public class DocumentMatcherParser {
}
}
+ private static HighlightMatcher parseHighlightMatcher(TokenIterator<TokenType> tokens) {
+ Optional<String> color;
+
+ if (tokens.trySkip(TokenType.SYMBOL, "[")) {
+ tokens.skip(TokenType.IDENTIFIER, "color");
+ tokens.skip(TokenType.SYMBOL, "=");
+ color = Optional.of(TokenParser.parseString(tokens));
+ tokens.skip(TokenType.SYMBOL, "]");
+ } else {
+ color = Optional.empty();
+ }
+
+ return new HighlightMatcher(color);
+ }
+
private static BreakMatcher parseBreakMatcher(TokenIterator<TokenType> tokens) {
tokens.skip(TokenType.SYMBOL, "[");
tokens.skip(TokenType.IDENTIFIER, "type");