Current section

Files

Jump to
surface lib surface directive if.ex
Raw

lib/surface/directive/if.ex

defmodule Surface.Directive.If do
use Surface.Directive
def extract({":if", {:attribute_expr, value, expr_meta}, attr_meta}, meta) do
%AST.Directive{
module: __MODULE__,
name: :if,
value: directive_value(value, Helpers.to_meta(expr_meta, meta)),
meta: Helpers.to_meta(attr_meta, meta)
}
end
def extract(_, _), do: []
def process(%AST.Directive{value: %AST.AttributeExpr{} = expr, meta: meta}, node),
do: %AST.If{condition: expr, children: [node], meta: meta}
defp directive_value(value, meta) do
AST.AttributeExpr.new(
Surface.TypeHandler.expr_to_quoted!(value, ":if", :boolean, meta),
value,
meta
)
end
end