diff options
Diffstat (limited to 'src/main/java')
5 files changed, 16 insertions, 13 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 ab9ff8d..94004f0 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 @@ -49,11 +49,7 @@ public class DocumentMatcherParser { } private static Optional<String> parseStyleId(TokenIterator<TokenType> tokens) { - if (tokens.peekTokenType() == TokenType.CLASS_NAME) { - return Optional.of(TokenParser.parseClassName(tokens)); - } else { - return Optional.empty(); - } + return TokenParser.parseClassName(tokens); } private static Optional<String> parseStyleName(TokenIterator<TokenType> tokens) { 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 b384ef7..c9609d3 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 @@ -8,6 +8,7 @@ import org.zwobble.mammoth.internal.styles.HtmlPathElements; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import static org.zwobble.mammoth.internal.util.Maps.map; @@ -59,8 +60,9 @@ public class HtmlPathParser { private static List<String> parseClassNames(TokenIterator<TokenType> tokens) { List<String> classNames = new ArrayList<>(); - while (tokens.peekTokenType() == TokenType.CLASS_NAME) { - classNames.add(TokenParser.parseClassName(tokens)); + Optional<String> className; + while ((className = TokenParser.parseClassName(tokens)).isPresent()) { + classNames.add(className.get()); } return classNames; } 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 704ba86..50fcffe 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 @@ -7,13 +7,13 @@ import static org.zwobble.mammoth.internal.util.Lists.list; public class StyleMappingTokeniser { public static List<Token<TokenType>> tokenise(String line) { String stringPrefix = "'((?:\\.|[^'])*)"; + String identifierCharacter = "(?:[a-zA-Z\\-_]|\\\\.)"; RegexTokeniser<TokenType> tokeniser = new RegexTokeniser<>( TokenType.UNKNOWN, list( - RegexTokeniser.rule(TokenType.IDENTIFIER, "([a-zA-Z][a-zA-Z0-9\\-]*)"), - RegexTokeniser.rule(TokenType.CLASS_NAME, "(\\.(?:[a-zA-Z0-9\\-]|\\\\.)+)"), - RegexTokeniser.rule(TokenType.SYMBOL, ":|>|=>|=|\\(|\\)|\\[|\\]|\\||!"), + RegexTokeniser.rule(TokenType.IDENTIFIER, identifierCharacter + "(?:" + identifierCharacter + "|[0-9])*"), + RegexTokeniser.rule(TokenType.SYMBOL, ":|>|=>|=|\\(|\\)|\\[|\\]|\\||!|\\."), RegexTokeniser.rule(TokenType.WHITESPACE, "\\s+"), RegexTokeniser.rule(TokenType.STRING, stringPrefix + "'"), RegexTokeniser.rule(TokenType.UNTERMINATED_STRING, stringPrefix), diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenParser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenParser.java index 3760d64..01a1b21 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenParser.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenParser.java @@ -1,8 +1,14 @@ package org.zwobble.mammoth.internal.styles.parsing; +import java.util.Optional; + public class TokenParser { - public static String parseClassName(TokenIterator<TokenType> tokens) { - return EscapeSequences.decode(tokens.nextValue(TokenType.CLASS_NAME).substring(1)); + public static Optional<String> parseClassName(TokenIterator<TokenType> tokens) { + if (tokens.trySkip(TokenType.SYMBOL, ".")) { + return Optional.of(EscapeSequences.decode(tokens.nextValue(TokenType.IDENTIFIER))); + } else { + return Optional.empty(); + } } public static String parseString(TokenIterator<TokenType> tokens) { 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 17442b5..ba17de3 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 @@ -3,7 +3,6 @@ package org.zwobble.mammoth.internal.styles.parsing; public enum TokenType { WHITESPACE, IDENTIFIER, - CLASS_NAME, SYMBOL, STRING, UNTERMINATED_STRING, |
