Finish liftin side effects

This commit is contained in:
Jesper 2022-04-13 17:10:08 +02:00
parent 651c14a38b
commit ed7bfb312a

View File

@ -19,7 +19,7 @@ export class GildedRose {
updateQuality() { updateQuality() {
this.items.forEach((item, i) => { this.items.forEach((item, i) => {
item.quality = this.updateItemQuality(item) item.quality = updateItemQuality(item)
if (item.name != 'Sulfuras, Hand of Ragnaros') { if (item.name != 'Sulfuras, Hand of Ragnaros') {
item.sellIn = item.sellIn - 1; item.sellIn = item.sellIn - 1;
@ -30,21 +30,24 @@ export class GildedRose {
return this.items; return this.items;
} }
}
private updateItemQuality(item: Item): number {
function updateItemQuality(item: Item): number {
if (item.name === 'Sulfuras, Hand of Ragnaros') { if (item.name === 'Sulfuras, Hand of Ragnaros') {
return item.quality return item.quality
} }
if (item.name == 'Aged Brie') { if (item.name == 'Aged Brie') {
return this.incrementQuality(item); return incrementQuality(item);
} }
if (item.name == 'Backstage passes to a TAFKAL80ETC concert') { if (item.name == 'Backstage passes to a TAFKAL80ETC concert') {
item.quality = this.incrementQuality(item); let itemCopy = { ...item }
if (item.sellIn < 11) item.quality = this.incrementQuality(item) itemCopy.quality = incrementQuality(itemCopy);
if (item.sellIn < 6) item.quality = this.incrementQuality(item) if (item.sellIn < 11) itemCopy.quality = incrementQuality(itemCopy)
return item.quality if (item.sellIn < 6) itemCopy.quality = incrementQuality(itemCopy)
return itemCopy.quality
} }
if (item.quality > 0) { if (item.quality > 0) {
@ -55,13 +58,12 @@ export class GildedRose {
} }
private incrementQuality(item: Item): number { function incrementQuality(item: Item): number {
if (item.quality < 50) { if (item.quality < 50) {
return item.quality + 1 return item.quality + 1
} }
return item.quality return item.quality
} }
}
function sellInBelow0({quality, name, sellIn}: Item): number { function sellInBelow0({quality, name, sellIn}: Item): number {
if (sellIn >= 0) return quality if (sellIn >= 0) return quality