935935
936936# Printing
937937
938+ # Copy of `Base.dims2string` defined in `show.jl`.
939+ function dims_to_string (d)
940+ isempty (d) && return " 0-dimensional"
941+ length (d) == 1 && return " $(d[1 ]) -element"
942+ return join (map (string, d), ' ×' )
943+ end
944+
945+ using TypeParameterAccessors: type_parameters, unspecify_type_parameters
946+ function concretetype_to_string_truncated (type:: Type ; param_truncation_length= typemax (Int))
947+ isconcretetype (type) || throw (ArgumentError (" Type must be concrete." ))
948+ alias = Base. make_typealias (type)
949+ base_type, params = if isnothing (alias)
950+ unspecify_type_parameters (type), type_parameters (type)
951+ else
952+ base_type_globalref, params_svec = alias
953+ base_type_globalref. name, params_svec
954+ end
955+ str = string (base_type)
956+ if isempty (params)
957+ return str
958+ end
959+ str *= ' {'
960+ param_strings = map (params) do param
961+ param_string = string (param)
962+ if length (param_string) > param_truncation_length
963+ return " …"
964+ end
965+ return param_string
966+ end
967+ str *= join (param_strings, " , " )
968+ str *= ' }'
969+ return str
970+ end
971+
972+ function Base. summary (io:: IO , a:: AbstractNamedDimsArray )
973+ print (io, dims_to_string (nameddimsindices (a)))
974+ print (io, ' ' )
975+ print (io, concretetype_to_string_truncated (typeof (a); param_truncation_length= 40 ))
976+ return nothing
977+ end
978+
938979function Base. show (io:: IO , mime:: MIME"text/plain" , a:: AbstractNamedDimsArray )
939980 summary (io, a)
940981 println (io)
@@ -943,7 +984,8 @@ function Base.show(io::IO, mime::MIME"text/plain", a::AbstractNamedDimsArray)
943984end
944985
945986function Base. show (io:: IO , a:: AbstractNamedDimsArray )
946- print (io, " nameddimsarray(" )
987+ show (io, unspecify_type_parameters (typeof (a)))
988+ print (io, " (" )
947989 show (io, dename (a))
948990 print (io, " , " , nameddimsindices (a), " )" )
949991 return nothing
0 commit comments