more fixes for matching

This commit is contained in:
2023-12-12 12:13:25 -07:00
parent a4b260941f
commit fd582b4e19
2 changed files with 31 additions and 5 deletions

View File

@@ -59,4 +59,25 @@ Match the following terms & definitions
^ keyword - reserved word that has special meaning in a program (e.g. class, void, static, etc.)";
questionMarkdown.Should().Contain(expectedMarkdown);
}
[Test]
public void WhitespaceIsOptional()
{
var rawMarkdownQuiz = @"
Name: Test Quiz
ShuffleAnswers: true
OneQuestionAtATime: false
DueAt: 2023-08-21T23:59:00
LockAt: 2023-08-21T23:59:00
AssignmentGroup: Assignments
AllowedAttempts: -1
Description:
---
Match the following terms & definitions
^statement - a single command to be executed
";
var quiz = LocalQuiz.ParseMarkdown(rawMarkdownQuiz);
quiz.Questions.First().Answers.First().Text.Should().Be("statement");
}
}

View File

@@ -15,17 +15,22 @@ public record LocalQuizQuestionAnswer
public static LocalQuizQuestionAnswer ParseMarkdown(string input, string questionType)
{
var isCorrect = input[0] == '*' || input[1] == '*';
string startingQuestionPattern = @"^(\*?[a-z]?\))|\[\s*\]|\[\*\]|\^ ";
var text = Regex.Replace(input, startingQuestionPattern, string.Empty).Trim();
if (questionType == QuestionType.MATCHING)
{
string matchingPattern = @"^\^ ?";
var textWithoutMatchDelimiter = Regex.Replace(input, matchingPattern, string.Empty).Trim();
return new LocalQuizQuestionAnswer()
{
Correct = true,
Text = text.Split('-')[0].Trim(),
MatchedText = string.Join("-", text.Split('-')[1..]).Trim(),
Text = textWithoutMatchDelimiter.Split('-')[0].Trim(),
MatchedText = string.Join("-", textWithoutMatchDelimiter.Split('-')[1..]).Trim(),
};
}
string startingQuestionPattern = @"^(\*?[a-z]?\))|\[\s*\]|\[\*\]|\^ ";
var text = Regex.Replace(input, startingQuestionPattern, string.Empty).Trim();
return new LocalQuizQuestionAnswer()
{
Correct = isCorrect,