enhance display / show
This commit is contained in:
parent
e5883a3447
commit
c232e25341
@ -188,17 +188,40 @@ end
|
||||
|
||||
# ------------------------------------------------------------------------------------------
|
||||
Base.show(plt::Plot{UnicodePlotsBackend}) = show(stdout, plt)
|
||||
Base.show(io::IO, plt::Plot{UnicodePlotsBackend}) = _show(io, MIME("text/plain"), plt)
|
||||
|
||||
function _show(io::IO, ::MIME"text/plain", plt::Plot{UnicodePlotsBackend})
|
||||
function Base.show(io::IO, plt::Plot{UnicodePlotsBackend})
|
||||
prepare_output(plt)
|
||||
unicodeplots_rebuild(plt)
|
||||
_show(io, MIME("text/plain"), plt, Val{false}) # no layout, hence vertical stacked
|
||||
end
|
||||
|
||||
# we only support "text/plain", hence display(...) falls back to plain-text stdout
|
||||
function Base.display(::PlotsDisplay, plt::Plot)
|
||||
prepare_output(plt)
|
||||
unicodeplots_rebuild(plt)
|
||||
_show(stdout, MIME("text/plain"), plt, Val{true}) # consider layout
|
||||
end
|
||||
|
||||
function _show(io::IO, ::MIME"text/plain", plt::Plot{UnicodePlotsBackend}, ::Type{Val{false}})
|
||||
n = length(plt.o)
|
||||
for (i, p) in enumerate(plt.o)
|
||||
show(io, p)
|
||||
i < n && println(io)
|
||||
end
|
||||
nothing
|
||||
end
|
||||
|
||||
function _show(io::IO, m::MIME"text/plain", plt::Plot{UnicodePlotsBackend}, ::Type{Val{true}})
|
||||
nr, nc = size(plt.layout)
|
||||
if nr == 1 && nc == 1 # fast path
|
||||
_show(io, m, plt, Val{false})
|
||||
else
|
||||
lines_colored = Array{Union{Nothing,Vector{String}}}(undef, nr, nc)
|
||||
lines_uncolored = copy(lines_colored)
|
||||
l_max = zeros(Int, nr)
|
||||
w_max = zeros(Int, nc)
|
||||
buf = IOBuffer()
|
||||
cbuf = IOContext(buf, :color => true)
|
||||
cbuf = IOContext(buf, :color => Base.get_have_color())
|
||||
re_col = r"\x1B\[[0-9;]*[a-zA-Z]"
|
||||
sps = 0
|
||||
for r in 1:nr
|
||||
@ -237,15 +260,10 @@ function _show(io::IO, ::MIME"text/plain", plt::Plot{UnicodePlotsBackend})
|
||||
print(io, pre, lc[n], ' '^(w_max[c] - length(lu[n])))
|
||||
end
|
||||
end
|
||||
println(io)
|
||||
n < l_max[r] && println(io)
|
||||
end
|
||||
r < nr && println(io)
|
||||
end
|
||||
nothing
|
||||
end
|
||||
|
||||
function _display(plt::Plot{UnicodePlotsBackend})
|
||||
unicodeplots_rebuild(plt)
|
||||
map(display, plt.o)
|
||||
end
|
||||
nothing
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user