Code.require_file "../helpers/complete.exs", __DIR__
|
|
|
|
defmodule Alchemist.API.Comp do
|
|
|
|
@moduledoc false
|
|
|
|
alias Alchemist.Helpers.Complete
|
|
|
|
def request(args) do
|
|
args
|
|
|> normalize
|
|
|> process
|
|
end
|
|
|
|
def process([nil, _, imports, _]) do
|
|
Complete.run('', imports) ++ Complete.run('')
|
|
|> print
|
|
end
|
|
|
|
def process([hint, _context, imports, aliases]) do
|
|
Application.put_env(:"alchemist.el", :aliases, aliases)
|
|
|
|
Complete.run(hint, imports) ++ Complete.run(hint)
|
|
|> print
|
|
end
|
|
|
|
defp normalize(request) do
|
|
{{hint, [ context: context,
|
|
imports: imports,
|
|
aliases: aliases ]}, _} = Code.eval_string(request)
|
|
[hint, context, imports, aliases]
|
|
end
|
|
|
|
defp print(result) do
|
|
result
|
|
|> Enum.uniq
|
|
|> Enum.map(&IO.puts/1)
|
|
|
|
IO.puts "END-OF-COMP"
|
|
end
|
|
end
|