Browse Source

fix stuff

pull/220/head
Simon Christ 2 years ago
parent
commit
8f0468303f
  1. 86
      src/Literate.jl

86
src/Literate.jl

@ -245,7 +245,7 @@ function edit_commit(inputfile, user_config)
readchomp( readchomp(
pipeline( pipeline(
setenv(`$(git) rev-parse --show-toplevel`; dir=dirname(inputfile)); setenv(`$(git) rev-parse --show-toplevel`; dir=dirname(inputfile));
stderr=devnull, stderr=devnull
) )
) )
catch catch
@ -676,72 +676,38 @@ function markdown(inputfile, outputdir=pwd(); config::AbstractDict=Dict(), kwarg
# preprocessing and parsing # preprocessing and parsing
chunks, config = chunks, config =
preprocessor(inputfile, outputdir; user_config=config, user_kwargs=kwargs, type=:md) preprocessor(inputfile, outputdir; user_config=config, user_kwargs=kwargs, type=:md)
flavor=config["flavor"]
# create the markdown file # create the markdown file
sb = sandbox()
iomd = IOBuffer() iomd = IOBuffer()
if flavor isa CarpentriesFlavor write_md_chunks!(iomd, chunks, outputdir, config)
for chunk in chunks
if isa(chunk, MDChunk)
if containsAdmonition(chunk)
str = chunkToMD(chunk)
mdContent = str.content
writeContent(mdContent, iomd)
else # custom post-processing from user
# Handle chunks without admonitions content = config["postprocess"](String(take!(iomd)))
for line in chunk.lines
write(iomd, line.second, '\n') # Skip indent # write to file
end outputfile = write_result(content, config)
end return outputfile
## `else` is copied from vanilla:
else # isa(chunk, CodeChunk)
iocode = IOBuffer()
codefence = config["codefence"]::Pair
write(iocode, codefence.first)
# make sure the code block is finalized if we are printing to ```@example
# (or ````@example, any number of backticks >= 3 works)
if chunk.continued && occursin(r"^`{3,}@example", codefence.first) && isdocumenter(config)
write(iocode, "; continued = true")
end
write(iocode, '\n')
# filter out trailing #hide unless code is executed by Documenter
execute = config["execute"]::Bool
write_hide = isdocumenter(config) && !execute
write_line(line) = write_hide || !endswith(line, "#hide")
for line in chunk.lines
write_line(line) && write(iocode, line, '\n')
end
if write_hide && REPL.ends_with_semicolon(chunk.lines[end])
write(iocode, "nothing #hide\n")
end
write(iocode, codefence.second, '\n')
any(write_line, chunk.lines) && write(iomd, seekstart(iocode))
if execute
cd(config["literate_outputdir"]) do
execute_markdown!(iomd, sb, join(chunk.lines, '\n'), outputdir;
inputfile=config["literate_inputfile"],
fake_source=config["literate_outputfile"],
flavor=config["flavor"],
image_formats=config["image_formats"],
file_prefix="$(config["name"])-$(chunknum)",
)
end
end
end
end end
else
# kinda Vanilla Function function write_md_chunks!(iomd, chunks, outputdir, config)
flavor = config["flavor"]
sb = sandbox()
for (chunknum, chunk) in enumerate(chunks) for (chunknum, chunk) in enumerate(chunks)
if isa(chunk, MDChunk) if isa(chunk, MDChunk)
#______________________________________________________________________________________________________________ #______________________________________________________________________________________________________________
if flavor isa CarpentriesFlavor
if containsAdmonition(chunk)
writeContent(chunk.lines, iomd)
end
else
if containsYAML(chunk) # This part is the only change. It (should) delete the YAML Admo for non Carpentries MD. if containsYAML(chunk) # This part is the only change. It (should) delete the YAML Admo for non Carpentries MD.
continue continue
end end
end
#______________________________________________________________________________________________________________ #______________________________________________________________________________________________________________
for line in chunk.lines for line in chunk.lines
@ -776,23 +742,13 @@ function markdown(inputfile, outputdir=pwd(); config::AbstractDict=Dict(), kwarg
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
end
write(iomd, '\n') # add a newline between each chunk write(iomd, '\n') # add a newline between each chunk
end
# custom post-processing from user
content = config["postprocess"](String(take!(iomd)))
# write to file
outputfile = write_result(content, config)
return outputfile
end end

Loading…
Cancel
Save