Skip to main content

link_cli/sequences/
char_to_unicode_symbol_converter.rs

1use crate::link_storage::LinkStorage;
2use crate::sequences::AddressToRawNumberConverter;
3
4#[derive(Clone, Copy, Debug)]
5pub struct CharToUnicodeSymbolConverter {
6    address_to_number_converter: AddressToRawNumberConverter,
7    unicode_symbol_type: u32,
8}
9
10impl CharToUnicodeSymbolConverter {
11    pub fn new(
12        address_to_number_converter: AddressToRawNumberConverter,
13        unicode_symbol_type: u32,
14    ) -> Self {
15        Self {
16            address_to_number_converter,
17            unicode_symbol_type,
18        }
19    }
20
21    pub fn convert(&self, links: &mut LinkStorage, code_unit: u16) -> u32 {
22        let raw_number = self
23            .address_to_number_converter
24            .convert(u32::from(code_unit));
25        links.get_or_create(raw_number, self.unicode_symbol_type)
26    }
27}