From 319ef5155f7e7f12afefa20a6cb63e1b114fc4d3 Mon Sep 17 00:00:00 2001 From: davidraj Date: Mon, 10 Oct 2022 16:39:28 +0100 Subject: [PATCH] Extacted class --- ruby/gilded_rose.rb | 42 +++---------------------------------- ruby/item_processor.rb | 47 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 39 deletions(-) create mode 100644 ruby/item_processor.rb diff --git a/ruby/gilded_rose.rb b/ruby/gilded_rose.rb index b58bb63b..93da891f 100644 --- a/ruby/gilded_rose.rb +++ b/ruby/gilded_rose.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require File.join(File.dirname(__FILE__), 'item_processor') + class GildedRose def initialize(items) @items = items @@ -7,45 +9,7 @@ class GildedRose def update_quality @items.each do |item| - update_item_quality(item) - end - end - - def update_item_quality(item) - 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 - item.quality = item.quality + 1 if item.quality < 50 - end - if item.sell_in < 6 - item.quality = item.quality + 1 if item.quality < 50 - end - end - end - end - item.sell_in = item.sell_in - 1 if item.name != 'Sulfuras, Hand of Ragnaros' - 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 - item.quality = item.quality + 1 if item.quality < 50 - end + ItemProcessor.new(item).update_item_quality end end end diff --git a/ruby/item_processor.rb b/ruby/item_processor.rb new file mode 100644 index 00000000..3c4533c5 --- /dev/null +++ b/ruby/item_processor.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +class ItemProcessor + attr_accessor :item + + def initialize(item) + @item = item + end + + def update_item_quality + 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 + item.quality = item.quality + 1 if item.quality < 50 + end + if item.sell_in < 6 + item.quality = item.quality + 1 if item.quality < 50 + end + end + end + end + item.sell_in = item.sell_in - 1 if item.name != 'Sulfuras, Hand of Ragnaros' + 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 + item.quality = item.quality + 1 if item.quality < 50 + end + end + end +end