Browse Source

Fixed loops that were in the wrong order.

pull/220/head
Jonas Kroll 2 years ago
parent
commit
2d0d6f5ce8
  1. 126
      src/Literate.jl

126
src/Literate.jl

@ -549,11 +549,11 @@ function containsAdmonition(chunk)
end end
function containsYAML(chunk) function containsYAML(chunk)
if startswith(strip(line.first * line.second), "!!! carp") if startswith(strip(line.first * line.second), "!!! carp")
return true return true
end end
end #???
return false return false
end end
function chunkToMD(chunk) function chunkToMD(chunk)
@ -677,9 +677,10 @@ function markdown(inputfile, outputdir=pwd(); config::AbstractDict=Dict(), kwarg
sb = sandbox() sb = sandbox()
iomd = IOBuffer() iomd = IOBuffer()
for chunk in chunks
io = IOBuffer() if flavor isa CarpentriesFlavor
if flavor isa CarpentriesFlavor for chunk in chunks
io = IOBuffer()
if isa(chunk, MDChunk) if isa(chunk, MDChunk)
if containsAdmonition(chunk) if containsAdmonition(chunk)
@ -728,67 +729,68 @@ function markdown(inputfile, outputdir=pwd(); config::AbstractDict=Dict(), kwarg
) )
end end
end end
else end
# Vanilla Function else
for (chunknum, chunk) in enumerate(chunks) # Vanilla Function
if isa(chunk, MDChunk) for (chunknum, chunk) in enumerate(chunks)
if isa(chunk, MDChunk)
#______________________________________________________________________________________________________________
if containsYAML(chunk) # This part is the only change. It (should) delete the YAML Admo for non Carpentries MD. #______________________________________________________________________________________________________________
str = chunkToMD(chunk) if containsYAML(chunk) # This part is the only change. It (should) delete the YAML Admo for non Carpentries MD.
mdContent = str.content str = chunkToMD(chunk)
mdContent = str.content
for item in mdContent
if isa(item, Markdown.Admonition) for item in mdContent
result = "" if isa(item, Markdown.Admonition)
else result = ""
result=string(Markdown.MD(item)) else
end result=string(Markdown.MD(item))
write(io, result, '\n')
end end
write(io, result, '\n')
end end
#______________________________________________________________________________________________________________ end
#______________________________________________________________________________________________________________
for line in chunk.lines for line in chunk.lines
write(iomd, line.second, '\n') # skip indent here write(iomd, line.second, '\n') # skip indent here
end end
else # isa(chunk, CodeChunk) else # isa(chunk, CodeChunk)
iocode = IOBuffer() iocode = IOBuffer()
codefence = config["codefence"]::Pair codefence = config["codefence"]::Pair
write(iocode, codefence.first) write(iocode, codefence.first)
# make sure the code block is finalized if we are printing to ```@example # make sure the code block is finalized if we are printing to ```@example
# (or ````@example, any number of backticks >= 3 works) # (or ````@example, any number of backticks >= 3 works)
if chunk.continued && occursin(r"^`{3,}@example", codefence.first) && isdocumenter(config) if chunk.continued && occursin(r"^`{3,}@example", codefence.first) && isdocumenter(config)
write(iocode, "; continued = true") write(iocode, "; continued = true")
end end
write(iocode, '\n') write(iocode, '\n')
# filter out trailing #hide unless code is executed by Documenter # filter out trailing #hide unless code is executed by Documenter
execute = config["execute"]::Bool execute = config["execute"]::Bool
write_hide = isdocumenter(config) && !execute write_hide = isdocumenter(config) && !execute
write_line(line) = write_hide || !endswith(line, "#hide") write_line(line) = write_hide || !endswith(line, "#hide")
for line in chunk.lines for line in chunk.lines
write_line(line) && write(iocode, line, '\n') write_line(line) && write(iocode, line, '\n')
end end
if write_hide && REPL.ends_with_semicolon(chunk.lines[end]) if write_hide && REPL.ends_with_semicolon(chunk.lines[end])
write(iocode, "nothing #hide\n") write(iocode, "nothing #hide\n")
end end
write(iocode, codefence.second, '\n') write(iocode, codefence.second, '\n')
any(write_line, chunk.lines) && write(iomd, seekstart(iocode)) any(write_line, chunk.lines) && write(iomd, seekstart(iocode))
if execute if execute
cd(config["literate_outputdir"]) do cd(config["literate_outputdir"]) do
execute_markdown!(iomd, sb, join(chunk.lines, '\n'), outputdir; execute_markdown!(iomd, sb, join(chunk.lines, '\n'), outputdir;
inputfile=config["literate_inputfile"], inputfile=config["literate_inputfile"],
fake_source=config["literate_outputfile"], fake_source=config["literate_outputfile"],
flavor=config["flavor"], flavor=config["flavor"],
image_formats=config["image_formats"], image_formats=config["image_formats"],
file_prefix="$(config["name"])-$(chunknum)", file_prefix="$(config["name"])-$(chunknum)",
) )
end
end end
end end
end end
write(iomd, '\n') # add a newline between each chunk
end end
write(iomd, '\n') # add a newline between each chunk
# custom post-processing from user # custom post-processing from user
content = config["postprocess"](String(take!(iomd))) content = config["postprocess"](String(take!(iomd)))

Loading…
Cancel
Save