Files
canvasManagement/Management/Models/Local/LocalCoursePage.cs

47 lines
1.2 KiB
C#

namespace LocalModels;
public record LocalCoursePage
{
public required string Name { get; init; }
public required string Text { get; set; }
public DateTime? DueDateForOrdering { get; init; }
public string ToMarkdown()
{
var printableDueDate = DueDateForOrdering.ToString()?.Replace('\u202F', ' ');
var settingsMarkdown = $"Name: {Name}\n"
+ $"DueDateForOrdering: {printableDueDate}\n"
+ "---\n";
return settingsMarkdown + Text;
}
public static LocalCoursePage ParseMarkdown(string pageMarkdown)
{
var rawSettings = pageMarkdown.Split("---")[0];
var name = MarkdownUtils.ExtractLabelValue(rawSettings, "Name");
var rawDate = MarkdownUtils.ExtractLabelValue(rawSettings, "DueDateForOrdering");
DateTime? parsedDate = DateTime.TryParse(rawDate, out DateTime parsedDueAt)
? parsedDueAt
: null;
var text = pageMarkdown.Split("---\n")[1];
return new LocalCoursePage
{
Name = name,
DueDateForOrdering = parsedDate,
Text = text
};
}
}
public class LocalPageMarkdownParseException : Exception
{
public LocalPageMarkdownParseException(string message) : base(message)
{
}
}