My first impressions of Gleam
Первые впечатления о Gleam
Ищу новый язык для изучения и выбрал Gleam — это «эликсир» со статической типизацией.
Чтобы понять, подойдёт ли он, решил переписать старый pet-project: парсер логов AIM 1999-2007 гг.
Формат простейших логов — plain-text:
Session Start (DumbAIMScreenName:Jane): Mon Sep 12 18:44:17 2005
[18:44] Jane: hi
[18:55] Me: hey whats up
Session Close (Jane): Mon Sep 12 18:56:02 2005
Цель: вытащить только тексты сообщений, потом добавить метаданные и веб-интерфейс.
CLI-аргументы
Стандартной библиотеки для argv нет.
Сторонний пакет argv решает задачу в 4 строки:
case argv.load().arguments {
[path] -> io.println("arg: " <> path)
_ -> io.println("Usage: gleam run <dir>")
}
Компиляция
gleam build собирает проект, но исполняемого файла не создаёт.
В build/dev/erlang/... появляются .beam-файлы — байт-код для BEAM-ВМ.
Запускать удобнее через gleam run.
Парсер
Начал с теста: функция принимает многострочный текст и возвращает список сообщений.
plaintext_logs.parse(log)
|> should.equal(["hi", "hey whats up"])
Дальше — добавлю структуру Message {time, author, text} и разберу XML/HTML-логи.