Add code state, update variables to const and renamed some functions

This commit is contained in:
Andros Fenollosa 2024-04-01 12:19:56 +02:00
parent a28ec29d8b
commit 5c3eef6d5a
2 changed files with 29 additions and 29 deletions

View File

@ -7,11 +7,11 @@
;; SPDX-License-Identifier: GPL-3.0-or-later ;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Commentary: ;;; Commentary:
;; This file contains a list of irregular verbs in English, with their ;; This file contains a list of irregular verbs in English
;;; Code: ;;; Code:
(defvar lirve-verbs--list '( (defconst lirve-verbs--list '(
( (
(infinitive . "beat") (infinitive . "beat")
(simple-past . "beat") (simple-past . "beat")

View File

@ -23,17 +23,17 @@
(defvar lirve--count-verbs 0) ;; It's used to know when unresolved verbs are shown (defvar lirve--count-verbs 0) ;; It's used to know when unresolved verbs are shown
(defvar lirve--interval-unresolved 3) ;; Interval to show unresolved verbs (defvar lirve--interval-unresolved 3) ;; Interval to show unresolved verbs
(defvar lirve--verbs-shuffle '()) (defvar lirve--verbs-shuffle '())
(defvar lirve--file-name-unresolved ".lirve-unresolved") (defconst lirve--file-name-unresolved ".lirve-unresolved")
(defvar lirve--verbs-unresolved '()) (defvar lirve--verbs-unresolved '())
(defvar lirve--buffer-name "*Learning irregular verbs in English*") (defconst lirve--buffer-name "*Learning irregular verbs in English*")
(defvar lirve--state 1) ;; 1: lirve--start, 2: playing (before first check), 3: win (show success layout) (defvar lirve--state :start) ;; :start -> Init, :playing before first check, :win show success layout
(defvar lirve--verb-to-learn-infinitive nil) (defvar lirve--verb-to-learn-infinitive nil)
(defvar lirve--verb-to-learn-simple-past nil) (defvar lirve--verb-to-learn-simple-past nil)
(defvar lirve--verb-to-learn-past-participle nil) (defvar lirve--verb-to-learn-past-participle nil)
(defvar lirve--translation "") (defvar lirve--translation "")
(defvar lirve--set-translation nil) ;; Set the translation language (defvar lirve--set-translation nil) ;; Set the translation language
(defvar lirve--emoji-valid "") (defconst lirve--emoji-valid "")
(defvar lirve--emoji-error "👎") (defconst lirve--emoji-error "👎")
(defvar lirve--widget-title nil) (defvar lirve--widget-title nil)
(defvar lirve--text-title " 🧑‍🎓 Learning irregular verbs in English 🇬🇧") (defvar lirve--text-title " 🧑‍🎓 Learning irregular verbs in English 🇬🇧")
(defvar lirve--widget-item-verb nil) (defvar lirve--widget-item-verb nil)
@ -41,26 +41,26 @@
(defvar lirve--widget-label-check-simple-past nil) (defvar lirve--widget-label-check-simple-past nil)
(defvar lirve--widget-field-past-participle nil) (defvar lirve--widget-field-past-participle nil)
(defvar lirve--widget-label-check-past-participle nil) (defvar lirve--widget-label-check-past-participle nil)
(defvar lirve--text-button-check "Check") (defconst lirve--text-button-check "Check")
(defvar lirve--widget-button-check nil) (defvar lirve--widget-button-check nil)
(defvar lirve--widget-item-space-before-check nil) (defvar lirve--widget-item-space-before-check nil)
(defvar lirve--text-button-show-solution "Don't know") (defconst lirve--text-button-show-solution "Don't know")
(defvar lirve--widget-button-show-solution nil) (defvar lirve--widget-button-show-solution nil)
(defvar lirve--widget-message-success nil) (defvar lirve--widget-message-success nil)
(defvar lirve--widget-item-space-before-success nil) (defvar lirve--widget-item-space-before-success nil)
(defvar lirve--text-success "Nice!") (defconst lirve--text-success "Nice!")
(defvar lirve--text-fail "Next time you will do better") (defconst lirve--text-fail "Next time you will do better")
(defvar lirve--is-resolve t) (defvar lirve--resolved-p t)
(defvar lirve--widget-item-space-after-success nil) (defvar lirve--widget-item-space-after-success nil)
(defvar lirve--widget-button-quit nil) (defvar lirve--widget-button-quit nil)
(defvar lirve--text-button-quit "Quit") (defconst lirve--text-button-quit "Quit")
(defvar lirve--widget-item-space-between-buttons nil) (defvar lirve--widget-item-space-between-buttons nil)
(defvar lirve--widget-button-lirve--replay nil) (defvar lirve--widget-button-lirve--replay nil)
(defvar lirve--text-button-lirve--replay "New challenge") (defconst lirve--text-button-lirve--replay "New challenge")
;; Functions ;; Functions
(defun lirve--kill-app () (defun lirve-kill-app ()
"Kill the application." "Kill the application."
(interactive) (interactive)
(kill-buffer lirve--buffer-name)) (kill-buffer lirve--buffer-name))
@ -168,7 +168,7 @@ Argument INFINITIVE verb to remove."
(defun lirve--format-check-simple-past () (defun lirve--format-check-simple-past ()
"Format the value of the simple past." "Format the value of the simple past."
(if (eq lirve--state 1) (if (eq lirve--state :start)
"" ""
(format " %s" (if (format " %s" (if
(and (and
@ -178,7 +178,7 @@ Argument INFINITIVE verb to remove."
(defun lirve--format-check-past-participle () (defun lirve--format-check-past-participle ()
"Format the value of the past participle." "Format the value of the past participle."
(if (eq lirve--state 1) (if (eq lirve--state :start)
"" ""
(format " %s" (if (format " %s" (if
(and (and
@ -193,7 +193,7 @@ Argument INFINITIVE verb to remove."
(defun lirve--toggle-layout-finish () (defun lirve--toggle-layout-finish ()
"Toggle the layout to success." "Toggle the layout to success."
(if (eq lirve--state 3) (if (eq lirve--state :win)
(progn (progn
;; Show translate ;; Show translate
(lirve--show-translation) (lirve--show-translation)
@ -212,7 +212,7 @@ Argument INFINITIVE verb to remove."
(setq lirve--widget-item-space-before-success (widget-create 'item (setq lirve--widget-item-space-before-success (widget-create 'item
"")) ""))
(setq lirve--widget-message-success (widget-create 'item (setq lirve--widget-message-success (widget-create 'item
(if lirve--is-resolve lirve--text-success lirve--text-fail))) (if lirve--resolved-p lirve--text-success lirve--text-fail)))
(setq lirve--widget-item-space-after-success (widget-create 'item (setq lirve--widget-item-space-after-success (widget-create 'item
"\n")) "\n"))
;; Lirve--Replay button ;; Lirve--Replay button
@ -227,7 +227,7 @@ Argument INFINITIVE verb to remove."
;; Quit button ;; Quit button
(setq lirve--widget-button-quit (widget-create 'push-button (setq lirve--widget-button-quit (widget-create 'push-button
:size 20 :size 20
:notify (lambda (&rest ignore) (lirve--kill-app)) :notify (lambda (&rest ignore) (lirve-kill-app))
lirve--text-button-quit)) lirve--text-button-quit))
(widget-backward 2)) (widget-backward 2))
(progn (progn
@ -242,7 +242,7 @@ Argument INFINITIVE verb to remove."
"Make the button check." "Make the button check."
(setq lirve--widget-button-check (widget-create 'push-button (setq lirve--widget-button-check (widget-create 'push-button
:notify (lambda (&rest ignore) :notify (lambda (&rest ignore)
(setq lirve--is-resolve (lirve--is-win)) (setq lirve--resolved-p (lirve--is-win))
(lirve--update)) (lirve--update))
lirve--text-button-check))) lirve--text-button-check)))
(defun lirve--make-space-after-check () (defun lirve--make-space-after-check ()
@ -256,13 +256,13 @@ Argument INFINITIVE verb to remove."
(widget-value-set lirve--widget-field-simple-past lirve--verb-to-learn-simple-past) (widget-value-set lirve--widget-field-simple-past lirve--verb-to-learn-simple-past)
(widget-value-set lirve--widget-field-past-participle lirve--verb-to-learn-past-participle) (widget-value-set lirve--widget-field-past-participle lirve--verb-to-learn-past-participle)
;; Set state to lose ;; Set state to lose
(setq lirve--is-resolve nil)) (setq lirve--resolved-p nil))
(defun lirve--make-button-show-solution () (defun lirve--make-button-show-solution ()
"Make the button show solution." "Make the button show solution."
(setq lirve--widget-button-show-solution (widget-create 'push-button (setq lirve--widget-button-show-solution (widget-create 'push-button
:notify (lambda (&rest ignore) :notify (lambda (&rest ignore)
(setq lirve--is-resolve (lirve--is-win)) (setq lirve--resolved-p (lirve--is-win))
(lirve--show-solutions) (lirve--show-solutions)
(lirve--update)) (lirve--update))
lirve--text-button-show-solution))) lirve--text-button-show-solution)))
@ -271,7 +271,7 @@ Argument INFINITIVE verb to remove."
(defun lirve--start () (defun lirve--start ()
"Start challenge." "Start challenge."
;; Set the lirve--state ;; Set the lirve--state
(setq lirve--state 1) (setq lirve--state :start)
;; Get a new verb ;; Get a new verb
(lirve--set-verb-to-learn) (lirve--set-verb-to-learn)
;; Show the verb in infinitive ;; Show the verb in infinitive
@ -300,23 +300,23 @@ Argument INFINITIVE verb to remove."
"Update state and show temps layouts." "Update state and show temps layouts."
(interactive) (interactive)
;; Is playing? ;; Is playing?
(when (and (eq lirve--state 1) (when (and (eq lirve--state :start)
(or (or
(not (string= (lirve--value-field-simple-past) "")) (not (string= (lirve--value-field-simple-past) ""))
(not (string= (lirve--value-field-past-participle) "")))) (not (string= (lirve--value-field-past-participle) ""))))
(setq lirve--state 2)) (setq lirve--state :playing))
;; Check the answers ;; Check the answers
(when (eq lirve--state 2) (when (eq lirve--state :playing)
;; Is win? ;; Is win?
(when (and (when (and
(string= (lirve--value-field-simple-past) lirve--verb-to-learn-simple-past) (string= (lirve--value-field-simple-past) lirve--verb-to-learn-simple-past)
(string= (lirve--value-field-past-participle) lirve--verb-to-learn-past-participle)) (string= (lirve--value-field-past-participle) lirve--verb-to-learn-past-participle))
;; Add or remove from unresolved list ;; Add or remove from unresolved list
(if lirve--is-resolve (if lirve--resolved-p
(lirve--remove-verb-unresolved lirve--verb-to-learn-infinitive) (lirve--remove-verb-unresolved lirve--verb-to-learn-infinitive)
(lirve--save-verb-unresolved lirve--verb-to-learn-infinitive)) (lirve--save-verb-unresolved lirve--verb-to-learn-infinitive))
;; Set the lirve--state ;; Set the lirve--state
(setq lirve--state 3)) (setq lirve--state :win))
;; Update the check labels ;; Update the check labels
(widget-value-set lirve--widget-label-check-simple-past (lirve--format-check-simple-past)) (widget-value-set lirve--widget-label-check-simple-past (lirve--format-check-simple-past))
(widget-value-set lirve--widget-label-check-past-participle (lirve--format-check-past-participle))) (widget-value-set lirve--widget-label-check-past-participle (lirve--format-check-past-participle)))