Packages
metastatic
0.3.4
0.26.0
0.25.0
0.24.1
0.24.0
0.23.0
0.22.2
0.22.1
0.22.0
0.21.3
0.21.2
0.21.1
0.21.0
0.20.3
0.20.2
0.20.1
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.1
0.15.0
0.14.2
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.2
0.4.1
0.4.0
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Cross-language code meta-model library using unified MetaAST representation. Parse, transform, and translate code across Python, Elixir, Ruby, Erlang, Haskell, and more via a shared three-tuple AST format.
Current section
Files
Jump to
Current section
Files
lib/metastatic.ex
defmodule Metastatic do
@moduledoc """
Documentation for `Metastatic`.
"""
@type language :: :elixir | :erlang | :ruby | :haskell | :python
@languages ~w|elixir erlang ruby haskell python|a
@doc false
def languages, do: @languages
@doc false
def supported?(lang) when lang in @languages, do: true
def supported?(_), do: false
@doc false
def adapter_for_language(language)
for lang <- @languages do
mod = Module.concat([Metastatic.Adapters, lang |> Atom.to_string() |> Macro.camelize()])
def adapter_for_language(unquote(lang)), do: {:ok, unquote(mod)}
end
def adapter_for_language(lang),
do: {:error, {:unsupported_language, "No adapter found for language: #{inspect(lang)}"}}
end