ct_regex_internal/codegen/convert_hir/
item.rs1use regex_syntax::hir::Class;
2
3use crate::{codegen::IntoMatcherExpr, haystack::HaystackItem};
4
5pub trait CodegenItem: HaystackItem + IntoMatcherExpr + NormalizeClass {}
6
7impl CodegenItem for u8 {}
8impl CodegenItem for char {}
9
10pub trait NormalizeClass {
11 fn normalize_class(value: Class) -> Class;
12}
13
14impl NormalizeClass for u8 {
15 fn normalize_class(value: Class) -> Class {
16 match value {
17 Class::Unicode(unicode) => Class::Bytes(
18 unicode.to_byte_class().expect("failed to convert to byte class")
19 ),
20 Class::Bytes(bytes) => Class::Bytes(bytes),
21 }
22 }
23}
24
25impl NormalizeClass for char {
26 fn normalize_class(value: Class) -> Class {
27 match value {
28 Class::Unicode(unicode) => Class::Unicode(unicode),
29 Class::Bytes(bytes) => Class::Unicode(
30 bytes.to_unicode_class().expect("failed to convert to unicode class")
31 ),
32 }
33 }
34}