public static string FormatReport(Post post, ClassificationResults results, float threshold) { if (post == null || results == null || results.Action == ClassificationResults.SuggestedAction.Nothing) { return null; } var msg = new MessageBuilder(); var boldTh = 1 - ((1 - threshold) / 2); var resData = $"Similarity: {Math.Round(results.Similarity * 100)}%"; switch (results.Action) { case ClassificationResults.SuggestedAction.Edit: { msg.AppendLink("Edit", editUrl, resData, results.Similarity >= boldTh ? TextFormattingOptions.Bold : TextFormattingOptions.None, WhiteSpace.None); break; } case ClassificationResults.SuggestedAction.Close: { msg.AppendLink("Close", closeUrl, resData, results.Similarity >= boldTh ? TextFormattingOptions.Bold : TextFormattingOptions.None, WhiteSpace.None); break; } case ClassificationResults.SuggestedAction.Delete: { msg.AppendLink("Delete", deleteUrl, resData, results.Similarity >= boldTh ? TextFormattingOptions.Bold : TextFormattingOptions.None, WhiteSpace.None); break; } } msg.AppendText(": "); msg.AppendLink(post.Title, post.Url, "Score: " + post.Score, TextFormattingOptions.None, WhiteSpace.None); msg.AppendText(", by "); msg.AppendLink(post.AuthorName, post.AuthorLink, "Reputation: " + post.AuthorRep, TextFormattingOptions.None, WhiteSpace.None); msg.AppendText("."); return msg.ToString(); }
private static void ReportPost(Post post, ClassificationResults results) { var report = ReportFormatter.FormatReport(post, results, cvClassifier.Threshold); if (string.IsNullOrWhiteSpace(report)) return; socvr.PostMessageFast(report); lqphq.PostMessageFast(report); }