defmodule Alchemist.API.Eval do
|
|
|
|
@moduledoc false
|
|
|
|
def request(args) do
|
|
args
|
|
|> normalize
|
|
|> process
|
|
|
|
IO.puts "END-OF-EVAL"
|
|
end
|
|
|
|
def process({:eval, file}) do
|
|
try do
|
|
File.read!("#{file}")
|
|
|> Code.eval_string
|
|
|> Tuple.to_list
|
|
|> List.first
|
|
|> IO.inspect
|
|
rescue
|
|
e -> IO.inspect e
|
|
end
|
|
end
|
|
|
|
def process({:quote, file}) do
|
|
try do
|
|
File.read!("#{file}")
|
|
|> Code.string_to_quoted
|
|
|> Tuple.to_list
|
|
|> List.last
|
|
|> IO.inspect
|
|
rescue
|
|
e -> IO.inspect e
|
|
end
|
|
end
|
|
|
|
def process({:expand, file}) do
|
|
try do
|
|
{_, expr} = File.read!("#{file}")
|
|
|> Code.string_to_quoted
|
|
res = Macro.expand(expr, __ENV__)
|
|
IO.puts Macro.to_string(res)
|
|
rescue
|
|
e -> IO.inspect e
|
|
end
|
|
end
|
|
|
|
def process({:expand_once, file}) do
|
|
try do
|
|
{_, expr} = File.read!("#{file}")
|
|
|> Code.string_to_quoted
|
|
res = Macro.expand_once(expr, __ENV__)
|
|
IO.puts Macro.to_string(res)
|
|
rescue
|
|
e -> IO.inspect e
|
|
end
|
|
end
|
|
|
|
def normalize(request) do
|
|
{expr , _} = Code.eval_string(request)
|
|
expr
|
|
end
|
|
end
|