use of io.wring.agents.Printable in project wring by yegor256.
the class BoCommit method text.
/**
* Collect all important texts from the issue.
* @param coords Coords
* @return Body text
* @throws IOException If fails
* @checkstyle ExecutableStatementCountCheck (100 lines)
*/
@SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops")
public String text(final Coordinates coords) throws IOException {
final Iterator<JsonObject> comments = new RtPagination<>(this.commit.repo().github().entry().uri().path("repos").path(coords.user()).path(coords.repo()).path("commits").path(this.commit.sha()).path("comments").back(), object -> object).iterator();
final String self = this.commit.repo().github().users().self().login();
int seen = this.seen();
Logger.info(this, "Last seen comment in %s is #%d", this.commit.sha(), seen);
final Pattern ptn = Pattern.compile(String.format(".*(?<![a-zA -Z0-9-])%s(?![a-zA-Z0-9-]).*", Pattern.quote(String.format("@%s", self))), Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
final StringBuilder body = new StringBuilder();
while (comments.hasNext()) {
final JsonObject comment = comments.next();
final int number = comment.getInt("id");
if (number <= seen) {
continue;
}
final String author = comment.getJsonObject("user").getString("login");
if (author.equals(self)) {
Logger.info(this, "%s/%d ignored since you're the author", this.commit.sha(), number);
continue;
}
final String cmt = comment.getString("body");
if (ptn.matcher(cmt).matches()) {
body.append('@').append(author).append(" at [").append(comment.getString("updated_at")).append("](").append(comment.getString("html_url")).append("): ").append(StringEscapeUtils.escapeHtml4(cmt)).append("\n\n");
Logger.info(this, "%s/%d accepted: %s", this.commit.sha(), number, new Printable(cmt));
} else {
Logger.info(this, "%s/%d ignored: %s", this.commit.sha(), number, new Printable(cmt));
}
seen = number;
}
this.base.vault().save(this.key(), Optional.of(Integer.toString(seen)));
Logger.info(this, "Seen comment set to %d for %s", seen, this.commit.sha());
return body.toString();
}
use of io.wring.agents.Printable in project wring by yegor256.
the class BoIssue method text.
/**
* Collect all important texts from the issue.
* @return Body text
* @throws IOException If fails
* @checkstyle ExecutableStatementCountCheck (100 lines)
*/
@SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops")
public String text() throws IOException {
final Iterator<Comment.Smart> comments = new Smarts<Comment.Smart>(new Bulk<>(this.issue.comments().iterate())).iterator();
final String self = this.issue.repo().github().users().self().login();
final Pattern ptn = Pattern.compile(String.format(".*(?<![a-zA -Z0-9-])%s(?![a-zA-Z0-9-]).*", Pattern.quote(String.format("@%s", self))), Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
int seen = this.seen();
Logger.info(this, "Last seen comment in %s#%d is #%d", this.issue.repo().coordinates(), this.issue.number(), seen);
final StringBuilder body = new StringBuilder();
while (comments.hasNext()) {
final Comment.Smart comment = comments.next();
if (comment.number() <= seen) {
continue;
}
// @checkstyle MagicNumber (1 line)
if (comment.number() < 188060467) {
Logger.info(this, "%s#%d/%d ignored since too old", this.issue.repo().coordinates(), this.issue.number(), comment.number());
continue;
}
if (comment.author().login().equals(self)) {
Logger.info(this, "%s#%d/%d ignored since you're the author", this.issue.repo().coordinates(), this.issue.number(), comment.number());
continue;
}
final String cmt = comment.body();
if (ptn.matcher(cmt).matches()) {
body.append('@').append(comment.author().login()).append(" at [").append(String.format("%te-%<tb-%<tY", comment.createdAt())).append("](").append(this.issue.htmlUrl()).append("#issuecomment-").append(comment.number()).append("): ").append(StringEscapeUtils.escapeHtml4(cmt)).append("\n\n");
Logger.info(this, "%s#%d/%d accepted: %s", this.issue.repo().coordinates(), this.issue.number(), comment.number(), new Printable(cmt));
} else {
Logger.info(this, "%s#%d/%d ignored: %s", this.issue.repo().coordinates(), this.issue.number(), comment.number(), new Printable(cmt));
}
seen = comment.number();
}
this.base.vault().save(this.key(), Optional.of(Integer.toString(seen)));
Logger.info(this, "Seen comment set to %d for %s#%d", seen, this.issue.repo().coordinates(), this.issue.number());
return body.toString();
}
Aggregations