From c2f3318e0405de978cf078cbb9877b9a9f82d123 Mon Sep 17 00:00:00 2001 From: Lucas Christian Date: Thu, 22 Oct 2026 16:15:40 -0300 Subject: [PATCH] feat: add support for moddified ignore case --- README.md | 2 +- docs/reference/operators.md | 2 +- docs/usage/sort.md | 1 + pyproject.toml | 2 +- src/pyrsql/sorting/parser.py | 2 +- tests/unit/sorting/test_parser.py | 7 +++++++ 6 files changed, 12 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1148861..91ef341 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ stmt = pyrsql.PageRequest.of(0, 25).apply(stmt, User, orm=orm) ### Sort - Multi-field: `name,asc;company.name,desc,ic` -- Ignore-case modifier (`ic`) +- Ignore-case modifier (`ic` or `ignorecase`) - Function selectors: `@upper[name],asc` ### Pagination diff --git a/docs/reference/operators.md b/docs/reference/operators.md index 45c4956..5db22a6 100644 --- a/docs/reference/operators.md +++ b/docs/reference/operators.md @@ -48,4 +48,4 @@ markers. Use `=in=(*)` to match a literal asterisk. |----------|---------|-------------| | `asc` | `name,asc` | Ascending (default) | | `desc` | `name,desc` | Descending | -| `ic` | `name,desc,ic` | Ignore case | +| `ic`, `ignorecase` | `name,desc,ic` | Ignore case | diff --git a/docs/usage/sort.md b/docs/usage/sort.md index 31beb4f..664ce30 100644 --- a/docs/usage/sort.md +++ b/docs/usage/sort.md @@ -20,6 +20,7 @@ Sort.parse("name,asc;company.name,desc") ```python Sort.parse("name,desc,ic") # case-insensitive descending +Sort.parse("name,desc,ignorecase") # same modifier, spelled out ``` ## Function selectors diff --git a/pyproject.toml b/pyproject.toml index 0fd7ab3..428d8ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "pyrsql" -version = "0.0.5" +version = "0.0.6" description = "Compiler-oriented RSQL query engine for safe, typed, and extensible Python ORM-backed APIs." readme = "README.md" requires-python = ">=3.11" diff --git a/src/pyrsql/sorting/parser.py b/src/pyrsql/sorting/parser.py index a9fed45..e4910e1 100644 --- a/src/pyrsql/sorting/parser.py +++ b/src/pyrsql/sorting/parser.py @@ -185,7 +185,7 @@ def _parse_ignore_case( SortParseError: If the modifier is unsupported. """ match raw_flag.strip().lower(): - case "ic": + case "ic" | "ignorecase": return True case _: raise SortParseError( diff --git a/tests/unit/sorting/test_parser.py b/tests/unit/sorting/test_parser.py index 588b03a..b2838c2 100644 --- a/tests/unit/sorting/test_parser.py +++ b/tests/unit/sorting/test_parser.py @@ -28,6 +28,13 @@ True, id="direction-and-ignore-case", ), + pytest.param( + "company.name,desc,ignorecase", + "company.name", + SortDirection.DESCENDING, + True, + id="direction-and-ignorecase-alias", + ), pytest.param( " company.name , desc , ic ", "company.name",