add: plugins

This commit is contained in:
trisua 2025-05-31 12:42:23 -04:00
parent 149025f9e4
commit d71dc7e7ca
7 changed files with 161 additions and 47 deletions

View file

@ -101,34 +101,7 @@ pub fn expr_parser(buf: &str) -> Element {
}
// special elements
if element.tag == "#" {
// parse as tuple
// tuples can only contain strings
let len = buf.matches("s\"").collect::<Vec<&str>>().len();
let mut values: Vec<String> = Vec::new();
let mut last_len: usize = 0;
for _ in 0..len {
let mut buffer: String = String::new();
string_parser(
buf.replace("# ", "")
.replace("s\"", "\"")
.chars()
.skip(last_len),
&mut buffer,
);
last_len = buffer.len() + 2;
values.push(buffer);
}
for (i, v) in values.iter().enumerate() {
element.attrs.insert(i.to_string(), v.to_owned());
}
return element;
} else if (element.tag == "attr") | (element.tag == ":") | (element.tag.is_empty()) {
if (element.tag == "attr") | (element.tag == ":") | (element.tag.is_empty()) {
let mut chars = (&buf[i..buf.len()]).to_string();
if element.tag.is_empty() {
@ -264,6 +237,6 @@ pub fn element_parser(value: &str) -> (Element, usize) {
}
/// Parse a full document.
pub fn document(value: &str) -> (Element, usize) {
element_parser(&format!("(null? [{value}])"))
pub fn document(value: &str) -> Element {
element_parser(&format!("(null? [{value}])")).0
}