mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 20:32:15 +00:00
47 lines
2.4 KiB
Scheme
47 lines
2.4 KiB
Scheme
;;; Class ITEM
|
|
|
|
(define-record-type item (make-item name sell-in quality) item? name sell-in quality)
|
|
;; define-record-type ... SRFI-9
|
|
;; creates make-item, item?, item-name, item-sell-in, item-quality, item-name-set!, item-sell-in-set!, item-quality-set!
|
|
|
|
(define (item-to-string item)
|
|
(string-append (item-name item)
|
|
", "
|
|
(number->string (item-sell-in item))
|
|
", "
|
|
(number->string (item-quality item))))
|
|
|
|
;;; GILDED-ROSE
|
|
|
|
(define (update-quality items)
|
|
(for-each
|
|
(lambda (item)
|
|
(if (and (not (string=? (item-name item) "Aged Brie"))
|
|
(not (string=? (item-name item) "Backstage passes to a TAFKAL80ETC concert")))
|
|
(if (> (item-quality item) 0)
|
|
(if (not (string=? (item-name item) "Sulfuras, Hand of Ragnaros"))
|
|
(item-quality-set! item (- (item-quality item) 1))))
|
|
(cond ((< (item-quality item) 50)
|
|
(item-quality-set! item (+ (item-quality item) 1))
|
|
(if (string=? (item-name item) "Backstage passes to a TAFKAL80ETC concert")
|
|
(if (< (item-sell-in item) 11)
|
|
(if (< (item-quality item) 50)
|
|
(item-quality-set! item (+ (item-quality item) 1))))
|
|
(if (< (item-sell-in item) 6)
|
|
(if (< (item-quality item) 50)
|
|
(item-quality-set! item (+ (item-quality item) 1))))))))
|
|
|
|
(if (not (string=? (item-name item) "Sulfuras, Hand of Ragnaros"))
|
|
(item-sell-in-set! item (- (item-sell-in item) 1)))
|
|
|
|
(if (< (item-sell-in item) 0)
|
|
(if (not (string=? (item-name item) "Aged Brie"))
|
|
(if (not (string=? (item-name item) "Backstage passes to a TAFKAL80ETC concert"))
|
|
(if (> (item-quality item) 0)
|
|
(if (not (string=? (item-name item) "Sulfuras, Hand of Ragnaros"))
|
|
(item-quality-set! item (- (item-quality item) 1))))
|
|
(item-quality-set! item (- (item-quality item) (item-quality item))))
|
|
(if (< (item-quality item) 50)
|
|
(item-quality-set! item (+ (item-quality item) 1))))))
|
|
items))
|