diff --git a/src/grid_discretized.jl b/src/grid_discretized.jl index 9fbea66..b75cd96 100644 --- a/src/grid_discretized.jl +++ b/src/grid_discretized.jl @@ -387,6 +387,35 @@ function localdimensions(g::DiscretizedGrid)::Vector{Int} return copy(g.discretegrid.sitedims) end +function _format_indexsite(site::Vector{Tuple{Symbol,Int}}) + entries = map(site) do (variablename, bitnumber) + "$(string(variablename))[$bitnumber]" + end + return "(" * join(entries, ", ") * ")" +end + +function _format_indextable_oneline(indextable::Vector{Vector{Tuple{Symbol,Int}}}; max_sites::Int=6) + if isempty(indextable) + return "[]" + end + + total_sites = length(indextable) + if total_sites <= max_sites + entries = ["$site:$(_format_indexsite(indextable[site]))" for site in 1:total_sites] + return "[" * join(entries, ", ") * "]" + end + + num_head = max_sites ÷ 2 + num_tail = max_sites - num_head + head_sites = collect(1:num_head) + tail_sites = collect(total_sites - num_tail + 1:total_sites) + + head_entries = ["$site:$(_format_indexsite(indextable[site]))" for site in head_sites] + tail_entries = ["$site:$(_format_indexsite(indextable[site]))" for site in tail_sites] + entries = vcat(head_entries, ["..."], tail_entries) + return "[" * join(entries, ", ") * "]" +end + function quanticsfunction(::Type{T}, g::Grid, f::F)::Function where {T,F<:Function} function wrapped_function(quantics)::T coords = quantics_to_origcoord(g, quantics) @@ -484,6 +513,8 @@ function Base.show(io::IO, ::MIME"text/plain", g::DiscretizedGrid{D}) where D print(io, "\n├─ Base: $(grid_base(g))") end + print(io, "\n├─ Index table: $(_format_indextable_oneline(grid_indextable(g)))") + # Tensor structure summary num_sites = length(grid_indextable(g)) sitedims = Int[sitedim(g, site) for site in 1:num_sites] diff --git a/test/discretizedgrid_misc_tests.jl b/test/discretizedgrid_misc_tests.jl index e7c1986..0374a85 100644 --- a/test/discretizedgrid_misc_tests.jl +++ b/test/discretizedgrid_misc_tests.jl @@ -72,10 +72,9 @@ end @testitem "DiscretizedGrid show method" begin g = DiscretizedGrid((2, 3, 4)) - @test try - sprint(show, g) - true - catch e - false - end + text = sprint(show, MIME"text/plain"(), g) + @test occursin("Index table: [", text) + @test occursin("1:(", text) + @test !occursin("Symbol(\"", text) + @test !occursin("\n│ ", text) end