Packages
surface
0.3.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.1
0.1.0
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha.0
A component based library for Phoenix LiveView
Current section
Files
Jump to
Current section
Files
lib/surface/io_helper.ex
defmodule Surface.IOHelper do
@moduledoc false
def warn(message, caller, update_line_fun) do
stacktrace =
caller
|> Macro.Env.stacktrace()
|> update_line(update_line_fun)
IO.warn(message, stacktrace)
end
@spec compile_error(String.t(), String.t(), integer()) :: no_return()
def compile_error(message, file, line) do
reraise(%CompileError{line: line, file: file, description: message}, [])
end
@spec syntax_error(String.t(), String.t(), integer()) :: no_return()
def syntax_error(message, file, line) do
reraise(%SyntaxError{line: line, file: file, description: message}, [])
end
@spec runtime_error(String.t()) :: no_return()
def runtime_error(message) do
stacktrace =
self()
|> Process.info(:current_stacktrace)
|> elem(1)
|> Enum.drop(2)
reraise(message, stacktrace)
end
defp update_line([{a, b, c, [d, {:line, line}]}], fun) do
[{a, b, c, [d, {:line, fun.(line)}]}]
end
end