From e8acc87c198a5452761c9758557c875e6300b73e Mon Sep 17 00:00:00 2001 From: Sogari Date: Sun, 26 Mar 2023 01:04:55 +0100 Subject: [PATCH] Fix Code representation in Question and Refactor Pluto nb --- src/Literate.jl | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/Literate.jl b/src/Literate.jl index 127a1aa..5741fca 100644 --- a/src/Literate.jl +++ b/src/Literate.jl @@ -851,13 +851,13 @@ function writeLogic(questionName, questionDict) return logic end -function writeControlFlow(questionName, qStr) +function writeControlFlow(questionName, restList) controlFlow = """ \$( if $(questionName)Test($(questionName)Answer) - Markdown.MD(Markdown.Admonition("correct", "$(questionName)", [md"$(qStr)", md"\$($(questionName)Check)"])) + Markdown.MD(Markdown.Admonition("correct", "$(questionName)", [$restList, md"\$($(questionName)Check)"])) else - Markdown.MD(Markdown.Admonition("danger", "$(questionName)", [md"$(qStr)", md"\$($(questionName)Check)"])) + Markdown.MD(Markdown.Admonition("danger", "$(questionName)", [$restList, md"\$($(questionName)Check)"])) end ) """ @@ -880,7 +880,7 @@ function formatAnswer(answer) answer = replace(answer, "" => "") answer = replace(answer, "`" => "") answer = rstrip(answer) - return answer + return string(answer) end function formatCells(io, ionb, cellCounter, uuids, folds, fold) @@ -988,7 +988,6 @@ function create_notebook(flavor::PlutoFlavor, chunks, config) qBuf = IOBuffer() answerList = filter(x -> isa(x, Markdown.List), admonition[1].content) - println(answerList) answerStr = string(Markdown.MD(answerList)) for line in split(answerStr, "\n") @@ -998,30 +997,22 @@ function create_notebook(flavor::PlutoFlavor, chunks, config) correct = occursin("", string(answer)) || occursin("", string(answer)) if correct answer = formatAnswer(answer) - questionDict["correct"] = escape_string(string(answer)) + questionDict["correct"] = escape_string(answer) end answer = formatAnswer(answer) - answer = string(answer) push!(answers, answer) end end + codeList = filter(x -> isa(x, Markdown.Code), admonition[1].content) + codeStr = string(Markdown.MD(codeList)) + restList = filter(x -> !isa(x, Markdown.List), admonition[1].content) - restStr = string(Markdown.MD(restList)) - - for line in split(restStr, "\n") - if line != "" && !startswith(line, "!!!") - write(qBuf, lstrip(line), "\n") - end - end radioBind = writeBind(questionName, answers) logicBind = writeLogic(questionName, questionDict) - seek(qBuf, 0) - qStr = rstrip(read(qBuf, String)) - - result = writeControlFlow(questionName, qStr) + result = writeControlFlow(questionName, restList) write(io, result, '\n') # Content after the Admonition