# manual-ascii-check

Prefer character predicates over ASCII range checks

Standard ASCII ranges written as comparisons, range membership, or patterns obscure their character class.
Instead, you SHOULD call the corresponding `isAscii` character predicate.

- Category: style
- Level: warning
- Fix: automatic
- Scope: module

## Reported

```ds title="main.ds"
function isLowercase(character: char): boolean {
    return character >= 'a' && character <= 'z';
}
```

## Accepted

```ds title="main.ds"
function isLowercase(character: char): boolean {
    return character.isAsciiLowercase();
}
```

## Prior art

- [Clippy · manual_is_ascii_check](https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check)

[language/linter/src/rules/style/manual_ascii_check.rs:8](https://github.com/destack-sh/destack/blob/main/language/linter/src/rules/style/manual_ascii_check.rs#L8)
