Current section
Files
Jump to
Current section
Files
lib/ua_parser2/parsers/cache.ex
defmodule UAParser2.Parsers.Cache do
use GenServer
alias UAParser2.Parsers.Compiler
def start_link(filename) do
GenServer.start_link(__MODULE__, filename, name: __MODULE__)
end
def get do
GenServer.call(__MODULE__, :get)
end
def init(filename) do
state = %{
filename: filename,
parsers: load_parsers(filename)
}
{:ok, state}
end
def handle_call(:get, _, state) do
{:reply, state[:parsers], state}
end
defp load_parsers(filename) do
case File.regular?(filename) do
false -> {:error, "File #{filename} does not exists!"}
true ->
filename
|> YamlElixir.read_from_file
|> Compiler.compile
end
end
end