bernardo-tui 0.2.7

A keyboard-only, distraction-free TUI widget library
Documentation
// use std::time::Duration;
// use regex_automata::{hybrid::regex::Regex};
// use regex_automata::hybrid::{CacheError, LazyStateID};
// use crate::experiments::regex_search::RegexSearchError::PatternBuild;
// use crate::text::buffer::Buffer;
// use unicode_segmentation::UnicodeSegmentation;
// use unicode_width::UnicodeWidthStr;
//
// enum RegexSearchError {
//     PatternBuild,
//     BeginIdxTooFar,
//     CacheError,
// }
//
// fn stuff(pattern: &str,
//          deadline: Duration,
//          buffer: &dyn Buffer,
//          begin_idx_char: usize) -> Result<usize, RegexSearchError> {
//     let regex = Regex::new(pattern).map_err(|_| RegexSearchError::PatternBuild)?;
//     let fa = regex.forward();
//     let mut cache = fa.create_cache();
//
//     let mut chunk_it = buffer.chunks().peekable();
//     let mut prefix_len_chars = 0 as usize;
//     let mut found = false;
//     let mut skip_bytes: usize = 0;
//
//     while let Some(s) = chunk_it.peek() {
//         if s.len() + prefix_len_chars > begin_idx_char {
//             found = true;
//             debug_assert!(begin_idx_char > prefix_len_chars);
//             skip_bytes = begin_idx_char - prefix_len_chars;
//             break;
//         }
//         prefix_len_chars += s.len();
//         chunk_it.next();
//     }
//
//     if !found {
//         return Err(RegexSearchError::BeginIdxTooFar);
//     }
//
//     let mut state = {
//         let bytes = chunk_it.peek().unwrap();
//
//         fa.start_state_forward(
//             &mut cache,
//             None,
//             bytes.as_bytes(),
//             begin_idx_char - prefix_len_chars,
//             bytes.len(),
//         ).map_err(|_| RegexSearchError::CacheError)?
//     };
//
//
//     while let Some(s) = chunk_it.next() {
//         for byte in s.bytes().skip(skip_bytes) {
//             state = fa.next_state(
//                 &mut cache,
//                 state,
//                 byte,
//             ).map_err(|_| RegexSearchError::CacheError)?;
//
//             if fa.match_count(&cache, state) != 0 {}
//         }
//         skip_bytes = 0;
//     }
//
//
//     Ok(0)
// }