*/
public class CommentToken implements Token<Moves> {
- private static final String COMMENT_REGEX = "^\\s*\\{([^}]+)\\}";
- private static final Pattern COMMENT_PATTERN = Pattern.compile(COMMENT_REGEX);
+ enum Type {
+
+ BRACE ( BRACE_PATTERN ),
+ SEMICOLON ( SEMICOLON_PATTERN );
+
+ private Pattern pattern;
+
+ Type(Pattern pattern) {
+ this.pattern = pattern;
+ }
+
+ public Pattern pattern() {
+ return pattern;
+ }
+ }
+
+ private static final String BRACE_REGEX = "^\\s*\\{([^}]+)\\}";
+ private static final Pattern BRACE_PATTERN = Pattern.compile(BRACE_REGEX);
+ private static final String SEMICOLON_REGEX = "^\\s*;([^\t]+)\t";
+ private static final Pattern SEMICOLON_PATTERN = Pattern.compile(SEMICOLON_REGEX);
private static final int COMMENT_GROUP = 1;
+ private Type commentType;
+
+ public CommentToken(Type type) {
+ this.commentType = type;
+ }
+
@Override
public int token(Moves moves, String pgn) throws ParseException {
- Matcher matcher = COMMENT_PATTERN.matcher(pgn);
+ Matcher matcher = commentType.pattern().matcher(pgn);
if (!matcher.find()) {
throw new ParseException("parse.pgn.incorrect.comment", pgn);
} else {