summaryrefslogtreecommitdiff
path: root/gnosis-dev.el
diff options
context:
space:
mode:
authorThanos Apollo <[email protected]>2024-02-06 06:24:24 +0200
committerThanos Apollo <[email protected]>2024-02-06 06:24:24 +0200
commit47b8c3190bf40acc13226aab37d3121e7d932af4 (patch)
treec11968204852d84f28b46654360758230ce0b1bd /gnosis-dev.el
parent83250d05d5a68f01db7754495617467386918464 (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.el134
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