From fc4425721294e40c25ef6cc2c980dd661a061d88 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 29 Mar 2023 23:37:19 +0300 Subject: refactor to use gather/take rather than push @ret, ... --- guprecords.raku | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/guprecords.raku b/guprecords.raku index fa22501..d7f925e 100644 --- a/guprecords.raku +++ b/guprecords.raku @@ -108,29 +108,28 @@ class Reporter { has Metric $.metric is required; method report returns Str { - my @ret; - push @ret, "{self!output-header}Top {$.limit} {$.metric}'s by {$.category}:\n\n"; - - with self!table -> (@table, %size) { - my \format = '|' ~ join '|', - " %{%size}s ", " %{%size}s ", " %{%size}s ", "\n"; - my \border = '+' ~ join '+', - '-' x (2+%size), '-' x (2+%size), '-' x (2+%size), "\n"; - - push @ret, self!output-block; - push @ret, border; - push @ret, sprintf format, 'Pos', $.category, $.metric; - push @ret, border; - - for @table -> \position, \name, \value { - push @ret, sprintf format, position, name, value; + join '', gather { + take "{self!output-header}Top {$.limit} {$.metric}'s by {$.category}:\n\n"; + + with self!table -> (@table, %size) { + my \format = '|' ~ join '|', + " %{%size}s ", " %{%size}s ", " %{%size}s ", "\n"; + my \border = '+' ~ join '+', + '-' x (2+%size), '-' x (2+%size), '-' x (2+%size), "\n"; + + take self!output-block; + take border; + take sprintf format, 'Pos', $.category, $.metric; + take border; + + for @table -> \position, \name, \value { + take sprintf format, position, name, value; + } + + take border; + take self!output-block; } - - push @ret, border; - push @ret, self!output-block; } - - return @ret.join(''); } method !table returns List { -- cgit v1.2.3