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