From 1c2ef84b66d9fcbdc8640534beded593eef17ef7 Mon Sep 17 00:00:00 2001 From: Emily Bache Date: Wed, 28 Mar 2012 19:41:41 +0200 Subject: [PATCH] Adding Ruby version of the exercise --- GildedRose/ruby/gilded_rose.rb | 67 +++++++++++++++++++++++++++++ GildedRose/ruby/gilded_rose_spec.rb | 13 ++++++ GildedRose/ruby/main.rb | 33 ++++++++++++++ 3 files changed, 113 insertions(+) create mode 100755 GildedRose/ruby/gilded_rose.rb create mode 100644 GildedRose/ruby/gilded_rose_spec.rb create mode 100644 GildedRose/ruby/main.rb diff --git a/GildedRose/ruby/gilded_rose.rb b/GildedRose/ruby/gilded_rose.rb new file mode 100755 index 00000000..43b43a10 --- /dev/null +++ b/GildedRose/ruby/gilded_rose.rb @@ -0,0 +1,67 @@ + +class GildedRose + def update_quality(items) + items.each do |item| + if item.name != "Aged Brie" and 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" + 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 + items + end +end + +class Item + attr_accessor :name, :sell_in, :quality + + def initialize(name, sell_in, quality) + @name = name + @sell_in = sell_in + @quality = quality + end + + def to_s() + "#{@name}, #{@sell_in}, #{@quality}" + end +end + + diff --git a/GildedRose/ruby/gilded_rose_spec.rb b/GildedRose/ruby/gilded_rose_spec.rb new file mode 100644 index 00000000..a84947d1 --- /dev/null +++ b/GildedRose/ruby/gilded_rose_spec.rb @@ -0,0 +1,13 @@ + +require File.join(File.dirname(__FILE__), 'gilded_rose') + + +describe GildedRose do + + describe "#update_quality" do + items = [Item.new("foo", 0, 0)] + GildedRose.new().update_quality(items) + items[0].name.should == "fixme" + end + +end diff --git a/GildedRose/ruby/main.rb b/GildedRose/ruby/main.rb new file mode 100644 index 00000000..a5426bbb --- /dev/null +++ b/GildedRose/ruby/main.rb @@ -0,0 +1,33 @@ +#!/usr/bin/ruby -w + +require File.join(File.dirname(__FILE__), 'gilded_rose') + +puts "OMGHAI!" +items = [ + Item.new(name="+5 Dexterity Vest", sell_in=10, quality=20), + Item.new(name="Aged Brie", sell_in=2, quality=0), + Item.new(name="Elixir of the Mongoose", sell_in=5, quality=7), + Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=0, quality=80), + Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=-1, quality=80), + Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=15, quality=20), + Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=10, quality=49), + Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=49), + # This Conjured item does not work properly yet + Item.new(name="Conjured Mana Cake", sell_in=3, quality=6), # <-- :O + ] + +days = 2 +if ARGV.size > 0: + days = ARGV[0].to_i + 1 +end + +gilded_rose = GildedRose.new +(0...days).each do |day| + puts "-------- day #{day} --------" + puts "name, sellIn, quality" + items.each do |item| + puts item + end + puts "" + gilded_rose.update_quality(items) +end