package er.chronic.tags; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import er.chronic.Options; import er.chronic.utils.Token; public class Ordinal extends Tag<Integer> { public static Pattern ORDINAL_PATTERN = Pattern.compile("^(\\d*)(st|nd|rd|th)$"); public Ordinal(Integer type) { super(type); } public static List<Token> scan(List<Token> tokens, Options options) { for (Token token : tokens) { Ordinal t; t = Ordinal.scan(token, options); if (t != null) { token.tag(t); } t = OrdinalDay.scan(token); if (t != null) { token.tag(t); } } return tokens; } public static Ordinal scan(Token token, Options options) { Matcher ordinalMatcher = ORDINAL_PATTERN.matcher(token.getWord()); if (ordinalMatcher.find()) { return new Ordinal(Integer.valueOf(ordinalMatcher.group(1))); } return null; } @Override public String toString() { return "ordinal"; } }