mirror of https://github.com/mpastell/Weave.jl
no weird Base.run overload
parent
14e7635458
commit
e41202d3ff
|
@ -152,12 +152,12 @@ function weave(
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
template != nothing && (doc.template = template)
|
template !== nothing && (doc.template = template)
|
||||||
highlight_theme != nothing && (doc.highlight_theme = highlight_theme)
|
highlight_theme !== nothing && (doc.highlight_theme = highlight_theme)
|
||||||
# theme != nothing && (doc.theme = theme) # Reserved for themes
|
# theme != nothing && (doc.theme = theme) # Reserved for themes
|
||||||
css != nothing && (doc.css = css)
|
css !== nothing && (doc.css = css)
|
||||||
|
|
||||||
doc = run(
|
doc = run_doc(
|
||||||
doc,
|
doc,
|
||||||
doctype = doctype,
|
doctype = doctype,
|
||||||
mod = mod,
|
mod = mod,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using Base64
|
using Base64
|
||||||
|
|
||||||
"""
|
"""
|
||||||
run(doc::WeaveDoc; kwargs...)
|
run_doc(doc::WeaveDoc; kwargs...)
|
||||||
|
|
||||||
Run code chunks and capture output from the parsed document.
|
Run code chunks and capture output from the parsed document.
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ Run code chunks and capture output from the parsed document.
|
||||||
!!! note
|
!!! note
|
||||||
Run Weave from terminal and try to avoid weaving from IJulia or ESS; they tend to mess with capturing output.
|
Run Weave from terminal and try to avoid weaving from IJulia or ESS; they tend to mess with capturing output.
|
||||||
"""
|
"""
|
||||||
function Base.run(
|
function run_doc(
|
||||||
doc::WeaveDoc;
|
doc::WeaveDoc;
|
||||||
doctype::Union{Symbol,AbstractString} = :auto,
|
doctype::Union{Symbol,AbstractString} = :auto,
|
||||||
out_path::Union{Symbol,AbstractString} = :doc,
|
out_path::Union{Symbol,AbstractString} = :doc,
|
||||||
|
@ -44,6 +44,7 @@ function Base.run(
|
||||||
# cache :all, :user, :off, :refresh
|
# cache :all, :user, :off, :refresh
|
||||||
|
|
||||||
doc.cwd = get_cwd(doc, out_path)
|
doc.cwd = get_cwd(doc, out_path)
|
||||||
|
# doctype detection is unnecessary here, but existing unit test requires this.
|
||||||
doctype == :auto && (doctype = detect_doctype(doc.source))
|
doctype == :auto && (doctype = detect_doctype(doc.source))
|
||||||
doc.doctype = doctype
|
doc.doctype = doctype
|
||||||
doc.format = formats[doctype]
|
doc.format = formats[doctype]
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using Weave
|
using Weave
|
||||||
|
using Weave: run_doc
|
||||||
using Test
|
using Test
|
||||||
|
|
||||||
s1= """
|
s1= """
|
||||||
|
@ -22,7 +23,7 @@ print(y
|
||||||
|
|
||||||
p1 = Weave.parse_doc(s1, "markdown")
|
p1 = Weave.parse_doc(s1, "markdown")
|
||||||
doc = Weave.WeaveDoc("dummy1.jmd", p1, Dict())
|
doc = Weave.WeaveDoc("dummy1.jmd", p1, Dict())
|
||||||
doc1 = Weave.run(doc, doctype = "pandoc")
|
doc1 = run_doc(doc, doctype = "pandoc")
|
||||||
|
|
||||||
doc1.chunks[1].output
|
doc1.chunks[1].output
|
||||||
|
|
||||||
|
@ -30,10 +31,10 @@ doc1.chunks[1].output
|
||||||
@test doc1.chunks[2].output == "Error: syntax: incomplete: premature end of input\n"
|
@test doc1.chunks[2].output == "Error: syntax: incomplete: premature end of input\n"
|
||||||
@test doc1.chunks[3].output == "\njulia> plot(x)\nError: UndefVarError: plot not defined\n\njulia> y = 10\n10\n\njulia> print(y\nError: syntax: incomplete: premature end of input\n"
|
@test doc1.chunks[3].output == "\njulia> plot(x)\nError: UndefVarError: plot not defined\n\njulia> y = 10\n10\n\njulia> print(y\nError: syntax: incomplete: premature end of input\n"
|
||||||
|
|
||||||
@test_throws ArgumentError Weave.run(doc, doctype = "pandoc", throw_errors = true)
|
@test_throws ArgumentError run_doc(doc, doctype = "pandoc", throw_errors = true)
|
||||||
|
|
||||||
doc = Weave.WeaveDoc("dummy1.jmd", p1, Dict())
|
doc = Weave.WeaveDoc("dummy1.jmd", p1, Dict())
|
||||||
doc3 = Weave.run(doc, doctype = "md2html")
|
doc3 = run_doc(doc, doctype = "md2html")
|
||||||
@test doc3.chunks[1].rich_output == "<pre class=\"julia-error\">\nERROR: ArgumentError: Package NonExisting not found in current path:\n- Run `import Pkg; Pkg.add("NonExisting")` to install the NonExisting package.\n\n</pre>\n"
|
@test doc3.chunks[1].rich_output == "<pre class=\"julia-error\">\nERROR: ArgumentError: Package NonExisting not found in current path:\n- Run `import Pkg; Pkg.add("NonExisting")` to install the NonExisting package.\n\n</pre>\n"
|
||||||
@test doc3.chunks[2].rich_output == "<pre class=\"julia-error\">\nERROR: syntax: incomplete: premature end of input\n</pre>\n"
|
@test doc3.chunks[2].rich_output == "<pre class=\"julia-error\">\nERROR: syntax: incomplete: premature end of input\n</pre>\n"
|
||||||
@test doc3.chunks[3].output == "\njulia> plot(x)\nError: UndefVarError: plot not defined\n\njulia> y = 10\n10\n\njulia> print(y\nError: syntax: incomplete: premature end of input\n"
|
@test doc3.chunks[3].output == "\njulia> plot(x)\nError: UndefVarError: plot not defined\n\njulia> y = 10\n10\n\njulia> print(y\nError: syntax: incomplete: premature end of input\n"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using Weave
|
using Weave
|
||||||
|
using Weave: run_doc
|
||||||
using Test
|
using Test
|
||||||
|
|
||||||
# Test rendering of doc chunks
|
# Test rendering of doc chunks
|
||||||
|
@ -22,7 +23,7 @@ f = Weave.format_chunk(dchunk, docformat.formatdict, docformat)
|
||||||
# Test with actual doc
|
# Test with actual doc
|
||||||
|
|
||||||
parsed = Weave.read_doc("documents/chunk_options.noweb")
|
parsed = Weave.read_doc("documents/chunk_options.noweb")
|
||||||
doc = Weave.run(parsed, doctype = "md2html")
|
doc = run_doc(parsed, doctype = "md2html")
|
||||||
|
|
||||||
c_check = "<pre class='hljl'>\n<span class='hljl-n'>x</span><span class='hljl-t'> </span><span class='hljl-oB'>=</span><span class='hljl-t'> </span><span class='hljl-p'>[</span><span class='hljl-ni'>12</span><span class='hljl-p'>,</span><span class='hljl-t'> </span><span class='hljl-ni'>10</span><span class='hljl-p'>]</span><span class='hljl-t'>\n</span><span class='hljl-nf'>println</span><span class='hljl-p'>(</span><span class='hljl-n'>y</span><span class='hljl-p'>)</span>\n</pre>\n"
|
c_check = "<pre class='hljl'>\n<span class='hljl-n'>x</span><span class='hljl-t'> </span><span class='hljl-oB'>=</span><span class='hljl-t'> </span><span class='hljl-p'>[</span><span class='hljl-ni'>12</span><span class='hljl-p'>,</span><span class='hljl-t'> </span><span class='hljl-ni'>10</span><span class='hljl-p'>]</span><span class='hljl-t'>\n</span><span class='hljl-nf'>println</span><span class='hljl-p'>(</span><span class='hljl-n'>y</span><span class='hljl-p'>)</span>\n</pre>\n"
|
||||||
doc.format.formatdict[:theme] = doc.highlight_theme
|
doc.format.formatdict[:theme] = doc.highlight_theme
|
||||||
|
@ -39,7 +40,7 @@ rendered = Weave.render_doc("Hello", doc, doc.format)
|
||||||
|
|
||||||
# Tex format
|
# Tex format
|
||||||
parsed = Weave.read_doc("documents/chunk_options.noweb")
|
parsed = Weave.read_doc("documents/chunk_options.noweb")
|
||||||
doc = Weave.run(parsed, doctype = "md2tex")
|
doc = run_doc(parsed, doctype = "md2tex")
|
||||||
|
|
||||||
c_check = "\\begin{lstlisting}\n(*@\\HLJLnf{println}@*)(*@\\HLJLp{(}@*)(*@\\HLJLn{x}@*)(*@\\HLJLp{)}@*)\n\\end{lstlisting}\n"
|
c_check = "\\begin{lstlisting}\n(*@\\HLJLnf{println}@*)(*@\\HLJLp{(}@*)(*@\\HLJLn{x}@*)(*@\\HLJLp{)}@*)\n\\end{lstlisting}\n"
|
||||||
doc.format.formatdict[:theme] = doc.highlight_theme
|
doc.format.formatdict[:theme] = doc.highlight_theme
|
||||||
|
@ -101,15 +102,15 @@ tfied = "\\ensuremath{\\bm{\\mathrm{L}}} \\ensuremath{\\bm{\\mathfrak{F}}} \\ens
|
||||||
|
|
||||||
# Test markdown output from chunks
|
# Test markdown output from chunks
|
||||||
parsed = Weave.read_doc("documents/markdown_output.jmd")
|
parsed = Weave.read_doc("documents/markdown_output.jmd")
|
||||||
doc = Weave.run(parsed, doctype = "md2html")
|
doc = run_doc(parsed, doctype = "md2html")
|
||||||
@test doc.chunks[1].rich_output == "\n<div class=\"markdown\"><h3>Small markdown sample</h3>\n<p><strong>Hello</strong> from <code>code</code> block.</p>\n</div>"
|
@test doc.chunks[1].rich_output == "\n<div class=\"markdown\"><h3>Small markdown sample</h3>\n<p><strong>Hello</strong> from <code>code</code> block.</p>\n</div>"
|
||||||
@test doc.chunks[2].rich_output == "\n<div class=\"markdown\"><ul>\n<li><p>one</p>\n</li>\n<li><p>two</p>\n</li>\n<li><p>three</p>\n</li>\n</ul>\n</div>"
|
@test doc.chunks[2].rich_output == "\n<div class=\"markdown\"><ul>\n<li><p>one</p>\n</li>\n<li><p>two</p>\n</li>\n<li><p>three</p>\n</li>\n</ul>\n</div>"
|
||||||
|
|
||||||
ldoc = Weave.run(parsed, doctype = "md2tex")
|
ldoc = run_doc(parsed, doctype = "md2tex")
|
||||||
@test ldoc.chunks[1].rich_output == "\n\\subsubsection{Small markdown sample}\n\\textbf{Hello} from \\texttt{code} block.\n\n"
|
@test ldoc.chunks[1].rich_output == "\n\\subsubsection{Small markdown sample}\n\\textbf{Hello} from \\texttt{code} block.\n\n"
|
||||||
@test ldoc.chunks[2].rich_output == "\n\\begin{itemize}\n\\item one\n\n\n\\item two\n\n\n\\item three\n\n\\end{itemize}\n"
|
@test ldoc.chunks[2].rich_output == "\n\\begin{itemize}\n\\item one\n\n\n\\item two\n\n\n\\item three\n\n\\end{itemize}\n"
|
||||||
|
|
||||||
mdoc = Weave.run(parsed, doctype = "github")
|
mdoc = run_doc(parsed, doctype = "github")
|
||||||
@test mdoc.chunks[1].rich_output == "\n\n### Small markdown sample\n\n**Hello** from `code` block.\n\n"
|
@test mdoc.chunks[1].rich_output == "\n\n### Small markdown sample\n\n**Hello** from `code` block.\n\n"
|
||||||
@test mdoc.chunks[2].rich_output == "\n\n* one\n* two\n* three\n\n"
|
@test mdoc.chunks[2].rich_output == "\n\n* one\n* two\n* three\n\n"
|
||||||
|
|
||||||
|
@ -143,11 +144,11 @@ doc_content = """
|
||||||
"""
|
"""
|
||||||
|
|
||||||
parsed = doc_from_string(doc_content)
|
parsed = doc_from_string(doc_content)
|
||||||
ldoc = Weave.run(parsed, doctype = "md2tex")
|
ldoc = run_doc(parsed, doctype = "md2tex")
|
||||||
@test occursin(Weave.uc2tex("α"),Weave.format(ldoc))
|
@test occursin(Weave.uc2tex("α"),Weave.format(ldoc))
|
||||||
@test !occursin("α",Weave.format(ldoc))
|
@test !occursin("α",Weave.format(ldoc))
|
||||||
|
|
||||||
parsed = doc_from_string(doc_content)
|
parsed = doc_from_string(doc_content)
|
||||||
ldoc = Weave.run(parsed, doctype = "md2tex",latex_keep_unicode=true)
|
ldoc = run_doc(parsed, doctype = "md2tex",latex_keep_unicode=true)
|
||||||
@test occursin("α",Weave.format(ldoc))
|
@test occursin("α",Weave.format(ldoc))
|
||||||
@test !occursin(Weave.uc2tex("α"),Weave.format(ldoc))
|
@test !occursin(Weave.uc2tex("α"),Weave.format(ldoc))
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
using Weave
|
using Weave
|
||||||
|
using Weave: run_doc
|
||||||
using Test
|
using Test
|
||||||
|
|
||||||
function weavestring(source; doctype = "pandoc", informat="markdown", mod=Main)
|
function weavestring(source; doctype = "pandoc", informat="markdown", mod=Main)
|
||||||
p1 = Weave.parse_doc(source, informat)
|
p1 = Weave.parse_doc(source, informat)
|
||||||
doc = Weave.WeaveDoc("dummy1.jmd", p1, Dict())
|
doc = Weave.WeaveDoc("dummy1.jmd", p1, Dict())
|
||||||
return Weave.run(doc, doctype=doctype, mod=mod)
|
return run_doc(doc, doctype=doctype, mod=mod)
|
||||||
end
|
end
|
||||||
|
|
||||||
smod = """
|
smod = """
|
||||||
|
|
Loading…
Reference in New Issue