@@ -8,13 +8,17 @@ Optional:
88* `times(v)`: the timestamps of the variable
99* `units(v)`: the units of the variable
1010* `meta(v)`: the metadata of the variable
11+ * `name(v)`: the name of the variable
1112"""
1213abstract type AbstractDataVariable{T,N} <: AbstractArray{T,N} end
1314
1415# https://docs.julialang.org/en/v1/manual/interfaces/#man-interface-array
1516Base. parent (var:: AbstractDataVariable ) = var. data
16- Base. size (var:: AbstractDataVariable ) = size (parent (var))
1717Base. iterate (A:: AbstractDataVariable , args... ) = iterate (parent (A), args... )
18+ for f in (:size , :Array )
19+ @eval Base.$ f (var:: AbstractDataVariable ) = $ f (parent (var))
20+ end
21+
1822for f in (:getindex ,)
1923 @eval Base.$ f (var:: AbstractDataVariable , I:: Vararg{Int} ) = $ f (parent (var), I... )
2024end
@@ -23,14 +27,17 @@ times(v) = v.times
2327tmin (v) = minimum (times (v))
2428tmax (v) = maximum (times (v))
2529
30+ _timerange_str (times) = " Time Range: $(minimum (times)) to $(maximum (times)) "
31+
2632function Base. show (io:: IO , var:: T ) where {T<: AbstractDataVariable }
2733 ismissing (var) && return
2834 print_name (io, var)
2935 print (io, " [" )
30- print (io, " Time Range: " , tmin (var), " to " , tmax (var))
36+ time = times (var)
37+ isnothing (time) || print (io, _timerange_str (time), " ," )
3138 u = units (var)
32- isnothing (u) || print (io, " , Units: " , u)
33- print (io, " , Size: " , size (var))
39+ isnothing (u) || print (io, " Units: " , u, " , " )
40+ print (io, " Size: " , size (var))
3441 print (io, " ]" )
3542end
3643
@@ -40,7 +47,8 @@ function Base.show(io::IO, m::MIME"text/plain", var::T) where {T<:AbstractDataVa
4047 print (io, " $T : " )
4148 print_name (io, var)
4249 println (io)
43- println (io, " Time Range: " , tmin (var), " to " , tmax (var))
50+ time = times (var)
51+ isnothing (time) || println (io, " " , _timerange_str (time))
4452 u = units (var)
4553 isnothing (u) || println (io, " Units: " , u)
4654 println (io, " Size: " , size (var))
0 commit comments