Tholp's bespoke website generator

trailing arguments in templates

Tholp1 f5031460 478cd07f

+43 -5
+42 -4
src/macros/template.rs
··· 102 102 args_index += 1; 103 103 } 104 104 105 - let mut found_pattern = find_pattern(&output, "[[{}]]".into()); 106 - while found_pattern.is_some() { 107 - let (start, len) = found_pattern.unwrap(); 105 + let mut found_block_pattern = find_pattern(&output, "[[{}]]".into()); 106 + while found_block_pattern.is_some() { 107 + let (start, len) = found_block_pattern.unwrap(); 108 108 let replacement = scope.to_vec(); 109 109 output.splice(start..start + len, replacement); 110 - found_pattern = find_pattern(&output, "[[{}]]".into()); 110 + found_block_pattern = find_pattern(&output, "[[{}]]".into()); 111 + } 112 + 113 + //replace [[..]] with space seperated remaining args 114 + let mut found_trailing_pattern = find_pattern(&output, "[[..]]".into()); 115 + while found_trailing_pattern.is_some() { 116 + let (start, len) = found_trailing_pattern.unwrap(); 117 + let mut replacement = Vec::new(); 118 + for arg in &args[self.args.len()..] { 119 + replacement.append(&mut split_to_tokens(arg.clone() + " ".into(), origin_index)); 120 + } 121 + output.splice(start..start + len, replacement); 122 + found_trailing_pattern = find_pattern(&output, "[[..]]".into()); 123 + } 124 + 125 + //replace [[".."]] with space seperated quoted remaining args 126 + found_trailing_pattern = find_pattern(&output, "[[\"..\"]]".into()); 127 + while found_trailing_pattern.is_some() { 128 + let (start, len) = found_trailing_pattern.unwrap(); 129 + let mut replacement = Vec::new(); 130 + for arg in &args[self.args.len()..] { 131 + replacement.append(&mut split_to_tokens("\"".to_string() + arg + "\" ".into(), origin_index)); 132 + } 133 + output.splice(start..start + len, replacement); 134 + found_trailing_pattern = find_pattern(&output, "[[\"..\"]]".into()); 111 135 } 112 136 113 137 output ··· 142 166 format!( 143 167 "Attempted to make a template using a reserved name \"{}\"", 144 168 args[0] 169 + ), 170 + ); 171 + } 172 + } 173 + 174 + for arg in args { 175 + if arg == ".." || arg == "\"..\"" { 176 + error_skid( 177 + context, 178 + origin_index, 179 + origin_line, 180 + format!( 181 + "Attempted to make a template using a reserved parameter name \"{}\"", 182 + arg 145 183 ), 146 184 ); 147 185 }
+1 -1
src/main.rs
··· 297 297 .unwrap(); 298 298 fs::write(&file.file_htmlout, &html_output).expect("Couldn't write html to file"); 299 299 ok_generic(format!( 300 - "{} written \n\n", 300 + "\"{}\" written \n\n", 301 301 file.file_htmlout 302 302 .to_str() 303 303 .unwrap_or("Couldnt Unwrap htmlout name")