use of com.wolfram.alpha.visitor.Visitable in project SkyBot by duncte123.
the class WolframAlphaCommand method generateEmbed.
/**
* Generates an embed for the {@link WAQueryResult result of a computation}
*
* @param event The event
* @param result The result generated
* @return An {@link MessageEmbed embed} representing this {@link WAQueryResult result}
*/
private MessageEmbed generateEmbed(GuildMessageReceivedEvent event, WAQueryResult result) {
Member m = event.getMember();
EmbedBuilder eb = EmbedUtils.defaultEmbed();
eb.setAuthor(m.getUser().getName(), null, m.getUser().getAvatarUrl());
eb.setTitle("**Input:** " + a(result.getQuery().getInput()), a(result.getQuery().toWebsiteURL()));
for (WAPod pod : result.getPods()) {
String name = a(pod.getTitle());
StringBuilder embeds = new StringBuilder();
// Loop over the subpods
for (WASubpod sp : pod.getSubpods()) {
// yet another stringbuilder
StringBuilder e = new StringBuilder();
// append the title
e.append(a(sp.getTitle()));
// loop over the contents
for (Visitable v : sp.getContents()) {
String d = "";
if (v instanceof WAImage) {
WAImage i = (WAImage) v;
d += "[" + a(i.getTitle()) + "](" + WebUtils.ins.shortenUrl(i.getURL()).execute() + ")";
} else if (v instanceof WAInfo) {
WAInfo i = (WAInfo) v;
d += a(i.getText());
// Ramid when?
// TODO: Display more...
} else if (v instanceof WALink) {
WALink l = (WALink) v;
d += "[" + a(l.getText()) + "](" + WebUtils.ins.shortenUrl(l.getURL()).execute() + ")";
} else if (v instanceof WAPlainText) {
WAPlainText pt = (WAPlainText) v;
d += a(pt.getText());
} else if (v instanceof WASound) {
WASound sound = (WASound) v;
d += WebUtils.ins.shortenUrl(sound.getURL()).execute();
}
e.append(d).append("\n\n");
}
embeds.append(a(e.toString().trim())).append("\n\n");
}
eb.addField(name, a(embeds.toString().trim()), false);
}
return eb.build();
}
Aggregations