cql2 0.5.3

Parse, validate, and convert Common Query Language (CQL2) text and JSON
Documentation
# cql2-rs

[![CI](https://github.com/developmentseed/cql2-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/developmentseed/cql2-rs/actions/workflows/ci.yml)

Parse, validate, and convert [Common Query Language (CQL2)](https://www.ogc.org/standard/cql2/) text and JSON.

## Usage

### API

```toml
[dependencies]
cql = "0.4"
```

Then:

```rust
use cql2::Expr;

let expr: Expr = "landsat:scene_id = 'LC82030282019133LGN00'".parse().unwrap();
assert!(expr.is_valid());
println!("{}", expr.to_json().unwrap());
```

See [the documentation](https://docs.rs/cql2) for more.

## CLI

See [the cql2-cli README](./cli/README.md) for details.

## Responses

Responses may not match the input.

### cql2-text differences

- All identifiers in output are double quoted
- The position of "NOT" keywords is standardized to be before the expression (ie "... NOT LIKE ..." will become "NOT ... LIKE ..."
- The negative operator on anything besides a literal number becomes "* -1"
- Parentheses are added around all expressions

## Development

Get [uv](https://docs.astral.sh/uv/getting-started/installation/) and [Rust](https://rustup.rs/).
Then:

```shell
git clone git@github.com:developmentseed/cql2-rs.git
cd cql2-rs
uv sync
scripts/test
```

To lint all files:

```shell
scripts/lint
```

To serve the docs locally:

```shell
uv run mkdocs serve  # http://127.0.0.1:8000/cql2-rs/
```

See [CONTRIBUTING.md](./CONTRIBUTING.md) for more information about contributing to this project.

## License

**cql2-rs** is licensed under the MIT license.
See [LICENSE](./LICENSE) for details.