# Celixir v0.2.0 - Table of Contents

A pure Elixir implementation of Google's Common Expression Language (CEL)

## Pages

- [Celixir](readme.md)
- [Changelog](changelog.md)

- Guides
  - [CEL Tutorial](tutorial.md)

## Modules

- [Celixir](Celixir.md): A pure Elixir implementation of Google's Common Expression Language (CEL).
- [Celixir.API](Celixir.API.md): A macro-based way to define CEL function libraries.
- [Celixir.AST](Celixir.AST.md): AST node definitions for the Common Expression Language.

- [Celixir.Checker](Celixir.Checker.md): Static type checker for CEL expressions.
- [Celixir.Environment](Celixir.Environment.md): Execution environment for CEL expressions.
Holds variable bindings, custom function definitions, and an optional type adapter.
- [Celixir.Evaluator](Celixir.Evaluator.md): Tree-walk evaluator for CEL AST nodes.
- [Celixir.Lexer](Celixir.Lexer.md): Tokenizer for the Common Expression Language.
Converts a CEL source string into a list of tokens.

- [Celixir.Parser](Celixir.Parser.md): Recursive descent parser for CEL.
Transforms a token list into an AST.
- [Celixir.Program](Celixir.Program.md): A compiled CEL program — parse once, evaluate many times.
- [Celixir.Proto](Celixir.Proto.md): Proto well-known type support for CEL strict mode.
Handles wrapper types, Value/Struct/ListValue, and TestAllTypes schema.

- [Celixir.Proto.Codec](Celixir.Proto.Codec.md): Protobuf binary codec for Any type support.
- [Celixir.ProtobufAdapter](Celixir.ProtobufAdapter.md): Type adapter for protobuf-elixir generated message structs.
- [Celixir.Sigil](Celixir.Sigil.md): Provides the `~CEL` sigil for compile-time parsing of CEL expressions.
- [Celixir.TypeAdapter](Celixir.TypeAdapter.md): Behaviour for plugging custom type adapters into the CEL evaluator.
- [Celixir.Types.Duration](Celixir.Types.Duration.md): CEL duration type. Stores duration as microseconds internally.
Supports Go-style duration string parsing and arithmetic.

- [Celixir.Types.Optional](Celixir.Types.Optional.md): CEL optional type — represents a value that may or may not be present.
- [Celixir.Types.Timestamp](Celixir.Types.Timestamp.md): CEL timestamp type. Wraps an Elixir DateTime (UTC).
Supports RFC3339 parsing, arithmetic with durations, and accessor methods.

- Extensions
  - [Celixir.Ext.Encoders](Celixir.Ext.Encoders.md): Encoders extension for CEL — mirrors `ext.Encoders()` from cel-go.
  - [Celixir.Ext.Lists](Celixir.Ext.Lists.md): Lists extension for CEL — mirrors `ext.Lists()` from cel-go.
  - [Celixir.Ext.Math](Celixir.Ext.Math.md): Math extension for CEL — mirrors `ext.Math()` from cel-go.
  - [Celixir.Ext.Regex](Celixir.Ext.Regex.md): Regex extension for CEL — mirrors `ext.Regex()` from cel-go.
  - [Celixir.Ext.Sets](Celixir.Ext.Sets.md): Sets extension for CEL — mirrors `ext.Sets()` from cel-go.
  - [Celixir.Ext.Strings](Celixir.Ext.Strings.md): Strings extension for CEL — mirrors `ext.Strings()` from cel-go.

- Exceptions
  - [Celixir.Error](Celixir.Error.md): Exception raised by bang functions on CEL evaluation failure.

