diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-08-28 23:25:34 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-08-28 23:25:34 +0100 |
| commit | b17947518dfcb9113ed84f047c965db16d375894 (patch) | |
| tree | f9a9a5bf1e72062fe8f749a051e4191e164fcdf5 /src/main | |
| parent | 8eba7f1f55307baf8dfce74b07c49f89c2ca2404 (diff) | |
Parse ignore path
Diffstat (limited to 'src/main')
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 } |
