Printing vector of vectors with :compact output

One idea, following the same docs example:

function println_vec(io::IO, v::Vector{Polar{Float64}})
    iob = IOBuffer()
    show(IOContext(iob, :compact=>true), v)
    str = String(take!(iob))
    ('[' in str) && (str = '[' * last(split(str,'[')))
    println(io, str)
end

function Base.show(io::IO, ::MIME"text/plain", vv::Vector{Vector{Polar{Float64}}})
    println(io, "$(length(vv))-element Vector{Vector{Polar{Float64}}}:")
    foreach(v -> println_vec(io, v), vv)
end

vv = [[Polar(3.0, 4.0), Polar(4.0, 5.3)], [Polar(-1.0, 1.0), Polar(0.0, -2)]]

# Result:
2-element Vector{Vector{Polar{Float64}}}:
[3.0ℯ4.0im, 4.0ℯ5.3im]
[-1.0ℯ1.0im, 0.0ℯ-2.0im]
1 Like