From 1a89ea4cae26d37f584aa8c4266cb4bb9aaa9a0f Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 5 May 2026 09:23:41 -0500 Subject: refactor: extract org-drill--quality-percent helper for final-report The quality-percentage formula (round (* 100 (cl-count Q qualities)) (max 1 (length qualities))) appeared six times in org-drill-final-report (once per recall quality 0..5), each time inlined verbatim. Extracted to a single helper. Six call sites collapse from three lines each to one. Behavior identical (the helper documents the (max 1 ...) divisor as an empty-list guard). Final-report drops from 95 lines to ~80. --- org-drill.el | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/org-drill.el b/org-drill.el index 75d2015..31d5ad8 100644 --- a/org-drill.el +++ b/org-drill.el @@ -2770,6 +2770,11 @@ RESUMING-P is true if we are resuming a suspended drill session." (push m (oref session done-entries)))) (setf (oref session current-item) nil))))))))))) +(defun org-drill--quality-percent (q qualities) + "Percentage of QUALITIES equal to Q, rounded to integer. +Returns 0 when QUALITIES is empty (instead of dividing by zero)." + (round (* 100 (cl-count q qualities)) (max 1 (length qualities)))) + (defun org-drill-final-report (session) (let* ((qualities (oref session qualities)) (pass-percent @@ -2795,18 +2800,12 @@ Session finished. Press a key to continue..." (format-seconds "%h:%.2m:%.2s" (- (float-time (current-time)) (oref session start-time))) - (round (* 100 (cl-count 5 qualities)) - (max 1 (length qualities))) - (round (* 100 (cl-count 2 qualities)) - (max 1 (length qualities))) - (round (* 100 (cl-count 4 qualities)) - (max 1 (length qualities))) - (round (* 100 (cl-count 1 qualities)) - (max 1 (length qualities))) - (round (* 100 (cl-count 3 qualities)) - (max 1 (length qualities))) - (round (* 100 (cl-count 0 qualities)) - (max 1 (length qualities))) + (org-drill--quality-percent 5 qualities) + (org-drill--quality-percent 2 qualities) + (org-drill--quality-percent 4 qualities) + (org-drill--quality-percent 1 qualities) + (org-drill--quality-percent 3 qualities) + (org-drill--quality-percent 0 qualities) pass-percent org-drill-failure-quality (org-drill-pending-entry-count session) -- cgit v1.2.3