aboutsummaryrefslogtreecommitdiff
path: root/aoc-2020-gleam/src/util/input_util.gleam
blob: 27f300919fea94fba7ab6740a8814920ef44b4c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import gleam/int
import gleam/list
import gleam/bool
import gleam/string as str
import gleam/function as fun
import gleam/erlang/file
import ext/resultx as resx

pub fn read_text(filename: String) -> String {
  { "data/" <> filename <> ".txt" }
  |> file.read
  |> resx.assert_unwrap
}

pub fn read_lines(filename: String) -> List(String) {
  filename
  |> read_text
  |> str.split(on: "\n")
  |> list.map(with: str.trim)
  |> list.filter(for: fun.compose(str.is_empty, bool.negate))
}

pub fn read_numbers(filename: String) -> List(Int) {
  filename
  |> read_lines
  |> list.map(with: fun.compose(int.parse, resx.assert_unwrap))
}