You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

96 lines
2.3 KiB

defmodule Alchemist.Case do
alias Alchemist.Completer
alias Alchemist.Utils
alias Alchemist.Informant
defmodule Complete do
def process! do
:ets.insert(:alchemist, {"aliases", []})
Completer.run('')
|> Enum.map &IO.puts('cmp:' ++ &1)
print_end_of_complete_signal
end
def process!(hint) do
:ets.insert(:alchemist, {"aliases", []})
Completer.run(hint)
|> Enum.map &IO.puts('cmp:' ++ &1)
print_end_of_complete_signal
end
defp print_end_of_complete_signal do
IO.puts "END-OF-COMPLETE"
end
def process_with_context!(hint) do
[hint, modules, aliases] = String.split(hint, ";", parts: 3)
modules = Utils.clear_context_list(modules)
{modules, _} = Code.eval_string(modules)
{aliases, _} = Code.eval_string(aliases)
:ets.insert(:alchemist, {"aliases", aliases})
Completer.run(hint)
|> Enum.map &IO.puts('cmp:' ++ &1)
Enum.each modules, fn(module) ->
Informant.get_functions(module, hint)
|> Enum.map &IO.puts('cmp:' ++ &1)
end
IO.puts "END-OF-COMPLETE-WITH-CONTEXT"
end
end
defmodule Modules do
def process! do
Informant.get_modules |> Enum.map &IO.puts/1
IO.puts "END-OF-MODULES"
end
end
defmodule Doc do
def process!(exp) do
Code.eval_string("import IEx.Helpers \nApplication.put_env(:iex, :colors, [enabled: true])\nh(#{exp})", [], __ENV__)
IO.puts "END-OF-DOC"
end
end
defmodule Eval do
def process!(file) do
try do
File.read!("#{file}")
|> Code.eval_string
|> Tuple.to_list
|> List.first
|> IO.inspect
rescue
e -> IO.inspect e
end
IO.puts "END-OF-EVAL"
end
end
defmodule Quote do
def process!(file) do
try do
File.read!("#{file}")
|> Code.string_to_quoted
|> Tuple.to_list
|> List.last
|> IO.inspect
rescue
e -> IO.inspect e
end
IO.puts "END-OF-QUOTE"
end
end
defmodule Find do
def process!(exp) do
[module, function] = String.split(exp, ",", parts: 2)
module = String.to_char_list module
function = String.to_atom function
Code.eval_string("Alchemist.Source.find(#{module}, :#{function})", [], __ENV__)
IO.puts "END-OF-SOURCE"
end
end
end