diff options
author | Thanos Apollo <[email protected]> | 2024-02-06 06:24:24 +0200 |
---|---|---|
committer | Thanos Apollo <[email protected]> | 2024-02-06 06:24:24 +0200 |
commit | 47b8c3190bf40acc13226aab37d3121e7d932af4 (patch) | |
tree | c11968204852d84f28b46654360758230ce0b1bd /gnosis-dev.el | |
parent | 83250d05d5a68f01db7754495617467386918464 (diff) |
Rename gnosis-dev.el -> gnosis.test.el
Make it easier to package for MELPA
Diffstat (limited to 'gnosis-dev.el')
-rw-r--r-- | gnosis-dev.el | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/gnosis-dev.el b/gnosis-dev.el deleted file mode 100644 index 854cb50..0000000 --- a/gnosis-dev.el +++ /dev/null @@ -1,134 +0,0 @@ -;;; gnosis-algorithm.el --- Gnosis development tools -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: extensions -;; URL: https://git.thanosapollo.org/gnosis -;; Version: 0.0.1 - -;; Package-Requires: ((emacs "27.2") (compat "29.1.4.2")) - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: - -;; Development module for gnosis, to make development of gnosis.el -;; easier by creating a testing environment with random inputs. - -;;; Code: - -(require 'gnosis) - -(defvar gnosis-dev-tags '("anatomy" "thoracic" "serratus-anterior" - "biochemistry" "informatics" "amino-acids" - "microbiology" "gram-positive" "gram-negative" - "fungi" "parasites")) - -(defun gnosis-dev-random-items (list x) - "Select X random items from LIST." - (let ((shuffled-list (copy-sequence list)) - selected-items) - (dotimes (_ x) - (let* ((index (random (length shuffled-list))) - (item (nth index shuffled-list))) - (setq selected-items (cons item selected-items)) - (setq shuffled-list (append (butlast shuffled-list index) (nthcdr (1+ index) shuffled-list))))) - selected-items)) - -(defun gnosis-dev-add-fields (&optional num deck) - "Add random inputs to test. - -NUM: Number of random inputs to add. -DECK: Deck to add the inputs to." - (let ((num (or num (string-to-number (read-string "Number of random inputs: ")))) - (testing-deck (or deck "testing"))) - (unless (gnosis-get 'name 'decks `(= name ,testing-deck)) - (gnosis-add-deck testing-deck)) - (when (y-or-n-p "Add MCQ type?") - (dotimes (_ num) - (gnosis-add-note--mcq :deck testing-deck - :question "A 37-year-old man is admitted to the -emergency department after a severe car crash. After examining the -patient the emergency medicine physician concludes that the serratus -anterior muscle is damaged. Which of the following nerves innervates -the serratus anterior muscle?" - :choices '("Long thoracic" "Axillary" "Spinal accessory" "Dorsal scapular" "Thoracodorsal") - :correct-answer 1 - :extra "The long thoracic is the only nerve that -innervates the serratus anterior. The axillary nerve innervates the -deltoid, the spinal accessory nerve innervates the sternocleidomastoid -and trapezius, the dorsal scapular nerve supplies the rhomboid muscles -and levator scapulae, and the latissimus dorsi is the muscle supplied -by the thoracodorsal nerve." - :tags (gnosis-dev-random-items gnosis-dev-tags 2)))) - (when (y-or-n-p "Add Basic type questions?") - (dotimes (_ num) - (gnosis-add-note--basic :deck testing-deck - :question "A question" - :hint "hint" - :answer "answer" - :extra "extra" - :tags (gnosis-dev-random-items gnosis-dev-tags 2)))) - (when (y-or-n-p "Add single cloze type?") - (dotimes (_ num) - (gnosis-add-note--cloze :deck testing-deck - :note "this is a {c1:note}" - :hint "note" - :tags (gnosis-dev-random-items gnosis-dev-tags 2) - :extra "extra"))) - (when (y-or-n-p "Add note with multiple clozes?") - (dotimes (_ num) - (gnosis-add-note--cloze :deck testing-deck - :note "this is a {c1:note} with multiple {c1:clozes}" - :hint "note" - :tags (gnosis-dev-random-items gnosis-dev-tags 2) - :extra "extra"))) - (when (y-or-n-p "Add note type y-or-n?") - (dotimes (_ num) - (gnosis-add-note--y-or-n :deck testing-deck - :question "Is Codeine recommended in breastfeeding mothers?" - :hint "hint" - :answer 110 - :extra "extra" - :tags (gnosis-dev-random-items gnosis-dev-tags 2)))))) - -(defun gnosis-dev-test () - "Begin/End testing env. - -If ask nil, leave development env" - (interactive) - (let ((ask (y-or-n-p "Start development env (n for exit)?")) - (testing-dir (expand-file-name gnosis-dir "testing"))) - (if ask - (progn - (unless (file-exists-p testing-dir) - (make-directory testing-dir)) - (setf gnosis-db (emacsql-sqlite-open (expand-file-name "testing.db" testing-dir))) - (setf gnosis-testing t) - (dolist (table '(notes decks review review-log extras)) - (condition-case nil - (gnosis--drop-table table) - (error (message "No %s table to drop." table)))) - (gnosis-db-init) - (gnosis-dev-add-fields) - (message "Adding testing values...") - (message "Development env is ready for testing.")) - (setf gnosis-db (emacsql-sqlite-open (expand-file-name "gnosis.db" gnosis-dir))) - (setf gnosis-testing nil) - (message "Exited development env.")))) - - -(provide 'gnosis-dev) -;;; gnosis-dev.el ends here |