From cc1a188c50a1ba85848e5f5380d40ad899a46d35 Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <MichielCottaar@protonmail.com>
Date: Mon, 9 Sep 2024 15:08:15 +0100
Subject: [PATCH] Use new propertynames in printing

---
 src/printing.jl | 42 +++++++++---------------------------------
 1 file changed, 9 insertions(+), 33 deletions(-)

diff --git a/src/printing.jl b/src/printing.jl
index 5314377..1830ba0 100644
--- a/src/printing.jl
+++ b/src/printing.jl
@@ -1,5 +1,5 @@
 module Printing
-import JuMP: value
+import JuMP: value, AbstractJuMPScalar
 import Printf: @sprintf
 import ..Variables: VariableType, variables, AbstractBlock, Variable
 
@@ -21,50 +21,26 @@ 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))
+_robust_value(other) = other
 
 
 function Base.show(io::IO, block::AbstractBlock)
     print(io, nameof(typeof(block)), "(")
     for name in propertynames(block)
-        ft = fieldtype(typeof(block), name)
+        value = _robust_value(getproperty(block, name))
         if (
-            ft == VariableType ||
-            (ft <: AbstractVector && eltype(ft) == VariableType) ||
-            string(name)[1] == '_'
-        )
-            continue
-        end
-        if (
-            ft <: Union{Nothing, AbstractBlock} ||
-            (ft <: AbstractVector && eltype(ft) <: AbstractBlock) ||
-            (ft <: AbstractVector && eltype(ft) <: Pair)
+            value isa AbstractJuMPScalar ||
+            (value isa AbstractVector{<:AbstractJuMPScalar}) ||
+            string(name)[1] == '_' ||
+            isnothing(value) ||
+            (value isa AbstractVector{<:AbstractBlock}) ||
+            (value isa AbstractVector{<:Pair})
         )
             continue
         end
 
         print(io, name, "=", repr(getproperty(block, name)), ", ")
     end
-
-    for fn_name in names(variables, all=true)
-        fn = getproperty(variables, fn_name)
-        if !(fn isa Variable)
-            continue
-        end
-
-        try
-            numeric_value = _robust_value(fn(block))
-            if isnothing(numeric_value)
-                continue
-            end
-            as_string = string(numeric_value)
-            if length(as_string) > 50
-                continue
-            end
-            print(io, "$(fn_name)=$(as_string), ")
-        catch e
-            continue
-        end
-    end
     print(io, ")")
 end
 
-- 
GitLab