Current section
Files
Jump to
Current section
Files
lib/parser/type_matcher.ex
defmodule FinTex.Parser.TypeMatcher do
@moduledoc false
defmacro handle(segment, function, version \\ nil) do
quote do
[[name | _] | _] = unquote(segment)
module = Module.concat [Elixir, FinTex, Segment, String.upcase name]
case Code.ensure_loaded?(module) && function_exported?(module, unquote(function), 2) do
true ->
apply(module, unquote(function), [unquote(segment), unquote(version)])
false ->
case function_exported?(module, unquote(function), 1) do
true -> apply(module, unquote(function), [unquote(segment)])
false -> unquote(segment)
end
end
end
end
end