aboutsummaryrefslogtreecommitdiff
path: root/org-drill.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-05 09:23:41 -0500
committerCraig Jennings <c@cjennings.net>2026-05-05 09:23:41 -0500
commit1a89ea4cae26d37f584aa8c4266cb4bb9aaa9a0f (patch)
treea77cba644bcdc51beeb7815fba73e39c95583dac /org-drill.el
parent6737e1b603a0f54d72458bb6332cf1e8b1b26dee (diff)
downloadorg-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.el23
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)