Fri, 16 Jan 2026 19:39:22 -0500
Lipschitz estimation attempt (incomplete, not implemented for sliding. Doesn't work anyway for basic FB either.)
use regex::{Captures, Regex}; use std::env; fn main() { process_readme(); // Does not seem to be needed now. //discover_gsl(); } /* /// Discover how to link to gsl, as the gsl crate does not provide this information fn discover_gsl() { pkg_config::Config::new().probe("gsl").unwrap(); } */ /// `\`-escape `_`, `*`, and ยด\\` in matches of `re` within `str`. fn proc<A: AsRef<str>>(re: &str, str: A) -> String { let need_to_escape = Regex::new(r"([_*\\])").unwrap(); Regex::new(re) .unwrap() .replace_all(str.as_ref(), |caps: &Captures| { format!( "{}{}{}", caps.get(1).unwrap().as_str(), need_to_escape.replace_all(caps.get(2).unwrap().as_str(), "\\$1"), caps.get(3).unwrap().as_str() ) }) .to_string() } /// Process the README for inclusion in documentation fn process_readme() { let out_dir = env::var("OUT_DIR").unwrap(); // Since rust is stuck in 80's 7-bit gringo ASCII world, so that rustdoc does not support // markdown KaTeX mathematics, we have to process the README to include horrible horrible // horrible escapes for the math, and then use an vomit-inducingly ugly javasccript // workaround to process the math on the fly. println!("cargo:rerun-if-changed=README.md"); let readme = std::fs::read_to_string("README.md").expect("Error reading README"); // Escape _, *, and \ in equations. let readme_uglified = proc( r"(?m)([^$]\$)([^$]+)(\$[^$])", proc(r"([^$]\$\$)([^$]+)(\$\$[^$])", readme), ); // Remove the instructions for building the documentation let readme_cut = Regex::new("## Internals(.*|\n)*") .unwrap() .replace_all(&readme_uglified, ""); std::fs::write(out_dir + "/README_uglified.md", readme_cut.as_bytes()) .expect("Error saving uglified README"); }