mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 04:12:13 +00:00
88 lines
2.8 KiB
Erlang
88 lines
2.8 KiB
Erlang
-module(gilded_rose).
|
|
|
|
-include("gilded_rose.hrl").
|
|
|
|
-export([
|
|
update_quality/1
|
|
]).
|
|
|
|
-spec update_quality([#item{}]) -> [#item{}].
|
|
update_quality(Items) ->
|
|
lists:map(fun update_item/1, Items).
|
|
|
|
-spec update_item(#item{}) -> #item{}.
|
|
update_item(Item = #item{name = Name}) ->
|
|
Item1 = if
|
|
Name /= "Aged Brie" andalso Name /= "Backstage passes to a TAFKAL80ETC concert" ->
|
|
if
|
|
Item#item.quality > 0 ->
|
|
if
|
|
Name /= "Sulfuras, Hand of Ragnaros" ->
|
|
Item#item{quality = Item#item.quality - 1};
|
|
true ->
|
|
Item
|
|
end;
|
|
true ->
|
|
Item
|
|
end;
|
|
true ->
|
|
if
|
|
Item#item.quality < 50 ->
|
|
Item2 = Item#item{quality = Item#item.quality + 1},
|
|
if
|
|
Name == "Backstage passes to a TAFKAL80ETC concert" ->
|
|
Item3 = if
|
|
Item2#item.sell_in < 11 ->
|
|
if
|
|
Item2#item.quality < 50 ->
|
|
Item2#item{quality = Item2#item.quality + 1};
|
|
true -> Item2
|
|
end;
|
|
true -> Item2
|
|
end,
|
|
if
|
|
Item3#item.sell_in < 6 ->
|
|
if
|
|
Item3#item.quality < 50 ->
|
|
Item3#item{quality = Item3#item.quality + 1};
|
|
true -> Item3
|
|
end;
|
|
true -> Item3
|
|
end;
|
|
true -> Item2
|
|
end;
|
|
true -> Item
|
|
end
|
|
end,
|
|
Item4 = if
|
|
Name /= "Sulfuras, Hand of Ragnaros" ->
|
|
Item1#item{sell_in = Item1#item.sell_in - 1};
|
|
true -> Item1
|
|
end,
|
|
if
|
|
Item4#item.sell_in < 0 ->
|
|
if
|
|
Name /= "Aged Brie" ->
|
|
if
|
|
Name /= "Backstage passes to a TAFKAL80ETC concert" ->
|
|
if
|
|
Item4#item.quality > 0 ->
|
|
if
|
|
Name /= "Sulfuras, Hand of Ragnaros" ->
|
|
Item4#item{quality = Item4#item.quality - 1};
|
|
true -> Item4
|
|
end;
|
|
true -> Item4
|
|
end;
|
|
true -> Item4#item{quality = Item4#item.quality - Item4#item.quality}
|
|
end;
|
|
true ->
|
|
if
|
|
Item4#item.quality < 50 ->
|
|
Item4#item{quality = Item4#item.quality + 1};
|
|
true -> Item4
|
|
end
|
|
end;
|
|
true -> Item4
|
|
end.
|