Skip to content

Commit ae933b8

Browse files
Make it an AbstractVector and fix rendering
1 parent 4dbbf77 commit ae933b8

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/array_partition.jl

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
immutable ArrayPartition{T}
1+
immutable ArrayPartition{T} <: AbstractVector{Any}
22
x::T
33
end
44
ArrayPartition(x...) = ArrayPartition((x...))
@@ -11,7 +11,8 @@ function ArrayPartition{T,T2<:Tuple}(x::T2,::Type{Val{T}}=Val{false})
1111
end
1212
Base.similar(A::ArrayPartition) = ArrayPartition((similar.(A.x))...)
1313
Base.similar(A::ArrayPartition, dims::Tuple) = ArrayPartition(similar.(A.x, dims)...)
14-
Base.similar(A::ArrayPartition, T, dims::Tuple) = ArrayPartition(similar.(A.x, T, dims)...)
14+
Base.similar{T}(A::ArrayPartition, ::Type{T}) = ArrayPartition(similar.(A.x, T)...)
15+
Base.similar{T}(A::ArrayPartition, ::Type{T}, dims::Tuple) = ArrayPartition(similar.(A.x, T, dims)...)
1516

1617
Base.copy(A::ArrayPartition) = Base.similar(A)
1718
Base.zeros(A::ArrayPartition) = ArrayPartition((zeros(x) for x in A.x)...)
@@ -78,9 +79,14 @@ Base.done(A::ArrayPartition,state) = done(chain(A.x...),state)
7879

7980
Base.length(A::ArrayPartition) = sum((length(x) for x in A.x))
8081
Base.size(A::ArrayPartition) = (length(A),)
81-
Base.indices(A::ArrayPartition) = ((indices(x) for x in A.x)...)
8282
Base.eachindex(A::ArrayPartition) = Base.OneTo(length(A))
8383

84+
# restore the type rendering in Juno
85+
Juno.@render Juno.Inline x::ArrayPartition begin
86+
fields = fieldnames(typeof(x))
87+
Juno.LazyTree(typeof(x), () -> [Juno.SubTree(Juno.Text("$f"), Juno.getfield′(x, f)) for f in fields])
88+
end
89+
8490
add_idxs(x,expr) = expr
8591
add_idxs{T<:ArrayPartition}(::Type{T},expr) = :($(expr).x[i])
8692

0 commit comments

Comments
 (0)