Created
June 2, 2018 01:46
-
-
Save Pikachu920/e5e601aecd4b51438c38ffbf770868ba to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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