Current section

Files

Jump to
umwelt lib umwelt parser defstruct.ex
Raw

lib/umwelt/parser/defstruct.ex

defmodule Umwelt.Parser.Defstruct do
@moduledoc "Parses Struct definition AST"
alias Umwelt.Parser
def parse({:defstruct, _meta, [fields]}, aliases),
do: %{defstruct: parse_children(fields, aliases)}
defp parse_children(fields, aliases),
do: Enum.map(fields, &parse_field(&1, aliases))
def parse_field(field, aliases) when is_atom(field) do
%{
body: to_string(field),
kind: :Field,
type: %{kind: :Literal, type: :anything},
value: Parser.parse(nil, aliases)
}
end
def parse_field({field, value}, aliases) do
%{
body: to_string(field),
kind: :Field,
type: %{kind: :Literal, type: :anything},
value: Parser.parse(value, aliases)
}
end
end