From 13eb8f9bac1b416897a91ab33a6726a083bf6f71 Mon Sep 17 00:00:00 2001 From: Jonas Kroll Date: Fri, 28 Jul 2023 14:11:48 +0200 Subject: [PATCH] fix stuff --- Project.toml | 1 + src/Literate.jl | 53 +++++++++++++++++++++++++------------------------ 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/Project.toml b/Project.toml index 3347508..cd71aa1 100644 --- a/Project.toml +++ b/Project.toml @@ -6,6 +6,7 @@ version = "2.14.0" Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" IOCapture = "b5f81e59-6552-4d32-b1f0-c071b021bf89" JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a" REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [compat] diff --git a/src/Literate.jl b/src/Literate.jl index 5f44a51..94a87e6 100644 --- a/src/Literate.jl +++ b/src/Literate.jl @@ -561,25 +561,25 @@ end function chunkToMD(chunk) buffer = IOBuffer() for line in chunk.lines - write(buffer, line.first * line.second, '\n') + write(buffer, line.first * line.second, "\n\n") end - seek(buffer, 0) - return Markdown.parse(read(buffer, String)) + str = String(take!(buffer)) + return Markdown.parse(str) end -function processNonAdmonitions(item) +function processNonAdmonitions(item, io) # Handle non-admonition elements - return string(Markdown.MD(item)) + write(io, string(Markdown.MD(item))) end function writeContent(mdContent, io) for item in mdContent if isa(item, Markdown.Admonition) - result = CarpentriesAdmonition(item, io) + CarpentriesAdmonition(item, io) else - result = processNonAdmonitions(item) + processNonAdmonitions(item, io) end - write(io, result, '\n') + # write(io, '\n') end end @@ -588,13 +588,15 @@ end function CarpentriesCallout(admonition, io) for line in admonition - if startswith(strip(line.first * line.second), "!!!") + if startswith(line, "!!!") write(io, ":::::::: callout", '\n') else - write(io, line, '\n') + if line != "" + write(io, line, '\n') + end end end - write(io, "::::::::", '\n') + write(io, "::::::::", "\n\n") end function CarpentriesTestamonial(admonition, io) @@ -605,7 +607,7 @@ function CarpentriesTestamonial(admonition, io) write(io, line, '\n') end end - write(io, "::::::::", '\n') + write(io, "::::::::", "\n\n") end function CarpentriesChallenge(admonition, io) @@ -618,7 +620,7 @@ function CarpentriesChallenge(admonition, io) write(io, line, '\n') end end - write(io, "::::::::", '\n', "::::::::", '\n') + write(io, "::::::::", "\n\n", "::::::::", "\n\n") end function CarpentriesWarning(admonition, io) @@ -629,13 +631,13 @@ function CarpentriesWarning(admonition, io) write(io, line, '\n') end end - write(io, "::::::::", '\n') + write(io, "::::::::", "\n\n") end function CarpentriesYAML(admonition, io) for line in admonition - if startswith(strip(line.first * line.second), "!!!") - write(io, "", '\n') + if startswith(line, "!!!") + continue else write(io, line, '\n') end @@ -644,17 +646,17 @@ end function CarpentriesAdmonition(admonition, io) category = admonition.category - - if category == "sc" || "mc" || "freecode" - return CarpentriesChallenge(admonition, io) + admonition = split(string(Markdown.MD(admonition)), '\n') + if category in ("sc", "mc", "freecode") + CarpentriesChallenge(admonition, io) elseif category == "tip" - return CarpentriesTestamonial(admonition, io) + CarpentriesTestamonial(admonition, io) elseif category == "warning" - return CarpentriesWarning(admonition, io) - elseif category == "info" || "note" - return CarpentriesCallout(admonition, io) + CarpentriesWarning(admonition, io) + elseif category in ("info", "note") + CarpentriesCallout(admonition, io) elseif category == "carp" - return CarpentriesYAML(admonition, io) + CarpentriesYAML(admonition, io) end end #_______________________________________________________________________________________ @@ -687,7 +689,6 @@ function markdown(inputfile, outputdir=pwd(); config::AbstractDict=Dict(), kwarg str = chunkToMD(chunk) mdContent = str.content - writeContent(mdContent, iomd) else @@ -745,7 +746,7 @@ function markdown(inputfile, outputdir=pwd(); config::AbstractDict=Dict(), kwarg for item in mdContent if isa(item, Markdown.Admonition) if startswith(strip(line.first * line.second), "!!! carp") - result = "" + continue end else result=string(Markdown.MD(item))