GildedRose-Refactoring-Kata/elisp/gilded-rose.el
mgd e9cf5311fd Further Amendments
- removed the cond statement and replaced with nested ifs
- removed the let statement. Data is now accesses directly
- update-quality now takes a list of items
2024-10-18 15:32:03 +02:00

28 lines
1.2 KiB
EmacsLisp

(defun make-item (name sell-in quality)
"Create an item with NAME, SELL-IN, and QUALITY."
(list :name name :sell-in sell-in :quality quality))
(defun update-quality (items)
(dolist (item items)
(if (string= (plist-get item :name) "Aged Brie")
(plist-put item :quality (min 50 (1+ (plist-get item :quality))))
(if (string= (plist-get item :name) "Backstage passes")
(if (> (plist-get item :sell-in) 10)
(plist-put item :quality (plist-get item :quality))
(if (and (<= (plist-get item :sell-in) 10) (> (plist-get item :sell-in) 5))
(plist-put item :quality (min 50 (+ (plist-get item :quality) 2)))
(if (and (<= (plist-get item :sell-in) 5) (> (plist-get item :sell-in) 0))
(plist-put item :quality (min 50 (+ (plist-get item :quality) 3)))
(plist-put item :quality 0))))
(if (string= (plist-get item :name) "Sulfuras")
(plist-put item :quality (plist-get item :quality))
(plist-put item :quality (max 0 (1- (plist-get item :quality)))))))))
(provide 'gilded-rose)