GildedRose-Refactoring-Kata/gilded_rose.py
2025-02-06 16:38:04 +10:30

69 lines
1.7 KiB
Python
Executable File

from dataclasses import dataclass
@dataclass
class Item:
name: str
sell_in: int
quality: int
def __repr__(self):
return "%s, %s, %s" % (self.name, self.sell_in, self.quality)
def update_item(item: Item):
if should_do_nothing(item):
return
if is_backstage_pass(item):
return update_backstage_pass(item)
if is_aged_brie(item):
if item.quality < 50:
item.quality = item.quality + 1
item.sell_in = item.sell_in - 1
if item.sell_in < 0:
if item.quality < 50:
item.quality = item.quality + 1
return
if item.quality > 0:
item.quality = item.quality - (1 if item.name != "Conjured" else 2)
item.sell_in = item.sell_in - 1
if item.sell_in < 0:
if item.quality > 0:
item.quality = item.quality - (1 if item.name != "Conjured" else 2)
class GildedRose:
def update_quality(self, items: list[Item]):
for item in items:
update_item(item)
def is_aged_brie(item: Item):
return item.name == "Aged Brie"
def should_do_nothing(item: Item):
return item.name == "Sulfuras, Hand of Ragnaros"
def is_backstage_pass(item: Item):
return item.name == "Backstage passes to a TAFKAL80ETC concert"
def update_backstage_pass(item: Item):
if item.quality < 50:
item.quality = item.quality + 1
if item.sell_in < 11:
if item.quality < 50:
item.quality = item.quality + 1
if item.sell_in < 6:
if item.quality < 50:
item.quality = item.quality + 1
item.sell_in = item.sell_in - 1
if item.sell_in < 0:
item.quality = item.quality - item.quality
return