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