diff --git a/scie-scanner/src/scanner/old/mod.rs b/scie-scanner/src/scanner/old/mod.rs index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..20e2337a3964bf7ecb3bd6b175b556d41daf1d31 100644 --- a/scie-scanner/src/scanner/old/mod.rs +++ b/scie-scanner/src/scanner/old/mod.rs @@ -0,0 +1,3 @@ +pub mod scie_scanner; +pub mod scie_onig; +pub mod scie_error; \ No newline at end of file diff --git a/scie-scanner/src/scanner/old/scie_onig.rs b/scie-scanner/src/scanner/old/scie_onig.rs index e225001ccfc90c8a714bf8c3a570b587106e894d..5c2ef97219092646a984f7ccb2b14cc6d593dd98 100644 --- a/scie-scanner/src/scanner/old/scie_onig.rs +++ b/scie-scanner/src/scanner/old/scie_onig.rs @@ -3,7 +3,7 @@ use std::ptr::null_mut; use onig::{Syntax, EncodedChars}; use std::sync::Mutex; -use crate::scanner::scie_error::ScieOnigError; +use crate::scanner::old::scie_error::ScieOnigError; lazy_static! { static ref REGEX_NEW_MUTEX: Mutex<()> = Mutex::new(()); @@ -21,9 +21,6 @@ pub struct ScieOnig { } impl ScieOnig { - pub fn new(pattern: &str) -> Result { - - } pub fn demo_new(pattern: &str) -> Result { let option = ScieOnigOptions::REGEX_OPTION_NONE; let syntax = Syntax::default(); @@ -69,7 +66,7 @@ impl ScieOnig { #[cfg(test)] mod tests { - use crate::scanner::scie_onig::ScieOnig; + use crate::scanner::old::scie_onig::ScieOnig; #[test] fn it_works() { diff --git a/scie-scanner/src/scanner/old/scie_scanner.rs b/scie-scanner/src/scanner/old/scie_scanner.rs index 8630a3b341887374b2429fd381eaba1712c69d67..0033e72367ceab3734e462739f0c420bc5c2a013 100644 --- a/scie-scanner/src/scanner/old/scie_scanner.rs +++ b/scie-scanner/src/scanner/old/scie_scanner.rs @@ -137,7 +137,7 @@ pub fn str_vec_to_string(iter: I) -> Vec #[cfg(test)] mod tests { - use crate::scanner::scie_scanner::{str_vec_to_string, ScieScanner}; + use crate::scanner::old::scie_scanner::{ScieScanner, str_vec_to_string}; #[test] fn should_handle_simple_regex() { diff --git a/scie-scanner/src/scanner/onig_scanner.rs b/scie-scanner/src/scanner/onig_scanner.rs index cdf69a014ff7b01b6a03d74a9baaac290dddc4a4..5fcb2d602342f25a3a3908bcd0ebd860ab82954b 100644 --- a/scie-scanner/src/scanner/onig_scanner.rs +++ b/scie-scanner/src/scanner/onig_scanner.rs @@ -7,9 +7,9 @@ pub struct OnigScanner { impl OnigScanner { pub fn new(pattens: Vec<&str>) -> Self { - let str_ptrs_arr: Vec = vec![]; - let str_len_arr: Vec = vec![]; - for x in pattens { + let _str_ptrs_arr: Vec = vec![]; + let _str_len_arr: Vec = vec![]; + for _x in pattens { } OnigScanner { _ptr: 0 } diff --git a/scie-scanner/src/scanner/onig_string.rs b/scie-scanner/src/scanner/onig_string.rs index bc02226cbc11735566c7deb4eeda55ace46f07db..4d8cc99163e53e6617dcc732d02965930889ea19 100644 --- a/scie-scanner/src/scanner/onig_string.rs +++ b/scie-scanner/src/scanner/onig_string.rs @@ -1,3 +1,5 @@ +use unicode_segmentation::UnicodeSegmentation; + pub struct OnigString { pub utf16length: i32, pub utf8length: i32, @@ -10,12 +12,15 @@ pub struct OnigString { impl OnigString { pub fn new(str: String) -> Self { - let utf16Length = str.len(); - + let utf16length = str.len(); + let utf8_str = str.graphemes(true).collect::>().clone(); + println!("{:?}", utf8_str); + let utf8length = utf8_str.len(); + OnigString { - utf16length: 0, - utf8length: 0, + utf16length: utf16length as i32, + utf8length: utf8length as i32, utf16value: "".to_string(), utf8value: vec![], utf16offset_to_utf8: None, @@ -27,12 +32,12 @@ impl OnigString { #[cfg(test)] mod tests { - use crate::scanner::onig_scanner::OnigScanner; use crate::scanner::onig_string::OnigString; #[test] fn it_show_works_works() { - OnigString::new(String::from("")); - assert!(true) + let onig_string = OnigString::new(String::from("a💻bYX")); + assert_eq!(8, onig_string.utf16length); + assert_eq!(5, onig_string.utf8length); } } diff --git a/vscode-tests/vscode-onig/src/lib/utf-string.spec.ts b/vscode-tests/vscode-onig/src/lib/utf-string.spec.ts index 9a36d9dbe79ea737de88b2aac0d196df31691327..9dafaffd4cf6b640078b4c622587c94eed644de1 100644 --- a/vscode-tests/vscode-onig/src/lib/utf-string.spec.ts +++ b/vscode-tests/vscode-onig/src/lib/utf-string.spec.ts @@ -4,6 +4,11 @@ import UtfString from './utf-string'; test('constructor', (t) => { const utfString = new UtfString("hello, world"); - t.log(utfString); t.is(utfString.utf8Length, 12); }); + +test('utf8 length', (t) => { + const utfString = new UtfString("a💻bYX"); + console.log(utfString); + t.is(utfString.utf8Length, 8); +});