Compare commits
2 Commits
518373c2bb
...
f64af89e9b
| Author | SHA1 | Date | |
|---|---|---|---|
| f64af89e9b | |||
| 0e9c1dbb01 |
@@ -1,4 +1,3 @@
|
||||
import gleam/dict
|
||||
import gleam/io
|
||||
import gleam/list
|
||||
import gleam/string
|
||||
@@ -50,14 +49,6 @@ pub fn build_commands() -> List(Command) {
|
||||
]
|
||||
}
|
||||
|
||||
pub fn commands_dict(
|
||||
cmds: List(Command),
|
||||
) -> dict.Dict(String, fn(List(Command)) -> Nil) {
|
||||
list.fold(cmds, dict.new(), fn(acc, cmd) {
|
||||
dict.insert(acc, cmd.name, cmd.run)
|
||||
})
|
||||
}
|
||||
|
||||
fn append_history(cmd: String) -> Nil {
|
||||
case simplifile.append(history_file, cmd <> "\n") {
|
||||
Ok(Nil) -> Nil
|
||||
@@ -73,8 +64,8 @@ fn repl_loop(cmds: List(Command)) -> a {
|
||||
"" -> Nil
|
||||
_ -> {
|
||||
input |> append_history
|
||||
case dict.get(commands_dict(cmds), cmd) {
|
||||
Ok(func) -> func(cmds)
|
||||
case list.find(cmds, fn(c) { c.name == cmd }) {
|
||||
Ok(command) -> command.run(cmds)
|
||||
Error(_) -> io.println(input <> ": unknown command")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,17 @@
|
||||
import gleam/dict
|
||||
import gleam/list
|
||||
import gleeunit
|
||||
import gleeunit/should
|
||||
import simple_repl
|
||||
|
||||
pub fn command_lookup_test() {
|
||||
let commands =
|
||||
simple_repl.build_commands()
|
||||
|> simple_repl.commands_dict
|
||||
let commands = simple_repl.build_commands()
|
||||
|
||||
let has_help = case dict.get(commands, "help") {
|
||||
let has_help = case list.find(commands, fn(c) { c.name == "help" }) {
|
||||
Ok(_) -> True
|
||||
Error(_) -> False
|
||||
}
|
||||
|
||||
let has_unknown = case dict.get(commands, "foo") {
|
||||
let has_unknown = case list.find(commands, fn(c) { c.name == "foo" }) {
|
||||
Ok(_) -> True
|
||||
Error(_) -> False
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user