From 0b7c2649937c5f7816b9263b6c781db070e18efd Mon Sep 17 00:00:00 2001 From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk> Date: Wed, 31 Jan 2024 18:54:53 +0000 Subject: [PATCH] Separate printing for sequences and non-sequences --- src/building_blocks.jl | 14 -------------- src/sequences.jl | 30 ++++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/building_blocks.jl b/src/building_blocks.jl index ffcfc85..4271bd4 100644 --- a/src/building_blocks.jl +++ b/src/building_blocks.jl @@ -209,7 +209,6 @@ function Base.show(io::IO, printer::BuildingBlockPrinter) ft = fieldtype(typeof(block), name) if ( ft in (VariableType, Model) || - ft <: BuildingBlock || (ft <: AbstractVector && eltype(ft) == VariableType) || string(name)[1] == '_' ) @@ -235,19 +234,6 @@ function Base.show(io::IO, printer::BuildingBlockPrinter) print(io, "$(nameof(fn))=$(printed_value), ") end print(io, ")") - - if block isa ContainerBlock - use_start_time = isnothing(printer.start_time) ? 0. : printer.start_time - print(io, ":") - for (child_index, child_block) in get_children_blocks(block) - child_printer = BuildingBlockPrinter( - child_block, - _robust_value(start_time(block, child_index) + use_start_time), - printer.spaces + 2 - ) - print(io, "\n", repeat(' ', printer.spaces + 2), "- ", child_index, ": ", child_printer) - end - end end diff --git a/src/sequences.jl b/src/sequences.jl index c61ca50..8430f85 100644 --- a/src/sequences.jl +++ b/src/sequences.jl @@ -2,10 +2,11 @@ Define the [`Sequence`](@ref) building block. """ module Sequences +import Printf: @sprintf import JuMP: Model, @constraint import ...BuildSequences: @global_model_constructor import ...Variables: variables, start_time, duration, VariableType, get_free_variable, TR, end_time -import ...BuildingBlocks: BuildingBlock, ContainerBlock, to_block, get_children_indices, scanner_constraints!, fixed, BuildingBlockPrinter +import ...BuildingBlocks: BuildingBlock, ContainerBlock, to_block, get_children_indices, scanner_constraints!, fixed, BuildingBlockPrinter, _robust_value, get_children_blocks """ Sequence(building_blocks...; TR=nothing, scanner=nothing) @@ -64,9 +65,34 @@ variables(::Type{<:Sequence}) = [TR] # print timings when printing sequences Base.show(io::IO, seq::Sequence) = print(io, BuildingBlockPrinter(seq, 0., 0)) +function Base.show(io::IO, printer::BuildingBlockPrinter{<:Sequence}) + seq = printer.bb + print(io, "Sequence(") + d = _robust_value(duration(seq)) + if !isnothing(d) + if !isnothing(printer.start_time) + print(io, "t=", @sprintf("%.3g", printer.start_time), "-", @sprintf("%.3g", printer.start_time + d), ", ") + else + print(io, "duration=", @sprintf("%.3g", d), ",") + end + end + TR = _robust_value(seq.TR) + if !isnothing(TR) + print(io, "TR=", Int(round(TR))) + end + print(io, "):") -end + for (child_index, child_block) in get_children_blocks(seq) + child_printer = BuildingBlockPrinter( + child_block, + isnothing(printer.start_time) ? nothing : _robust_value(start_time(seq, child_index) + printer.start_time), + printer.spaces + 2 + ) + print(io, "\n", repeat(' ', printer.spaces + 2), "- ", child_index, ": ", child_printer) + end +end +end -- GitLab