leetcode-tui-core 0.5.2

Leetcode tui related core modules
Documentation
use regex::Regex;

pub(crate) fn replace_script_tags(input: &str) -> String {
    let sup_regex = Regex::new(r"<sup>([^<]+)</sup>").unwrap();
    let sub_regex = Regex::new(r"<sub>([^<]+)</sub>").unwrap();

    let sup_replaced = sup_regex.replace_all(input, |caps: &regex::Captures| {
        convert_to_script(&caps[1], true)
    });

    sub_regex
        .replace_all(&sup_replaced, |caps: &regex::Captures| {
            convert_to_script(&caps[1], false)
        })
        .to_string()
}

fn convert_to_script(text: &str, is_superscript: bool) -> String {
    text.chars()
        .map(|c| match (c, is_superscript) {
            ('0', true) => '',
            ('0', false) => '',
            ('1', true) => '¹',
            ('1', false) => '',
            ('2', true) => '²',
            ('2', false) => '',
            ('3', true) => '³',
            ('3', false) => '',
            ('4', true) => '',
            ('4', false) => '',
            ('5', true) => '',
            ('5', false) => '',
            ('6', true) => '',
            ('6', false) => '',
            ('7', true) => '',
            ('7', false) => '',
            ('8', true) => '',
            ('8', false) => '',
            ('9', true) => '',
            ('9', false) => '',
            ('+', true) => '',
            ('+', false) => '',
            ('-', true) => '',
            ('-', false) => '',
            ('=', true) => '',
            ('=', false) => '',
            ('(', true) => '',
            ('(', false) => '',
            (')', true) => '',
            (')', false) => '',
            ('n', true) => '',
            ('a', false) => '',
            ('i', true) => '',
            ('e', false) => '',
            _ => c,
        })
        .collect()
}