mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 12:22:12 +00:00
Merge pull request #144 from Naomi-Dennis/elm
Add elm version of Gilded Rose
This commit is contained in:
commit
6bd9e8e389
5
elm/.gitignore
vendored
Normal file
5
elm/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
elm-stuff
|
||||||
|
# elm-repl generated files
|
||||||
|
repl-temp-*
|
||||||
|
*.src
|
||||||
|
src/index.html
|
||||||
7
elm/README.md
Normal file
7
elm/README.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Gilded Rose (elm)
|
||||||
|
|
||||||
|
To run tests, enter `elm-test`
|
||||||
|
|
||||||
|
### Installing `elm-test`
|
||||||
|
|
||||||
|
https://github.com/elm-explorations/test
|
||||||
28
elm/elm.json
Normal file
28
elm/elm.json
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"type": "application",
|
||||||
|
"source-directories": [
|
||||||
|
"src"
|
||||||
|
],
|
||||||
|
"elm-version": "0.19.1",
|
||||||
|
"dependencies": {
|
||||||
|
"direct": {
|
||||||
|
"elm/browser": "1.0.2",
|
||||||
|
"elm/core": "1.0.4",
|
||||||
|
"elm/html": "1.0.0"
|
||||||
|
},
|
||||||
|
"indirect": {
|
||||||
|
"elm/json": "1.1.3",
|
||||||
|
"elm/time": "1.0.0",
|
||||||
|
"elm/url": "1.0.0",
|
||||||
|
"elm/virtual-dom": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"test-dependencies": {
|
||||||
|
"direct": {
|
||||||
|
"elm-explorations/test": "1.2.2"
|
||||||
|
},
|
||||||
|
"indirect": {
|
||||||
|
"elm/random": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
53
elm/src/GildedRose.elm
Normal file
53
elm/src/GildedRose.elm
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
module GildedRose exposing (Item, update_quality)
|
||||||
|
|
||||||
|
|
||||||
|
type alias Item =
|
||||||
|
{ name : String
|
||||||
|
, sell_by : Int
|
||||||
|
, quality : Int
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
update_quality : List Item -> List Item
|
||||||
|
update_quality items =
|
||||||
|
List.map
|
||||||
|
(\item ->
|
||||||
|
if item.name == "Aged Brie" || item.name == "Backstage passes to a TAFKAL80ETC concert" then
|
||||||
|
if item.quality < 50 then
|
||||||
|
if item.name == "Backstage passes to a TAFKAL80ETC concert" then
|
||||||
|
if item.sell_by < 0 then
|
||||||
|
{ item | sell_by = item.sell_by - 1, quality = 0 }
|
||||||
|
|
||||||
|
else if item.sell_by < 6 then
|
||||||
|
{ item | sell_by = item.sell_by - 1, quality = item.quality + 3 }
|
||||||
|
|
||||||
|
else if item.sell_by < 11 then
|
||||||
|
{ item | sell_by = item.sell_by - 1, quality = item.quality + 2 }
|
||||||
|
|
||||||
|
else
|
||||||
|
{ item | sell_by = item.sell_by - 1, quality = item.quality + 1 }
|
||||||
|
|
||||||
|
else
|
||||||
|
{ item | sell_by = item.sell_by - 1, quality = item.quality + 1 }
|
||||||
|
|
||||||
|
else
|
||||||
|
{ item | sell_by = item.sell_by }
|
||||||
|
|
||||||
|
else if item.name /= "Aged Brie" && item.name /= "Sulfuras, Hand of Ragnaros" then
|
||||||
|
if item.sell_by < 0 && item.quality > 0 then
|
||||||
|
if item.quality >= 2 then
|
||||||
|
{ item | sell_by = item.sell_by - 1, quality = item.quality - 2 }
|
||||||
|
|
||||||
|
else
|
||||||
|
{ item | sell_by = item.sell_by - 1, quality = 0 }
|
||||||
|
|
||||||
|
else if item.quality >= 1 then
|
||||||
|
{ item | sell_by = item.sell_by - 1, quality = item.quality - 1 }
|
||||||
|
|
||||||
|
else
|
||||||
|
{ item | sell_by = item.sell_by - 1, quality = 0 }
|
||||||
|
|
||||||
|
else
|
||||||
|
item
|
||||||
|
)
|
||||||
|
items
|
||||||
7
elm/src/Main.elm
Normal file
7
elm/src/Main.elm
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
module Main exposing (main)
|
||||||
|
|
||||||
|
import Html exposing (..)
|
||||||
|
|
||||||
|
|
||||||
|
main =
|
||||||
|
text "Gilded Rose"
|
||||||
18
elm/tests/GildedRoseTest.elm
Normal file
18
elm/tests/GildedRoseTest.elm
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
module GildedRoseTest exposing (..)
|
||||||
|
|
||||||
|
import Expect exposing (Expectation)
|
||||||
|
import Fuzz exposing (Fuzzer, int, list, string)
|
||||||
|
import GildedRose exposing (..)
|
||||||
|
import Test exposing (..)
|
||||||
|
|
||||||
|
|
||||||
|
suite : Test
|
||||||
|
suite =
|
||||||
|
test "example test"
|
||||||
|
(\_ ->
|
||||||
|
let
|
||||||
|
foo =
|
||||||
|
Item "foo" 10 30
|
||||||
|
in
|
||||||
|
Expect.equal foo.name "fixme"
|
||||||
|
)
|
||||||
Loading…
Reference in New Issue
Block a user