diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-05 09:23:41 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-05 09:23:41 -0500 |
| commit | 1a89ea4cae26d37f584aa8c4266cb4bb9aaa9a0f (patch) | |
| tree | a77cba644bcdc51beeb7815fba73e39c95583dac /org-drill.el | |
| parent | 6737e1b603a0f54d72458bb6332cf1e8b1b26dee (diff) | |
| download | org-drill-1a89ea4cae26d37f584aa8c4266cb4bb9aaa9a0f.tar.gz org-drill-1a89ea4cae26d37f584aa8c4266cb4bb9aaa9a0f.zip | |
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.
Diffstat (limited to 'org-drill.el')
| -rw-r--r-- | org-drill.el | 23 |
1 files 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) |
