This repository has been archived on 2024-06-16. You can view files and clone it, but cannot push or open issues or pull requests.
mebe/lib/mebe_engine/menuparser.ex
2015-12-10 22:55:36 +02:00

29 lines
706 B
Elixir

defmodule MebeEngine.MenuParser do
@moduledoc """
This module handles the parsing of the menu file, which lists the links in the menu bar.
"""
alias MebeEngine.Models.MenuItem
def parse(data_path) do
(data_path <> "/menu")
|> File.read!
|> split_lines
|> parse_lines
# Filter out nils that come from badly formatted lines
|> Enum.filter(fn item -> item != nil end)
end
defp split_lines(menudata) do
String.split menudata, ~R/\r?\n/
end
defp parse_lines(menulines) do
for line <- menulines do
case String.split line, " " do
[_] -> nil
[link | rest] -> %MenuItem{slug: link, title: Enum.join(rest, " ")}
end
end
end
end