portingtools/lib/portingtools/resourceloc.ex

33 lines
759 B
Elixir

defmodule PortingTools.ResourceLoc do
use GenServer, restart: :transient
require Logger
def start_link(_) do
GenServer.start_link(__MODULE__, nil, name: __MODULE__)
end
def init(_init_arg) do
Logger.info("Initializing Resourceloc server @ #{__MODULE__}")
{:ok, nil}
end
def resolve(str) do
GenServer.call(__MODULE__, {:resolve, str})
end
def handle_call({:resolve, str}, _from, state) do
Logger.info("Got resolve request")
try do
["mods", mod | rest] =
String.trim(str)
|> String.trim(<<?">>)
|> String.split("/", trim: true)
{:reply, ~s<new ResourceLocation("#{mod}", "#{Enum.join(rest, "/")}")>, state}
rescue
MatchError -> {:reply, nil, state}
end
end
end