mirror of https://github.com/mpastell/Weave.jl
Merge branch 'kleinschmidt-dfk/figext'
commit
972937e4a0
|
@ -1,12 +1,11 @@
|
||||||
|
|
||||||
language: julia
|
language: julia
|
||||||
julia:
|
julia:
|
||||||
- 0.7
|
|
||||||
- 1.0
|
- 1.0
|
||||||
- nightly
|
- 1.1
|
||||||
matrix:
|
matrix:
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- julia: nightly
|
- julia: 1.1
|
||||||
notifications:
|
notifications:
|
||||||
email: false
|
email: false
|
||||||
script:
|
script:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = "Weave"
|
name = "Weave"
|
||||||
uuid = "44d3d7a6-8a23-5bf8-98c5-b353f8df5ec9"
|
uuid = "44d3d7a6-8a23-5bf8-98c5-b353f8df5ec9"
|
||||||
version="0.6.1"
|
version="0.7.0"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
|
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
|
||||||
|
@ -9,8 +9,7 @@ Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
|
||||||
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
|
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
|
||||||
REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
|
REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
|
||||||
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
|
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
|
||||||
JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
|
Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
|
||||||
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
|
|
||||||
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
|
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
|
||||||
Highlights = "eafb193a-b7ab-5a9e-9068-77385905fa72"
|
Highlights = "eafb193a-b7ab-5a9e-9068-77385905fa72"
|
||||||
Mustache = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70"
|
Mustache = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70"
|
||||||
|
|
4
REQUIRE
4
REQUIRE
|
@ -1,6 +1,4 @@
|
||||||
julia 0.7
|
julia 1.0
|
||||||
JLD2
|
|
||||||
FileIO
|
|
||||||
JSON
|
JSON
|
||||||
Highlights 0.3.0
|
Highlights 0.3.0
|
||||||
Mustache
|
Mustache
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
environment:
|
environment:
|
||||||
matrix:
|
matrix:
|
||||||
- JULIA_URL: "https://julialang-s3.julialang.org/bin/winnt/x64/0.7/julia-0.7-latest-win64.exe"
|
|
||||||
- JULIA_URL: "https://julialang-s3.julialang.org/bin/winnt/x64/1.0/julia-1.0-latest-win64.exe"
|
- JULIA_URL: "https://julialang-s3.julialang.org/bin/winnt/x64/1.0/julia-1.0-latest-win64.exe"
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
|
|
|
@ -226,11 +226,4 @@ htmlinline(io::IO, x) = tohtml(io, x)
|
||||||
|
|
||||||
html(md) = sprint(html, md)
|
html(md) = sprint(html, md)
|
||||||
|
|
||||||
function show(io::IO, ::MIME"text/html", md::MD)
|
|
||||||
withtag(io, :div, :class=>"markdown") do
|
|
||||||
html(io, md)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
17
src/cache.jl
17
src/cache.jl
|
@ -1,16 +1,21 @@
|
||||||
#FileIO and JLD2 are imported only if cache is used
|
#Serialization is imported only if cache is used
|
||||||
|
|
||||||
function write_cache(doc::WeaveDoc, cache_path)
|
function write_cache(doc::WeaveDoc, cache_path)
|
||||||
cache_dir = joinpath(doc.cwd, cache_path)
|
cache_dir = joinpath(doc.cwd, cache_path)
|
||||||
isdir(cache_dir) || mkpath(cache_dir)
|
isdir(cache_dir) || mkpath(cache_dir)
|
||||||
Base.invokelatest(FileIO.save, joinpath(cache_dir, doc.basename * ".jld2"), Dict("doc" => doc))
|
open(joinpath(cache_dir, doc.basename * ".cache"),"w") do io
|
||||||
|
Serialization.serialize(io, doc)
|
||||||
|
end
|
||||||
return nothing
|
return nothing
|
||||||
end
|
end
|
||||||
|
|
||||||
function read_cache(doc::WeaveDoc, cache_path)
|
function read_cache(doc::WeaveDoc, cache_path)
|
||||||
name = joinpath(doc.cwd, cache_path, doc.basename * ".jld2")
|
name = joinpath(doc.cwd, cache_path, doc.basename * ".cache")
|
||||||
isfile(name) || return nothing
|
isfile(name) || return nothing
|
||||||
return Base.invokelatest(FileIO.load, name, "doc")
|
open(name,"r") do io
|
||||||
|
doc = Serialization.deserialize(io)
|
||||||
|
end
|
||||||
|
return doc
|
||||||
end
|
end
|
||||||
|
|
||||||
function restore_chunk(chunk::CodeChunk, cached)
|
function restore_chunk(chunk::CodeChunk, cached)
|
||||||
|
@ -35,7 +40,7 @@ end
|
||||||
#Restore inline code
|
#Restore inline code
|
||||||
function restore_chunk(chunk::DocChunk, cached::WeaveDoc)
|
function restore_chunk(chunk::DocChunk, cached::WeaveDoc)
|
||||||
#Get chunk from cached doc
|
#Get chunk from cached doc
|
||||||
c_chunk = filter(x -> x.number == chunk.number &&
|
c_chunk = filter(x -> x.number == chunk.number &&
|
||||||
isa(x, DocChunk), cached.chunks)
|
isa(x, DocChunk), cached.chunks)
|
||||||
isempty(c_chunk) && return chunk
|
isempty(c_chunk) && return chunk
|
||||||
c_chunk = c_chunk[1]
|
c_chunk = c_chunk[1]
|
||||||
|
@ -45,7 +50,7 @@ function restore_chunk(chunk::DocChunk, cached::WeaveDoc)
|
||||||
isempty(c_inline) && return chunk
|
isempty(c_inline) && return chunk
|
||||||
|
|
||||||
#Restore cached results for Inline code
|
#Restore cached results for Inline code
|
||||||
n = length(chunk.content)
|
n = length(chunk.content)
|
||||||
for i in 1:n
|
for i in 1:n
|
||||||
if isa(chunk.content[i], InlineCode)
|
if isa(chunk.content[i], InlineCode)
|
||||||
ci = filter(x -> x.number == chunk.content[i].number, c_inline)
|
ci = filter(x -> x.number == chunk.content[i].number, c_inline)
|
||||||
|
|
|
@ -31,9 +31,17 @@ const default_mime_types = ["image/svg+xml", "image/png", "text/html", "text/pla
|
||||||
#From IJulia as a reminder
|
#From IJulia as a reminder
|
||||||
#const supported_mime_types = [ "text/html", "text/latex", "image/svg+xml", "image/png", "image/jpeg", "text/plain", "text/markdown" ]
|
#const supported_mime_types = [ "text/html", "text/latex", "image/svg+xml", "image/png", "image/jpeg", "text/plain", "text/markdown" ]
|
||||||
|
|
||||||
|
const mimetype_ext =
|
||||||
|
Dict(".png" => "image/png",
|
||||||
|
".jpg" => "image/jpeg",
|
||||||
|
".jpeg" => "image/jpeg",
|
||||||
|
".svg" => "image/svg+xml",
|
||||||
|
".pdf" => "application/pdf")
|
||||||
|
|
||||||
function Base.display(report::Report, data)
|
function Base.display(report::Report, data)
|
||||||
#Set preferred mimetypes for report based on format
|
#Set preferred mimetypes for report based on format
|
||||||
for m in report.mimetypes
|
fig_ext = report.cur_chunk.options[:fig_ext]
|
||||||
|
for m in unique([mimetype_ext[fig_ext] ; report.mimetypes])
|
||||||
if showable(m, data)
|
if showable(m, data)
|
||||||
try
|
try
|
||||||
if !istextmime(m)
|
if !istextmime(m)
|
||||||
|
|
|
@ -41,7 +41,7 @@ function Base.run(doc::WeaveDoc; doctype = :auto,
|
||||||
fig_path = mktempdir(abspath(doc.cwd))
|
fig_path = mktempdir(abspath(doc.cwd))
|
||||||
end
|
end
|
||||||
|
|
||||||
cache == :off || @eval import FileIO, JLD2
|
cache == :off || @eval import Serialization
|
||||||
|
|
||||||
#This is needed for latex and should work on all output formats
|
#This is needed for latex and should work on all output formats
|
||||||
Sys.iswindows() && (fig_path = replace(fig_path, "\\" => "/"))
|
Sys.iswindows() && (fig_path = replace(fig_path, "\\" => "/"))
|
||||||
|
@ -155,7 +155,7 @@ function img2base64(fig, cwd)
|
||||||
if ext == ".png"
|
if ext == ".png"
|
||||||
return "data:image/png;base64," * stringmime(MIME("image/png"), raw)
|
return "data:image/png;base64," * stringmime(MIME("image/png"), raw)
|
||||||
elseif ext == ".svg"
|
elseif ext == ".svg"
|
||||||
return "data:image/svg+xml;base64," * stringmime(MIME("image/svg+xml"), raw)
|
return "data:image/svg+xml;base64," * stringmime(MIME("image/svg"), raw)
|
||||||
elseif ext == ".gif"
|
elseif ext == ".gif"
|
||||||
return "data:image/gif;base64," * stringmime(MIME("image/gif"), raw)
|
return "data:image/gif;base64," * stringmime(MIME("image/gif"), raw)
|
||||||
else
|
else
|
||||||
|
|
|
@ -26,8 +26,7 @@ doc1 = Weave.run(doc, doctype = "pandoc")
|
||||||
|
|
||||||
doc1.chunks[1].output
|
doc1.chunks[1].output
|
||||||
|
|
||||||
@test doc1.chunks[1].output == "Error: ArgumentError: Package NonExisting not found in current path:\n- Run `Pkg.add(\"NonExisting\")` to install the NonExisting package.\n\n"
|
@test doc1.chunks[1].output == "Error: ArgumentError: Package NonExisting not found in current path:\n- Run `import Pkg; Pkg.add(\"NonExisting\")` to install the NonExisting package.\n\n"
|
||||||
|
|
||||||
@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"
|
||||||
|
|
||||||
|
@ -35,7 +34,7 @@ doc1.chunks[1].output
|
||||||
|
|
||||||
doc = Weave.WeaveDoc("dummy1.jmd", p1, Dict())
|
doc = Weave.WeaveDoc("dummy1.jmd", p1, Dict())
|
||||||
doc3 = Weave.run(doc, doctype = "md2html")
|
doc3 = Weave.run(doc, doctype = "md2html")
|
||||||
@test doc3.chunks[1].rich_output == "<pre class=\"julia-error\">\nERROR: ArgumentError: Package NonExisting not found in current path:\n- Run `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"
|
||||||
@test doc3.chunks[3].rich_output == ""
|
@test doc3.chunks[3].rich_output == ""
|
||||||
|
|
|
@ -11,3 +11,12 @@ end
|
||||||
|
|
||||||
pljtest("plotsjl_test_gr.jmd", "plotsjl_test_gr.md", "pandoc")
|
pljtest("plotsjl_test_gr.jmd", "plotsjl_test_gr.md", "pandoc")
|
||||||
pljtest("plotsjl_test_gr.jmd", "plotsjl_test_gr.tex", "tex")
|
pljtest("plotsjl_test_gr.jmd", "plotsjl_test_gr.tex", "tex")
|
||||||
|
|
||||||
|
# test cache with plots
|
||||||
|
isdir("documents/cache") && rm("documents/cache", recursive = true)
|
||||||
|
weave("documents/plotsjl_test_gr.jmd", cache=:all)
|
||||||
|
result = read("documents/plotsjl_test_gr.html", String)
|
||||||
|
rm("documents/plotsjl_test_gr.html")
|
||||||
|
weave("documents/plotsjl_test_gr.jmd", cache=:all)
|
||||||
|
cached_result = read("documents/plotsjl_test_gr.html", String)
|
||||||
|
@test result == cached_result
|
||||||
|
|
Loading…
Reference in New Issue