Browse Source

more general conversion approach

pull/220/head
Simon Christ 2 years ago
parent
commit
658515dcd5
  1. 63
      src/Literate.jl

63
src/Literate.jl

@ -549,15 +549,6 @@ function containsAdmonition(chunk)
return false return false
end end
function containsYAML(chunk)
for line in chunk.lines
if startswith(strip(line.first * line.second), "!!! carp")
return true
end
end
return false
end
function chunkToMD(chunk) function chunkToMD(chunk)
buffer = IOBuffer() buffer = IOBuffer()
for line in chunk.lines for line in chunk.lines
@ -571,9 +562,9 @@ function rewriteContent!(mdContent)
for (i, item) in enumerate(mdContent.content) for (i, item) in enumerate(mdContent.content)
if isa(item, Markdown.Admonition) if isa(item, Markdown.Admonition)
mdContent.content[i] = if any(x -> x isa Markdown.Admonition, item.content) mdContent.content[i] = if any(x -> x isa Markdown.Admonition, item.content)
CarpentriesAdmonition(rewriteContent!(item)) admonition_to_fenced_div(rewriteContent!(item))
else else
CarpentriesAdmonition(item) admonition_to_fenced_div(item)
end end
end end
end end
@ -583,46 +574,19 @@ end
#Functions needed for addition transformation into Carpentries style. Markdown style into pandoc fenced divs #Functions needed for addition transformation into Carpentries style. Markdown style into pandoc fenced divs
function CarpentriesCallout(admonition) function admonition_to_fenced_div(admonition)
vcat(Markdown.Paragraph(":::::::: callout\n"), admonition.content, Markdown.Paragraph("::::::::\n\n"))
end
function CarpentriesTestimonial(admonition)
vcat(Markdown.Paragraph(":::::::: testimonial\n"), admonition.content, Markdown.Paragraph("::::::::\n\n"))
end
function CarpentriesSolution(admonition)
vcat(Markdown.Paragraph(":::::::: solution\n"), admonition.content, Markdown.Paragraph("::::::::\n\n"))
end
function CarpentriesChallenge(admonition)
vcat(Markdown.Paragraph(":::::::: challenge\n"), admonition.content, Markdown.Paragraph("::::::::\n\n"))
end
function CarpentriesWarning(admonition)
vcat(Markdown.Paragraph(":::::::: warning\n"), admonition.content, Markdown.Paragraph("::::::::\n\n"))
end
function CarpentriesYAML(admonition)
admonition.content
end
function CarpentriesAdmonition(admonition)
category = admonition.category category = admonition.category
return if category in ("challenge", "sc", "mc", "freecode") if category == "yaml"
CarpentriesChallenge(admonition) single_paragraph = [Markdown.HorizontalRule(), Markdown.Paragraph(
elseif category == "solution" reduce(vcat, map(Base.Fix2(getproperty, :content), Iterators.filter(Base.Fix2(!isa, Markdown.HorizontalRule), admonition.content))) .* '\n'
CarpentriesSolution(admonition) ), Markdown.HorizontalRule()]
elseif category == "tip" return single_paragraph
CarpentriesTestimonial(admonition)
elseif category == "warning"
CarpentriesWarning(admonition)
elseif category in ("info", "note")
CarpentriesCallout(admonition)
elseif category == "carp"
CarpentriesYAML(admonition)
end end
title = admonition.title
vcat(Markdown.Paragraph(":::::::: $category \n"),
isempty(title) ? [] : Markdown.Header{2}(title), admonition.content, Markdown.Paragraph("::::::::\n\n"))
end end
#_______________________________________________________________________________________ #_______________________________________________________________________________________
@ -671,9 +635,6 @@ function write_md_chunks!(iomd, chunks, outputdir, config)
continue continue
end end
end end
if containsYAML(chunk) # This part is the only change. It (should) delete the YAML Admo for non Carpentries MD.
continue
end
#______________________________________________________________________________________________________________ #______________________________________________________________________________________________________________
for line in chunk.lines for line in chunk.lines

Loading…
Cancel
Save