diff --git a/src/printing.jl b/src/printing.jl index 95eebcdb42875ae8f14b2f9e491152c98714be5d..6162460480c81f5b664ce7d8374e3521e459d2d7 100644 --- a/src/printing.jl +++ b/src/printing.jl @@ -6,13 +6,13 @@ import ..Variables: VariableType, variables, AbstractBlock, VariableNotAvailable function _robust_value(possible_number::VariableType) try - return value(possible_number) + return round(value(possible_number), sigdigits=3) catch return nothing end end -function _robust_value(possible_vector::AbstractVector) +function _robust_value(possible_vector::AbstractArray) result = _robust_value.(possible_vector) if any(isnothing.(result)) return nothing @@ -21,6 +21,7 @@ function _robust_value(possible_vector::AbstractVector) end _robust_value(possible_tuple::Tuple) = _robust_value([possible_tuple...]) +_robust_value(possible_tuple::NamedTuple) = NamedTuple(k => _robust_value(v) for (k, v) in pairs(possible_tuple)) function Base.show(io::IO, block::AbstractBlock) @@ -36,7 +37,8 @@ function Base.show(io::IO, block::AbstractBlock) end if ( ft <: Union{Nothing, AbstractBlock} || - (ft <: AbstractVector && eltype(ft) <: AbstractBlock) + (ft <: AbstractVector && eltype(ft) <: AbstractBlock) || + (ft <: AbstractVector && eltype(ft) <: Pair) ) continue end @@ -53,12 +55,7 @@ function Base.show(io::IO, block::AbstractBlock) if isnothing(numeric_value) continue end - if numeric_value isa AbstractVector - printed_value = "[" * join(map(v -> @sprintf("%.3g", v), numeric_value), ", ") * "]" - else - printed_value = @sprintf("%.3g", numeric_value) - end - print(io, "$(nameof(fn))=$(printed_value), ") + print(io, "$(nameof(fn))=$(numeric_value), ") catch e if e isa VariableNotAvailable continue