Current section

Files

Jump to
snap_framework lib engine parser primitive.ex
Raw

lib/engine/parser/primitive.ex

defmodule SnapFramework.Parser.Primitive do
require Logger
@moduledoc false
def run(ast) do
ast
|> parse()
end
def parse({:primitive, meta, [name, data, opts]}) when is_list(opts) do
quote line: meta[:line] || 0 do
[
type: :primitive,
module: unquote(name),
data: unquote(data),
opts: unquote(opts)
]
end
end
def parse({:primitive, meta, [name, opts]}) when is_list(opts) do
quote line: meta[:line] || 0 do
[
type: :primitive,
module: unquote(name),
data: nil,
opts: unquote(opts)
]
end
end
def parse({:primitive, meta, [name, data]}) do
quote line: meta[:line] || 0 do
[
type: :primitive,
module: unquote(name),
data: unquote(data),
opts: []
]
end
end
def parse(ast), do: ast
end