Skip to content

Commit 17e1d59

Browse files
PraneethJainbarche
authored andcommitted
feat: improve pretty printing for lists
1 parent f8b8ad6 commit 17e1d59

File tree

2 files changed

+23
-20
lines changed

2 files changed

+23
-20
lines changed

src/StdLib/StdForwardList.jl

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,25 @@ _forward_list_iteration_tuple(v::StdForwardList, state::StdForwardListIterator)
1111
Base.iterate(v::StdForwardList) = _forward_list_iteration_tuple(v, iteratorbegin(v))
1212
Base.iterate(v::StdForwardList, state::StdForwardListIterator) = (state != iteratorend(v)) ? _forward_list_iteration_tuple(v, iterator_next(state)) : nothing
1313

14-
function Base.show(io::IO, ::MIME"text/plain", container::StdForwardList)
15-
print(io, "StdForwardList[")
14+
function Base.show(io::IO, ::MIME"text/plain", container::StdForwardList{T}) where {T}
15+
print(io, "StdForwardList{", T, "}")
1616

1717
iterator = iterate(container)
18-
for i in 1:5
19-
if iterator === nothing
20-
break
21-
end
18+
if iterator === nothing
19+
print(io, "()")
20+
return
21+
end
22+
23+
print(io, ":")
24+
count = 0
25+
while iterator !== nothing && count < 10
2226
item, state = iterator
23-
i > 1 && print(io, ", ")
24-
print(io, item)
27+
print(io, "\n ", item)
2528
iterator = iterate(container, state)
29+
count += 1
2630
end
2731

2832
if iterator !== nothing
29-
print(io, ", ...")
33+
print(io, "\n")
3034
end
31-
32-
print(io, "]")
3335
end

src/StdLib/StdList.jl

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,16 @@ _list_iteration_tuple(v::StdList, state::StdListIterator) = (state == iteratoren
1717
Base.iterate(v::StdList) = _list_iteration_tuple(v, iteratorbegin(v))
1818
Base.iterate(v::StdList, state::StdListIterator) = (state != iteratorend(v)) ? _list_iteration_tuple(v, iterator_next(state)) : nothing
1919

20-
function Base.show(io::IO, ::MIME"text/plain", container::StdList)
21-
print(io, "StdList[")
20+
function Base.show(io::IO, ::MIME"text/plain", container::StdList{T}) where {T}
21+
n = length(container)
22+
print(io, "StdList{", T, "} with ", n, " element", n == 1 ? "" : "s")
2223

23-
for (i, item) in enumerate(Iterators.take(container, 5))
24-
i > 1 && print(io, ", ")
25-
print(io, item)
24+
n == 0 && return
25+
print(io, ":")
26+
for item in Iterators.take(container, 10)
27+
print(io, "\n ", item)
28+
end
29+
if n > 10
30+
print(io, "\n")
2631
end
27-
28-
length(container) > 5 && print(io, ", ...")
29-
30-
print(io, "]")
3132
end

0 commit comments

Comments
 (0)