Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Pikachu920/e5e601aecd4b51438c38ffbf770868ba to your computer and use it in GitHub Desktop.
Save Pikachu920/e5e601aecd4b51438c38ffbf770868ba to your computer and use it in GitHub Desktop.
final Parser<User> = new Parser<>() {
private final Pattern DISCRIM_PATTERN = Pattern.compile("(.+)#(\\d+)");
private final Pattern MENTION_OR_ID_PATTERN = Pattern.compile("(<@)?(\\d+)(>)?");
public User parse(String input, ParseContext context) {
Matcher discrimMatcher = DISCRIM_PATTERN.matcher(input);
Matcher mentionMatcher = MENTION_OR_ID_PATTERN.matcher(input);
if (discrimMatcher.matches()) {
// use the groups for discrim
} else if (mentionMatcher.matches()) {
// use the groups for id
}
return null;
}
}
new SimpleType<User>(User.class, "user", "users?") {
@Override
public User parse(String s, ParseContext pc) {
return USER_PARSER.parse(s, pc);
}
@Override
public boolean canParse(ParseContext pc) {
return pc == ParseContext.COMMAND;
}
@Override
public String toString(User user, int arg1) {
return user.getName();
}
@Override
public String toVariableNameString(User user) {
return user.getId();
}
};
new SimpleType<Member>(Member.class, "member", "members?") {
@Override
public Member parse(String s, ParseContext pc) {
User user = USER_PARSER.parse(s, pc);
// convert to member
return member;
}
@Override
public boolean canParse(ParseContext pc) {
return pc == ParseContext.COMMAND;
}
@Override
public String toString(Member member, int arg1) {
return member.getUser().getName();
}
@Override
public String toVariableNameString(Member member) {
return member.getUser().getId();
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment