mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 23:58:31 -06:00
refactored assignment markdown parsing and creation to their own classes
This commit is contained in:
@@ -40,7 +40,6 @@ public record LocalAssignment
|
|||||||
public string GetDescriptionHtml()
|
public string GetDescriptionHtml()
|
||||||
{
|
{
|
||||||
var rubricHtml = GetRubricHtml();
|
var rubricHtml = GetRubricHtml();
|
||||||
|
|
||||||
return Markdig.Markdown.ToHtml(Description) + "<hr>" + rubricHtml;
|
return Markdig.Markdown.ToHtml(Description) + "<hr>" + rubricHtml;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,53 +48,8 @@ public record LocalAssignment
|
|||||||
.FirstOrDefault(g => g.Name == LocalAssignmentGroupName)?
|
.FirstOrDefault(g => g.Name == LocalAssignmentGroupName)?
|
||||||
.CanvasId;
|
.CanvasId;
|
||||||
|
|
||||||
|
public string ToMarkdown() => this.AssignmentToMarkdown();
|
||||||
public string ToYaml()
|
public string RubricToMarkdown() => this.AssignmentRubricToMarkdown();
|
||||||
{
|
|
||||||
var serializer = new SerializerBuilder().DisableAliases().Build();
|
|
||||||
var yaml = serializer.Serialize(this);
|
|
||||||
return yaml;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string ToMarkdown()
|
|
||||||
{
|
|
||||||
var settingsMarkdown = settingsToMarkdown();
|
|
||||||
var rubricMarkdown = RubricToMarkdown();
|
|
||||||
var assignmentMarkdown =
|
|
||||||
settingsMarkdown + "\n"
|
|
||||||
+ "---\n\n"
|
|
||||||
+ Description + "\n\n"
|
|
||||||
+ "## Rubric\n\n"
|
|
||||||
+ rubricMarkdown;
|
|
||||||
|
|
||||||
return assignmentMarkdown;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string RubricToMarkdown()
|
|
||||||
{
|
|
||||||
var builder = new StringBuilder();
|
|
||||||
foreach (var item in Rubric)
|
|
||||||
{
|
|
||||||
var pointLabel = item.Points > 1 ? "pts" : "pt";
|
|
||||||
builder.Append($"- {item.Points}{pointLabel}: {item.Label}" + "\n");
|
|
||||||
}
|
|
||||||
return builder.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private string settingsToMarkdown()
|
|
||||||
{
|
|
||||||
var builder = new StringBuilder();
|
|
||||||
builder.Append($"Name: {Name}" + "\n");
|
|
||||||
builder.Append($"LockAt: {LockAt}" + "\n");
|
|
||||||
builder.Append($"DueAt: {DueAt}" + "\n");
|
|
||||||
builder.Append($"AssignmentGroupName: {LocalAssignmentGroupName}" + "\n");
|
|
||||||
builder.Append($"SubmissionTypes:" + "\n");
|
|
||||||
foreach (var submissionType in SubmissionTypes)
|
|
||||||
{
|
|
||||||
builder.Append($"- {submissionType}" + "\n");
|
|
||||||
}
|
|
||||||
return builder.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static LocalAssignment ParseMarkdown(string input) => LocalAssignmentMarkdownParser.ParseMarkdown(input);
|
public static LocalAssignment ParseMarkdown(string input) => LocalAssignmentMarkdownParser.ParseMarkdown(input);
|
||||||
|
public static IEnumerable<RubricItem> ParseRubricMarkdown(string rawMarkdown) => LocalAssignmentMarkdownParser.ParseRubricMarkdown(rawMarkdown);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
using System.Text;
|
||||||
|
using LocalModels;
|
||||||
|
|
||||||
|
namespace LocalModels;
|
||||||
|
public static class LocalAssignmentMarkdownCreator
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public static string AssignmentToMarkdown(this LocalAssignment assignment)
|
||||||
|
{
|
||||||
|
var settingsMarkdown = assignment.settingsToMarkdown();
|
||||||
|
var rubricMarkdown = assignment.RubricToMarkdown();
|
||||||
|
var assignmentMarkdown =
|
||||||
|
settingsMarkdown + "\n"
|
||||||
|
+ "---\n\n"
|
||||||
|
+ assignment.Description + "\n\n"
|
||||||
|
+ "## Rubric\n\n"
|
||||||
|
+ rubricMarkdown;
|
||||||
|
|
||||||
|
return assignmentMarkdown;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string AssignmentRubricToMarkdown(this LocalAssignment assignment)
|
||||||
|
{
|
||||||
|
var builder = new StringBuilder();
|
||||||
|
foreach (var item in assignment.Rubric)
|
||||||
|
{
|
||||||
|
var pointLabel = item.Points > 1 ? "pts" : "pt";
|
||||||
|
builder.Append($"- {item.Points}{pointLabel}: {item.Label}" + "\n");
|
||||||
|
}
|
||||||
|
return builder.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string settingsToMarkdown(this LocalAssignment assignment)
|
||||||
|
{
|
||||||
|
var builder = new StringBuilder();
|
||||||
|
builder.Append($"Name: {assignment.Name}" + "\n");
|
||||||
|
builder.Append($"LockAt: {assignment.LockAt}" + "\n");
|
||||||
|
builder.Append($"DueAt: {assignment.DueAt}" + "\n");
|
||||||
|
builder.Append($"AssignmentGroupName: {assignment.LocalAssignmentGroupName}" + "\n");
|
||||||
|
builder.Append($"SubmissionTypes:" + "\n");
|
||||||
|
foreach (var submissionType in assignment.SubmissionTypes)
|
||||||
|
{
|
||||||
|
builder.Append($"- {submissionType}" + "\n");
|
||||||
|
}
|
||||||
|
return builder.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -50,11 +50,11 @@ public static class LocalAssignmentMarkdownParser
|
|||||||
private static List<string> parseSubmissionTypes(string input)
|
private static List<string> parseSubmissionTypes(string input)
|
||||||
{
|
{
|
||||||
input = input.Replace("\r\n", "\n");
|
input = input.Replace("\r\n", "\n");
|
||||||
List<string> submissionTypes = new List<string>();
|
List<string> submissionTypes = [];
|
||||||
|
|
||||||
// Define a regular expression pattern to match the bulleted list items
|
// Define a regular expression pattern to match the bulleted list items
|
||||||
string startOfTypePattern = @"- (.+)";
|
string startOfTypePattern = @"- (.+)";
|
||||||
Regex regex = new Regex(startOfTypePattern);
|
Regex regex = new(startOfTypePattern);
|
||||||
|
|
||||||
var words = input.Split("SubmissionTypes:");
|
var words = input.Split("SubmissionTypes:");
|
||||||
var inputAfterSubmissionTypes = words[1];
|
var inputAfterSubmissionTypes = words[1];
|
||||||
|
|||||||
Reference in New Issue
Block a user