klex 0.1.1

A simple lexer (tokenizer) generator for Rust
Documentation
use std::env;
use std::fs;
use std::path::Path;

fn main() {
    let out_dir = env::var("OUT_DIR").unwrap();
    let dest_path = Path::new(&out_dir).join("template.rs");

    // Read the lexer.rs template file
    let template_content = fs::read_to_string("src/lexer.rs")
        .expect("Failed to read src/lexer.rs template file");

    // We don't need to create lexer_template.rs anymore
    // Just create the template.rs file in OUT_DIR

    // Generate template.rs with the embedded template
    let escaped_content = template_content.replace("\\", "\\\\").replace("\"", "\\\"");
    let template_code = format!(
        r#"// This file is auto-generated by build.rs
// Do not edit manually

pub const LEXER_TEMPLATE: &str = "{}";
"#,
        escaped_content
    );

    fs::write(&dest_path, template_code)
        .expect("Failed to write template.rs");

    println!("cargo:rerun-if-changed=src/lexer.rs");
}