From f6454c0eb90bd54fd0a2efe9949c0407d7667cc4 Mon Sep 17 00:00:00 2001 From: AkashMw <60785148+AkashMw@users.noreply.github.com> Date: Fri, 19 Jan 2024 19:14:27 +0530 Subject: [PATCH] Update gilded_rose.rb - Added new item category "Conjured" - refactor update qwality function --- ruby/gilded_rose.rb | 82 ++++++++++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 31 deletions(-) diff --git a/ruby/gilded_rose.rb b/ruby/gilded_rose.rb index e177a497..3b17344a 100644 --- a/ruby/gilded_rose.rb +++ b/ruby/gilded_rose.rb @@ -6,44 +6,43 @@ class GildedRose def update_quality() @items.each do |item| - if item.name != "Aged Brie" and item.name != "Backstage passes to a TAFKAL80ETC concert" + + if item.name != "Aged Brie" && item.name != "Backstage passes to a TAFKAL80ETC concert" if item.quality > 0 if item.name != "Sulfuras, Hand of Ragnaros" item.quality = item.quality - 1 - end - end - else - if item.quality < 50 - item.quality = item.quality + 1 - if item.name == "Backstage passes to a TAFKAL80ETC concert" - if item.sell_in < 11 - if item.quality < 50 - item.quality = item.quality + 1 - end - end - if item.sell_in < 6 - if item.quality < 50 - item.quality = item.quality + 1 - end - end - end - end - end - if item.name != "Sulfuras, Hand of Ragnaros" - item.sell_in = item.sell_in - 1 - end - if item.sell_in < 0 - if item.name != "Aged Brie" - if item.name != "Backstage passes to a TAFKAL80ETC concert" - if item.quality > 0 - if item.name != "Sulfuras, Hand of Ragnaros" + if item.name == "Conjured" + if item.quality > 0 item.quality = item.quality - 1 end end - else - item.quality = item.quality - item.quality end - else + + end + else + handle_qwality(item) + end + + if item.name != "Sulfuras, Hand of Ragnaros" + item.sell_in = item.sell_in - 1 + end + + update_sell_in(item) + end + end + + private + + def handle_qwality(item) + if item.quality < 50 + item.quality = item.quality + 1 + if item.name == "Backstage passes to a TAFKAL80ETC concert" + if item.sell_in < 11 + if item.quality < 50 + item.quality = item.quality + 1 + end + end + if item.sell_in < 6 if item.quality < 50 item.quality = item.quality + 1 end @@ -51,8 +50,29 @@ class GildedRose end end end + + def update_sell_in(item) + if item.sell_in < 0 + if item.name != "Aged Brie" + if item.name != "Backstage passes to a TAFKAL80ETC concert" + if item.quality > 0 + if item.name != "Sulfuras, Hand of Ragnaros" + item.quality = item.quality - 1 + end + end + else + item.quality = item.quality - item.quality + end + else + if item.quality < 50 + item.quality = item.quality + 1 + end + end + end + end end + class Item attr_accessor :name, :sell_in, :quality