mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-17 23:41:27 +00:00
Delete haskell directory
This commit is contained in:
parent
aa5356588b
commit
a6a74e943c
11
haskell/.gitignore
vendored
11
haskell/.gitignore
vendored
@ -1,11 +0,0 @@
|
|||||||
*.hi
|
|
||||||
*.ho
|
|
||||||
TAGS
|
|
||||||
*.log
|
|
||||||
*.profile
|
|
||||||
/dist
|
|
||||||
/cabal.config
|
|
||||||
|
|
||||||
/.cabal-sandbox/
|
|
||||||
/cabal.sandbox.config
|
|
||||||
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
# Haskell port of the Gilded-Rose Kata
|
|
||||||
|
|
||||||
This is a Haskell port of the *Gilded-Rose-Kata*.
|
|
||||||
|
|
||||||
## Prerequisite
|
|
||||||
|
|
||||||
If you don't have a recent Stack version installed in your system, follow the
|
|
||||||
[installation instructions](https://docs.haskellstack.org/en/stable/install_and_upgrade/)
|
|
||||||
for your operating system.
|
|
||||||
|
|
||||||
## Building and Running
|
|
||||||
|
|
||||||
Run `stack build` initially, then `stack test` to execute the tests after
|
|
||||||
each refactoring.
|
|
||||||
|
|
||||||
To execute the program run `stack run [days]` where `[days]` denotes an optional
|
|
||||||
parameter for the number of days to simulate.
|
|
||||||
|
|
||||||
Tests are in `test/GildedRoseSpec.hs`. Refer to http://hspec.github.io/ for
|
|
||||||
more information about writing tests using `Hspec`.
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
name: gilded-rose
|
|
||||||
version: 0.1.0.0
|
|
||||||
synopsis: Haskell-port of the gilded rose kata
|
|
||||||
license: GPL
|
|
||||||
author: Sven Heyll
|
|
||||||
maintainer: sven.heyll@gmail.com
|
|
||||||
category: System
|
|
||||||
build-type: Simple
|
|
||||||
cabal-version: >=1.10
|
|
||||||
|
|
||||||
library
|
|
||||||
exposed-modules: GildedRose
|
|
||||||
build-depends: base >=4.7
|
|
||||||
hs-source-dirs: src
|
|
||||||
default-language: Haskell2010
|
|
||||||
|
|
||||||
executable gilded-rose
|
|
||||||
main-is: Main.hs
|
|
||||||
build-depends: gilded-rose, base >=4.7
|
|
||||||
hs-source-dirs: src
|
|
||||||
default-language: Haskell2010
|
|
||||||
other-modules: GildedRose
|
|
||||||
|
|
||||||
test-suite spec
|
|
||||||
type: exitcode-stdio-1.0
|
|
||||||
ghc-options: -Wall
|
|
||||||
hs-source-dirs: test
|
|
||||||
default-language: Haskell2010
|
|
||||||
main-is: Spec.hs
|
|
||||||
other-modules: GildedRoseSpec
|
|
||||||
build-depends: base >=4.7
|
|
||||||
, gilded-rose
|
|
||||||
, hspec
|
|
||||||
, hspec-expectations
|
|
||||||
, QuickCheck
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
module GildedRose where
|
|
||||||
|
|
||||||
type GildedRose = [Item]
|
|
||||||
|
|
||||||
data Item = Item String Int Int
|
|
||||||
deriving (Eq)
|
|
||||||
|
|
||||||
instance Show Item where
|
|
||||||
show (Item name sellIn quality) =
|
|
||||||
name ++ ", " ++ show sellIn ++ ", " ++ show quality
|
|
||||||
|
|
||||||
updateQuality :: GildedRose -> GildedRose
|
|
||||||
updateQuality = map updateQualityItem
|
|
||||||
where
|
|
||||||
updateQualityItem (Item name sellIn quality) =
|
|
||||||
let
|
|
||||||
quality' =
|
|
||||||
if name /= "Aged Brie"
|
|
||||||
&& name /= "Backstage passes to a TAFKAL80ETC concert"
|
|
||||||
then
|
|
||||||
if quality > 0
|
|
||||||
then
|
|
||||||
if name /= "Sulfuras, Hand of Ragnaros"
|
|
||||||
then quality - 1
|
|
||||||
else quality
|
|
||||||
else quality
|
|
||||||
else
|
|
||||||
if quality < 50
|
|
||||||
then
|
|
||||||
quality + 1 +
|
|
||||||
(if name == "Backstage passes to a TAFKAL80ETC concert"
|
|
||||||
then
|
|
||||||
if sellIn < 11
|
|
||||||
then
|
|
||||||
if quality < 49
|
|
||||||
then
|
|
||||||
1 + (if sellIn < 6
|
|
||||||
then
|
|
||||||
if quality < 48
|
|
||||||
then 1
|
|
||||||
else 0
|
|
||||||
else 0)
|
|
||||||
else 0
|
|
||||||
else 0
|
|
||||||
else 0)
|
|
||||||
else quality
|
|
||||||
|
|
||||||
sellIn' =
|
|
||||||
if name /= "Sulfuras, Hand of Ragnaros"
|
|
||||||
then sellIn - 1
|
|
||||||
else sellIn
|
|
||||||
in
|
|
||||||
if sellIn' < 0
|
|
||||||
then
|
|
||||||
if name /= "Aged Brie"
|
|
||||||
then
|
|
||||||
if name /= "Backstage passes to a TAFKAL80ETC concert"
|
|
||||||
then
|
|
||||||
if quality' > 0
|
|
||||||
then
|
|
||||||
if name /= "Sulfuras, Hand of Ragnaros"
|
|
||||||
then (Item name sellIn' (quality' - 1))
|
|
||||||
else (Item name sellIn' quality')
|
|
||||||
else (Item name sellIn' quality')
|
|
||||||
else (Item name sellIn' (quality' - quality'))
|
|
||||||
else
|
|
||||||
if quality' < 50
|
|
||||||
then (Item name sellIn' (quality' + 1))
|
|
||||||
else (Item name sellIn' quality')
|
|
||||||
else (Item name sellIn' quality')
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
module Main where
|
|
||||||
|
|
||||||
import System.Environment
|
|
||||||
import GildedRose
|
|
||||||
|
|
||||||
|
|
||||||
main :: IO ()
|
|
||||||
main = do
|
|
||||||
putStrLn "OMGHAI!"
|
|
||||||
|
|
||||||
let inventoriesWithDay = inventories `zip` [0..]
|
|
||||||
inventories = iterate updateQuality initialInventory
|
|
||||||
|
|
||||||
numberOfDays <- daysFromArg
|
|
||||||
mapM_ printUpdate (take numberOfDays inventoriesWithDay)
|
|
||||||
|
|
||||||
where
|
|
||||||
printUpdate :: (GildedRose, Int) -> IO ()
|
|
||||||
printUpdate (items, day) = do
|
|
||||||
putStrLn ("-------- day " ++ show day ++ " --------")
|
|
||||||
putStrLn "name, sellIn, quality"
|
|
||||||
mapM_ (putStrLn . show) items
|
|
||||||
putStrLn ""
|
|
||||||
|
|
||||||
daysFromArg :: IO Int
|
|
||||||
daysFromArg = do
|
|
||||||
args <- getArgs
|
|
||||||
return $ if length args > 0
|
|
||||||
then read (head args)
|
|
||||||
else 20
|
|
||||||
|
|
||||||
initialInventory :: GildedRose
|
|
||||||
initialInventory =
|
|
||||||
[ Item "+5 Dexterity Vest" 10 20
|
|
||||||
, Item "Aged Brie" 2 0
|
|
||||||
, Item "Elixir of the Mongoose" 5 7
|
|
||||||
, Item "Sulfuras, Hand of Ragnaros" 0 80
|
|
||||||
, Item "Sulfuras, Hand of Ragnaros" (-1) 80
|
|
||||||
, Item "Backstage passes to a TAFKAL80ETC concert" 15 20
|
|
||||||
, Item "Backstage passes to a TAFKAL80ETC concert" 10 49
|
|
||||||
, Item "Backstage passes to a TAFKAL80ETC concert" 5 49
|
|
||||||
-- this conjured item does not work properly yet
|
|
||||||
, Item "Conjured Mana Cake" 3 6
|
|
||||||
]
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
resolver: lts-12.14
|
|
||||||
packages:
|
|
||||||
- .
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
module GildedRoseSpec (spec) where
|
|
||||||
|
|
||||||
import Test.Hspec
|
|
||||||
import GildedRose
|
|
||||||
|
|
||||||
spec :: Spec
|
|
||||||
spec =
|
|
||||||
describe "updateQuality" $ do
|
|
||||||
|
|
||||||
it "fixme" $
|
|
||||||
let inventory = [Item "foo" 0 0]
|
|
||||||
actual = updateQuality inventory
|
|
||||||
expected = []
|
|
||||||
in actual `shouldBe` expected
|
|
||||||
@ -1 +0,0 @@
|
|||||||
{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
|
|
||||||
Loading…
Reference in New Issue
Block a user