From a1f25285ac23304970be2300a5e4f31a4e1763c9 Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Thu, 14 Jul 2022 22:33:22 -0400 Subject: [PATCH] REF make pacman module use setup framework --- drawing/pacman.lua | 73 +++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/drawing/pacman.lua b/drawing/pacman.lua index eed6f50..fb5c3e3 100644 --- a/drawing/pacman.lua +++ b/drawing/pacman.lua @@ -1,4 +1,5 @@ -local common = require 'common' +local common = require 'common' +local pure = require 'pure' local geometry = require 'geometry' return function(point) @@ -7,44 +8,48 @@ return function(point) local __string_match = string.match local __string_gmatch = string.gmatch - local header = common.make_header( - point.x, - point.y, + local mk_header = pure.partial( + common.mk_header, + 'PACMAN', geometry.SECTION_WIDTH, - 'PACMAN' + point.x ) - local rows = common.make_text_rows( - point.x, - header.bottom_y, - geometry.SECTION_WIDTH, - TEXT_SPACING, - {'Total', 'Explicit', 'Outdated', 'Orphaned', 'Local'} - ) - - local update = function(pacman_stats) - local stats = __string_match(pacman_stats, '%d+%s+[^%s]+%s+[^%s]+%s+(.*)$') - if stats then - local i = 1 - for v in __string_gmatch(stats, '%d+') do - common.text_rows_set(rows, i, v) - i = i + 1 - end - else - for i=1, 5 do - common.text_rows_set(rows, i, 'N/A') + local mk_stats = function(y) + local obj = common.make_text_rows( + point.x, + y, + geometry.SECTION_WIDTH, + TEXT_SPACING, + {'Total', 'Explicit', 'Outdated', 'Orphaned', 'Local'} + ) + local update = function(pacman_stats) + local stats = __string_match(pacman_stats, '%d+%s+[^%s]+%s+[^%s]+%s+(.*)$') + if stats then + local i = 1 + for v in __string_gmatch(stats, '%d+') do + common.text_rows_set(obj, i, v) + i = i + 1 + end + else + for i = 1, 5 do + common.text_rows_set(obj, i, 'N/A') + end end end + return common.mk_acc( + TEXT_SPACING * 4, + update, + pure.partial(common.text_rows_draw_static, obj), + pure.partial(common.text_rows_draw_dynamic, obj) + ) end - local draw_static = function(cr) - common.draw_header(cr, header) - common.text_rows_draw_static(rows, cr) - end - - local draw_dynamic = function(cr) - common.text_rows_draw_dynamic(rows, cr) - end - - return {static = draw_static, dynamic = draw_dynamic, update = update} + return common.reduce_blocks_( + point.y, + { + common.mk_block(mk_header, true, 0), + common.mk_block(mk_stats, true, 0), + } + ) end