From 7b3f17201dd19813fd2e52987fc3445aba5b8403 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sat, 12 Nov 2022 04:03:28 +0000 Subject: [PATCH] allow grouping card namespaces --- .../src/kiss_spaced_rep/KSR.kiss | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/projects/kiss-spaced-rep/src/kiss_spaced_rep/KSR.kiss b/projects/kiss-spaced-rep/src/kiss_spaced_rep/KSR.kiss index c29a88d3..ac2d93f9 100644 --- a/projects/kiss-spaced-rep/src/kiss_spaced_rep/KSR.kiss +++ b/projects/kiss-spaced-rep/src/kiss_spaced_rep/KSR.kiss @@ -56,15 +56,22 @@ score ->:Void [engine :Int->Void resolve] {(engine.showImage path)(engine.print "Score (0-5): ")(engine.input ->:Void str (resolve (Std.parseInt str)))})) (defMacroVar cardId 0) +(defMacroVar groupId 0) + +(defMacro group [&body body] + (setMacroVar groupId (+ groupId 1)) + (setMacroVar cardId 0) + `{,@body}) (defMacro card [front back &builder b] - (let [cObject (b.symbol "cObject$cardId") - cScore (b.symbol "cScore$cardId") - cRepetitions (b.symbol "cRepetitions$cardId") - cPreviousEaseFactor (b.symbol "cPreviousEaseFactor$cardId") - cPreviousInterval (b.symbol "cPreviousInterval$cardId") - cNextDate (b.symbol "cNextDate$cardId") - cStudy (b.symbol "cStudy$cardId")] + (let [idSymbol ->name (b.symbol "${name}${groupId}_${cardId}") + cObject (idSymbol "cObject") + cScore (idSymbol "cScore") + cRepetitions (idSymbol "cRepetitions") + cPreviousEaseFactor (idSymbol "cPreviousEaseFactor") + cPreviousInterval (idSymbol "cPreviousInterval") + cNextDate (idSymbol "cNextDate") + cStudy (idSymbol "cStudy")] (setMacroVar cardId (+ cardId 1)) `{ (var ,cObject (object front ,front back ,back)) @@ -106,13 +113,12 @@ })) (defMacro reversed [front back] - `{ + `(group (card ,front ,back) - (card ,back ,front) - }) + (card ,back ,front))) (defMacro cloze [&builder b &body textLines] - (b.begin + (b.callSymbol "group" (for i (range textLines.length) `(card (object