makepad_code_editor/
char.rs

1pub trait CharExt {
2    fn is_opening_delimiter(self) -> bool;
3    fn is_closing_delimiter(self) -> bool;
4    fn column_count(self) -> usize;
5    fn opposite_delimiter(&self) -> Option<char>;
6}
7
8impl CharExt for char {
9    fn is_opening_delimiter(self) -> bool {
10        match self {
11            '(' | '[' | '{' => true,
12            _ => false,
13        }
14    }
15
16    fn is_closing_delimiter(self) -> bool {
17        match self {
18            ')' | ']' | '}' => true,
19            _ => false,
20        }
21    }
22
23    fn column_count(self) -> usize {
24        1
25    }
26
27    fn opposite_delimiter(&self) -> Option<char> {
28        Some(match self {
29            '(' => ')',
30            ')' => '(',
31            '[' => ']',
32            ']' => '[',
33            '{' => '}',
34            '}' => '{',
35            _ => return None,
36        })
37    }
38}