# `Surface.AST.Directive`
[🔗](https://github.com/surface-ui/surface/blob/v0.12.3/lib/surface/ast.ex#L159)

An AST node representing a directive

## Properties
    * `:module` - the module which implements logic for this directive (e.g. `Surface.Directive.Let`)
    * `:name` - the name of the directive (e.g. `:let`)
    * `:value` - the code/configuration for this directive. typically a quoted expression
    * `:meta` - compilation meta data

# `t`
[🔗](https://github.com/surface-ui/surface/blob/v0.12.3/lib/surface/ast.ex#L171)

```elixir
@type t() :: %Surface.AST.Directive{
  meta: Surface.AST.Meta.t(),
  module: atom(),
  name: atom(),
  value: Surface.AST.AttributeExpr.t() | Surface.AST.Literal.t() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
