regex_literal/
assembly.rs1#![allow(unused)]
3use alloc::string::String;
4use core::str;
5use core::result::Result;
6use core::char;
7use crate::delimited;
8
9use crate::util;
10
11pub fn assemble_reu(arr:&[&str]) -> Result<String,String> {
13 merge(arr,delimited::LiteralForm::ReU)
14
15}
16
17pub fn assemble_res(arr:&[&str]) -> Result<String,String> {
19 merge(arr,delimited::LiteralForm::ReS)
20}
21
22pub fn into_reu(patterns:&[&str]) -> String {
24 let bytes = delimited::get_delimiter();
25 let delimiter = unsafe {str::from_utf8_unchecked(&bytes[..])};
26 let strings = util::delimit_many(patterns,delimiter);
27 let str_refs:Vec<&str> = strings.iter().map(|x| &x[..]).collect();assemble_reu(&str_refs[..]).unwrap()
29
30}
31
32pub fn into_res(patterns:&[&str]) -> String {
34 let bytes = delimited::get_delimiter();
35 let delimiter = unsafe {str::from_utf8_unchecked(&bytes[..])};
36 let strings = util::delimit_many(patterns,delimiter);
37 let str_refs:Vec<&str> = strings.iter().map(|x| &x[..]).collect();assemble_res(&str_refs[..]).unwrap()
39}
40
41
42
43fn merge(arr:&[&str],kind:delimited::LiteralForm) -> Result<String,String>{
45 let set_index:Option<usize> = match kind {
46 delimited::LiteralForm::ReU => Some(0),
47 delimited::LiteralForm::ReS => Some(1),
48 _ => None,
49 };
50 if set_index.is_none() {Err("Invalid LiteralForm in executing merge function.".to_string())} else{
51 let index = set_index.unwrap();
52 let bytes = vec![delimited::RE_SEPARATOR];
53 let o_separator = str::from_utf8(&bytes).or(Err("Invalid delimited::RE_SEPARATOR".to_string()));
54 let separator = o_separator?;
55 let mut string = arr.join(separator);
56 let o_start_char = char::from_u32(delimited::RE_SET_DELIMITERS[index][0] as u32
57 ).ok_or("Invalid opening delimiter".to_string());
58 let start_char = o_start_char?;
59 let o_end_char = char::from_u32(delimited::RE_SET_DELIMITERS[index][1] as u32
60 ).ok_or("Invalid closing delimiter".to_string());
61 let end_char = o_end_char?;
62 string.insert(0,start_char);
63 string.push(end_char);
64 Ok(string)
65 }
66
67}
68
69
70
71
72