mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-13 05:31:21 +00:00
Fix project structuring
This commit is contained in:
parent
9f9971ebac
commit
9570c122cd
@ -1,4 +1,4 @@
|
|||||||
name = "gilded_rose"
|
name = "program"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
|
||||||
# Fill out these fields if you intend to generate HTML documentation or publish
|
# Fill out these fields if you intend to generate HTML documentation or publish
|
||||||
|
|||||||
@ -1,33 +0,0 @@
|
|||||||
import argv
|
|
||||||
import gilded_rose_item.{type GildedRose}
|
|
||||||
import gleam/function
|
|
||||||
import gleam/io
|
|
||||||
import glint
|
|
||||||
import glint/flag
|
|
||||||
import test_fixture.{simulate}
|
|
||||||
|
|
||||||
pub fn run_cli_app(modify_inventory: fn(GildedRose) -> GildedRose) {
|
|
||||||
let days_flag = "days"
|
|
||||||
|
|
||||||
let number_of_days =
|
|
||||||
flag.int()
|
|
||||||
|> flag.default(2)
|
|
||||||
|> flag.description("Number of days")
|
|
||||||
|
|
||||||
let simulate_inventory = fn() {
|
|
||||||
use input <- glint.command()
|
|
||||||
|
|
||||||
let assert Ok(number_of_days) =
|
|
||||||
flag.get_int(from: input.flags, for: days_flag)
|
|
||||||
simulate(number_of_days, modify_inventory)
|
|
||||||
}
|
|
||||||
|
|
||||||
let app =
|
|
||||||
glint.new()
|
|
||||||
|> glint.with_name("Gilded Rose")
|
|
||||||
|> glint.group_flag([], days_flag, number_of_days)
|
|
||||||
|> glint.add(at: [], do: simulate_inventory())
|
|
||||||
|
|
||||||
io.println("OMGHAI!")
|
|
||||||
glint.run_and_handle(app, argv.load().arguments, function.identity)
|
|
||||||
}
|
|
||||||
@ -1,7 +1,12 @@
|
|||||||
import cli
|
|
||||||
import gilded_rose_item.{type GildedRose, type Item, Item}
|
|
||||||
import gleam/list
|
import gleam/list
|
||||||
|
|
||||||
|
pub type GildedRose =
|
||||||
|
List(Item)
|
||||||
|
|
||||||
|
pub type Item {
|
||||||
|
Item(name: String, sell_in: Int, quality: Int)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn update_quality(inventory: GildedRose) -> GildedRose {
|
pub fn update_quality(inventory: GildedRose) -> GildedRose {
|
||||||
let update_quality_item = fn(item: Item) {
|
let update_quality_item = fn(item: Item) {
|
||||||
let new_quality = case
|
let new_quality = case
|
||||||
@ -102,7 +107,3 @@ pub fn update_quality(inventory: GildedRose) -> GildedRose {
|
|||||||
}
|
}
|
||||||
list.map(inventory, update_quality_item)
|
list.map(inventory, update_quality_item)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
|
||||||
cli.run_cli_app(update_quality)
|
|
||||||
}
|
|
||||||
|
|||||||
@ -1,6 +0,0 @@
|
|||||||
pub type GildedRose =
|
|
||||||
List(Item)
|
|
||||||
|
|
||||||
pub type Item {
|
|
||||||
Item(name: String, sell_in: Int, quality: Int)
|
|
||||||
}
|
|
||||||
@ -1,8 +1,42 @@
|
|||||||
import gilded_rose_item.{type GildedRose, type Item, Item}
|
import argv
|
||||||
|
import gilded_rose.{type GildedRose, type Item, Item, update_quality}
|
||||||
|
import gleam/function
|
||||||
import gleam/int
|
import gleam/int
|
||||||
import gleam/io
|
import gleam/io
|
||||||
import gleam/list
|
import gleam/list
|
||||||
import gleam/string
|
import gleam/string
|
||||||
|
import glint
|
||||||
|
import glint/flag
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
run_cli_app(update_quality)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run_cli_app(modify_inventory: fn(GildedRose) -> GildedRose) {
|
||||||
|
let days_flag = "days"
|
||||||
|
|
||||||
|
let number_of_days =
|
||||||
|
flag.int()
|
||||||
|
|> flag.default(2)
|
||||||
|
|> flag.description("Number of days")
|
||||||
|
|
||||||
|
let simulate_inventory = fn() {
|
||||||
|
use input <- glint.command()
|
||||||
|
|
||||||
|
let assert Ok(number_of_days) =
|
||||||
|
flag.get_int(from: input.flags, for: days_flag)
|
||||||
|
simulate(number_of_days, modify_inventory)
|
||||||
|
}
|
||||||
|
|
||||||
|
let app =
|
||||||
|
glint.new()
|
||||||
|
|> glint.with_name("Gilded Rose")
|
||||||
|
|> glint.group_flag([], days_flag, number_of_days)
|
||||||
|
|> glint.add(at: [], do: simulate_inventory())
|
||||||
|
|
||||||
|
io.println("OMGHAI!")
|
||||||
|
glint.run_and_handle(app, argv.load().arguments, function.identity)
|
||||||
|
}
|
||||||
|
|
||||||
const test_fixture = [
|
const test_fixture = [
|
||||||
Item("+5 Dexterity Vest", 10, 20), Item("Aged Brie", 2, 0),
|
Item("+5 Dexterity Vest", 10, 20), Item("Aged Brie", 2, 0),
|
||||||
@ -1,12 +1,6 @@
|
|||||||
import gilded_rose.{update_quality}
|
import gilded_rose.{Item, update_quality}
|
||||||
import gilded_rose_item.{Item}
|
|
||||||
import gleeunit
|
|
||||||
import gleeunit/should
|
import gleeunit/should
|
||||||
|
|
||||||
pub fn main() {
|
|
||||||
gleeunit.main()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn update_quality_test() {
|
pub fn update_quality_test() {
|
||||||
let inventory = [Item("foo", 0, 0)]
|
let inventory = [Item("foo", 0, 0)]
|
||||||
let assert [new_item] = update_quality(inventory)
|
let assert [new_item] = update_quality(inventory)
|
||||||
|
|||||||
5
gleam/test/program_test.gleam
Normal file
5
gleam/test/program_test.gleam
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import gleeunit
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
gleeunit.main()
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user