fixed multiline regex

This commit is contained in:
2024-03-29 14:34:38 -06:00
parent 035c46b284
commit a9cf38ecf2
4 changed files with 26 additions and 6 deletions

View File

@@ -67,7 +67,8 @@ Description: {Description}
var settings = splitInput[0];
var quizWithoutQuestions = getQuizWithOnlySettings(settings);
var questions = splitInput[1..]
var rawQuestions = splitInput[1..];
var questions = rawQuestions
.Where(str => !string.IsNullOrWhiteSpace(str))
.Select((q, i) => LocalQuizQuestion.ParseMarkdown(q, i))
.ToArray();

View File

@@ -114,7 +114,7 @@ public record LocalQuizQuestion
if (linesWithoutPoints[^1].Equals("short_answer", StringComparison.CurrentCultureIgnoreCase))
return "short_answer";
var answerLines = getAnswersGroupedByLines(linesWithoutPoints, questionIndex);
var answerLines = getAnswerStringsWithMultilineSupport(linesWithoutPoints, questionIndex);
var firstAnswerLine = answerLines.First();
var isMultipleChoice =
firstAnswerLine.StartsWith("a)")
@@ -138,7 +138,7 @@ public record LocalQuizQuestion
return "";
}
private static List<string> getAnswersGroupedByLines(string[] linesWithoutPoints, int questionIndex)
private static List<string> getAnswerStringsWithMultilineSupport(string[] linesWithoutPoints, int questionIndex)
{
var indexOfAnswerStart = linesWithoutPoints
.ToList()
@@ -175,7 +175,7 @@ public record LocalQuizQuestion
private static LocalQuizQuestionAnswer[] getAnswers(string[] linesWithoutPoints, int questionIndex, string questionType)
{
var answerLines = getAnswersGroupedByLines(linesWithoutPoints, questionIndex);
var answerLines = getAnswerStringsWithMultilineSupport(linesWithoutPoints, questionIndex);
var answers = answerLines
.Select((a, i) => LocalQuizQuestionAnswer.ParseMarkdown(a, questionType))

View File

@@ -30,7 +30,12 @@ public record LocalQuizQuestionAnswer
}
string startingQuestionPattern = @"^(\*?[a-z]?\))|\[\s*\]|\[\*\]|\^ ";
var text = Regex.Replace(input, startingQuestionPattern, string.Empty).Trim();
int replaceCount = 0;
var text = Regex.Replace(input, startingQuestionPattern, (m) =>
{
return replaceCount++ == 0 ? "" : m.Value;
}).Trim();
return new LocalQuizQuestionAnswer()
{
Correct = isCorrect,