defmodule Giocci.CLI.ModuleConverter do @doc """ moduleをBase64エンコードする。 ## Example iex> Giocci.CLI.ModuleConverter.encode(MODULE_NAME) """ def encode(module) do module |> :code.get_object_code() |> :erlang.term_to_binary() |> Base.encode64() end @doc """ Base64エンコードされたmoduleをデコードする。 ## Exmaple iex> Giocci.CLI.ModuleConverter.decode(encode_module) """ def decode(encode_module) do {name, binary, path} = encode_module |> Base.decode64!() |> :erlang.binary_to_term() {name, binary, path} end @doc """ デコードされたmoduleを読み込む。 ## Example iex> Giocci.CLI.ModuleConverter.load({name, binary, path}) or iex> Giocci.CLI.ModuleConverter.decode(encode_module) |> Giocci.CLI.ModuleConverter.load() """ def load({name, binary, path}) do :code.load_binary(name, path, binary) end end