Browse Source

Add category discrimination (sc tag for single choice)

pull/214/head
Sogari 3 years ago committed by Simon Christ
parent
commit
7350e70413
  1. 89
      src/Literate.jl

89
src/Literate.jl

@ -976,62 +976,75 @@ function create_notebook(flavor::PlutoFlavor, chunks, config)
admonition = filter(x -> x isa Markdown.Admonition, str.content) admonition = filter(x -> x isa Markdown.Admonition, str.content)
questionName = "$(admonition[1].title)" * "$(replace(string(gensym()), "#" => ""))" questionName = "$(admonition[1].title)" * "$(replace(string(gensym()), "#" => ""))"
questionCategory = admonition[1].category
str = string(Markdown.MD(admonition[1])) str = string(Markdown.MD(admonition[1]))
answers = []
questionDict = Dict("correct" => "")
qBuf = IOBuffer()
for line in split(str, "\n") if questionCategory == "sc"
if startswith(lstrip(line), r"[1-9]\.") answers = []
answer = lstrip(line) questionDict = Dict("correct" => "")
qBuf = IOBuffer()
correct = occursin("<!---correct-->", string(answer)) || occursin("<!–-correct–>", string(answer)) for line in split(str, "\n")
if correct if startswith(lstrip(line), r"[1-9]\.")
answer = lstrip(line)
correct = occursin("<!---correct-->", string(answer)) || occursin("<!–-correct–>", string(answer))
if correct
answer = formatAnswer(answer)
questionDict["correct"] = escape_string(string(answer))
end
answer = formatAnswer(answer) answer = formatAnswer(answer)
questionDict["correct"] = escape_string(string(answer)) answer = string(answer)
end push!(answers, answer)
answer = formatAnswer(answer) else
answer = string(answer) if line != "" && !startswith(line, "!!!")
push!(answers, answer) write(qBuf, lstrip(line), "\n")
else end
if line != "" && !startswith(line, "!!!")
write(qBuf, lstrip(line), "\n")
end end
end end
end
radioBind = writeBind(questionName, answers) radioBind = writeBind(questionName, answers)
logicBind = writeLogic(questionName, questionDict) logicBind = writeLogic(questionName, questionDict)
seek(qBuf, 0) seek(qBuf, 0)
qStr = rstrip(read(qBuf, String)) qStr = rstrip(read(qBuf, String))
result = writeControlFlow(questionName, qStr) result = writeControlFlow(questionName, qStr)
write(io, result, '\n') write(io, result, '\n')
################################################################ ################################################################
# Content after the Admonition # Content after the Admonition
################################################################ ################################################################
if admoIndex < length(mdContent)
index = admoIndex + 1
while index <= length(mdContent)
para = string(Markdown.MD(mdContent[index]))
write(io, para, '\n')
index += 1
end
end
write(io, "\"\"\"\n")
if admoIndex < length(mdContent) # Pluto nb helper functions
index = admoIndex + 1 cellCounter = formatCells(io, ionb, cellCounter, uuids, folds, fold)
write(io, radioBind, '\n')
cellCounter = formatCellsEnd(io, ionb, cellCounter, singleChoiceContent, singleChoiceUuids, singleChoiceFolds, fold)
write(io, logicBind, '\n')
cellCounter = formatCellsEnd(io, ionb, cellCounter, singleChoiceContent, singleChoiceUuids, singleChoiceFolds, fold)
else
index = admoIndex
while index <= length(mdContent) while index <= length(mdContent)
para = string(Markdown.MD(mdContent[index])) para = string(Markdown.MD(mdContent[index]))
write(io, para, '\n') write(io, para, '\n')
index += 1 index += 1
end end
write(io, "\"\"\"\n")
cellCounter = formatCells(io, ionb, cellCounter, uuids, folds, fold)
end end
write(io, "\"\"\"\n")
# Pluto nb helper functions
cellCounter = formatCells(io, ionb, cellCounter, uuids, folds, fold)
write(io, radioBind, '\n')
cellCounter = formatCellsEnd(io, ionb, cellCounter, singleChoiceContent, singleChoiceUuids, singleChoiceFolds, fold)
write(io, logicBind, '\n')
cellCounter = formatCellsEnd(io, ionb, cellCounter, singleChoiceContent, singleChoiceUuids, singleChoiceFolds, fold)
else else
################################################################ ################################################################
# If Chunk doesnt contain an Admonition # If Chunk doesnt contain an Admonition

Loading…
Cancel
Save