aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java1
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/Ignore.java7
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java9
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java2
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java1
5 files changed, 19 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java b/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java
index ee81dcf..0ce5c46 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java
@@ -12,6 +12,7 @@ import static org.zwobble.mammoth.internal.util.Maps.map;
public interface HtmlPath {
HtmlPath EMPTY = new HtmlPathElements(list());
+ HtmlPath IGNORE = Ignore.INSTANCE;
static HtmlPath elements(HtmlPathElement... elements) {
return new HtmlPathElements(asList(elements));
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/Ignore.java b/src/main/java/org/zwobble/mammoth/internal/styles/Ignore.java
index ceca95a..a09632e 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/Ignore.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/Ignore.java
@@ -7,7 +7,12 @@ import java.util.function.Supplier;
import static org.zwobble.mammoth.internal.util.Lists.list;
-public class Ignore implements HtmlPath {
+class Ignore implements HtmlPath {
+ static final HtmlPath INSTANCE = new Ignore();
+
+ private Ignore() {
+ }
+
@Override
public Supplier<List<HtmlNode>> wrap(Supplier<List<HtmlNode>> generateNodes) {
return () -> list();
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java
index 1589494..e7eefe2 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java
@@ -12,6 +12,15 @@ import static org.zwobble.mammoth.internal.util.Maps.map;
public class HtmlPathParser {
public static HtmlPath parse(TokenIterator tokens) {
+ if (tokens.peekTokenType() == TokenType.BANG) {
+ tokens.skip(TokenType.BANG);
+ return HtmlPath.IGNORE;
+ } else {
+ return parseHtmlPathElements(tokens);
+ }
+ }
+
+ private static HtmlPath parseHtmlPathElements(TokenIterator tokens) {
List<HtmlPathElement> elements = new ArrayList<>();
if (tokens.peekTokenType() == TokenType.IDENTIFIER) {
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java
index 9806d67..b8cf960 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java
@@ -64,6 +64,8 @@ public class StyleMappingTokeniser {
return TokenType.CLOSE_SQUARE_BRACKET;
case '|':
return TokenType.CHOICE;
+ case '!':
+ return TokenType.BANG;
default:
return TokenType.UNKNOWN;
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java
index 04a0b64..a0b16de 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java
@@ -16,6 +16,7 @@ public enum TokenType {
UNTERMINATED_STRING,
INTEGER,
CHOICE,
+ BANG,
EOF,
UNKNOWN
}