Tholp's bespoke website generator

make for_each_arg not suck as hard

Tholp1 d62d2639 f5031460

Changed files
+18 -5
src
+3 -3
src/macros/simple_blocks.rs
···
use crate::{
console::error_skid,
projectparse::{FileIndexing, ProjectContext},
-
stringtools::{find_pattern, split_to_tokens},
+
stringtools::{find_pattern, split_to_tokens, TokenTools, WhitespaceChecks},
types::{InputFile, Token},
};
···
let (start, len) = found_pattern.unwrap();
let replacement = split_to_tokens(arg.clone(), origin_index);
arg_output.splice(start..start + len, replacement);
-
found_pattern = find_pattern(&output, format!("[[..{}]]", replacement_index + 1));
+
found_pattern = find_pattern(&arg_output, format!("[[..{}]]", replacement_index + 1));
println!("{}", replacement_index + 1);
}
···
replacement_index += 1;
if replacement_index == replacement_count {
replacement_index = 0;
-
output.append(&mut arg_output);
+
output.append(&mut arg_output.trim_whitespace().into());
arg_output = block.clone();
println!("push");
}
+4 -1
src/macros/template.rs
···
let (start, len) = found_trailing_pattern.unwrap();
let mut replacement = Vec::new();
for arg in &args[self.args.len()..] {
-
replacement.append(&mut split_to_tokens("\"".to_string() + arg + "\" ".into(), origin_index));
+
replacement.append(&mut split_to_tokens(
+
"\"".to_string() + arg + "\" ".into(),
+
origin_index,
+
));
}
output.splice(start..start + len, replacement);
found_trailing_pattern = find_pattern(&output, "[[\"..\"]]".into());
+1 -1
src/main.rs
···
use types::{InputFile, Macro, Token};
static DELIMITERS: &'static [char] = &[
-
' ', '\n', '\t', '(', ')', '{', '}', '[', ']', '\\', '\'', '\"', ';',
+
' ', '\n', '\t', '(', ')', '{', '}', '[', ']', '<', '>', '\\', '\'', '\"', ';',
];
fn main() {
+10
src/stringtools.rs
···
return false;
}
}
+
+
pub trait TokenTools {
+
fn trim_whitespace(&mut self) -> &[Token];
+
}
+
+
impl TokenTools for Vec<Token> {
+
fn trim_whitespace(&mut self) -> &[Token] {
+
return trim_whitespace_tokens(&self[..]);
+
}
+
}