add: plugins
This commit is contained in:
parent
149025f9e4
commit
d71dc7e7ca
7 changed files with 161 additions and 47 deletions
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue