# CEL v0.2.0 - API Reference

## Modules

- CEL
  - [CEL](CEL.md): The Common Expression Language (CEL): parse, type-check and evaluate CEL
expressions against variables and messages.
  - [CEL.Checked](CEL.Checked.md): A type-checked CEL expression, from `CEL.check/2`.
  - [CEL.Env](CEL.Env.md): What a CEL expression may use: its variables and their types, custom
functions, and the message and enum types of its `CEL.TypeProvider`. The
standard CEL functions and macros, and CEL's own types, are always
available.
  - [CEL.Expr](CEL.Expr.md): A read-only view of a checked CEL expression, in the spirit of cel-go's
`common/ast`. Get one with `CEL.Checked.expr/1`.
  - [CEL.Field](CEL.Field.md): A field of a message type, as a `CEL.TypeProvider` describes it.
  - [CEL.Function](CEL.Function.md): A custom CEL function, registered with `CEL.Env.build/1`'s `:functions`
option. See the "Custom CEL functions" guide.
  - [CEL.Function.Overload](CEL.Function.Overload.md): One signature of a `CEL.Function`, and the code that evaluates it.
  - [CEL.Program](CEL.Program.md): A checked CEL expression together with the `CEL.Env` it was checked
against, ready to evaluate any number of times.
  - [CEL.Type](CEL.Type.md): CEL types, in the shorthand `CEL` uses wherever it takes or returns a
type: variable declarations in `CEL.Env.build/1`, overload signatures in
`CEL.Function.Overload`, and the types of `CEL.Expr` nodes and
`CEL.Checked.type/2`.
  - [CEL.TypeProvider](CEL.TypeProvider.md): The message and enum types an environment knows, and how to read and build
their values.
  - [CEL.Unknown](CEL.Unknown.md): The result of evaluating a CEL expression whose outcome depends on inputs
that are not known, in the spirit of cel-go's `types.Unknown`.
  - [CEL.Value](CEL.Value.md): CEL values, as evaluation returns them and as variables can be bound.

- CEL expression view
  - [CEL.Expr.Call](CEL.Expr.Call.md): A function call, `f(args)` or `target.f(args)`.
  - [CEL.Expr.Comprehension](CEL.Expr.Comprehension.md): CEL's loop, which comprehension macros expand to. It appears directly in
the tree only for a parsed expression that has one without its macro,
such as one from another CEL implementation.
  - [CEL.Expr.Const](CEL.Expr.Const.md): A literal: `1`, `2u`, `'a'`, `b'a'`, `true`, `null`, ....

  - [CEL.Expr.Ident](CEL.Expr.Ident.md): A name, resolved by the checker.
  - [CEL.Expr.ListLiteral](CEL.Expr.ListLiteral.md): A list literal, `[a, b, ?c]`.
  - [CEL.Expr.MacroCall](CEL.Expr.MacroCall.md): A macro, as written: `l.all(x, p)`, `l.exists(x, p)`, `l.exists_one(x, p)`,
`l.map(x, f)`, `l.map(x, p, f)`, `l.filter(x, p)`, the two-variable forms
such as `m.all(k, v, p)`, `cel.bind(v, init, body)`, `o.optMap(v, f)` and
`o.optFlatMap(v, f)`.
  - [CEL.Expr.MapLiteral](CEL.Expr.MapLiteral.md): A map literal, `{k: v, ?k2: v2}`.
  - [CEL.Expr.MessageLiteral](CEL.Expr.MessageLiteral.md): A message literal, `pkg.Message{field: value, ?other: maybe}`.
  - [CEL.Expr.Select](CEL.Expr.Select.md): A field selection: `operand.field`, or a map lookup written the same way.

- Errors
  - [CEL.Error](CEL.Error.md): Unified error raised by CEL evaluation, including protovalidate `cel` rules.
  - [CEL.OptionError](CEL.OptionError.md): Option failure in a `CEL` entry point: the caller passed options it does not
accept, a known option carried an invalid value, or options were not a
keyword list.

