ripex 0.2.0

Multi-language structural parsing and fact extraction.
Documentation
use ripex::parser_for_ext;
fn main() {
    let path = std::env::args().nth(1).unwrap();
    let p = std::path::Path::new(&path);
    let ext = p.extension().and_then(|e| e.to_str()).unwrap_or("");
    let (lang, lexr) = match ext {
        "rs" => ("rust", ext),
        "py" => ("python", ext),
        "ts" | "tsx" => ("typescript", ext),
        "js" | "jsx" => ("javascript", ext),
        "go" => ("go", ext),
        "c" => ("c", ext),
        "cpp" | "cc" | "hpp" => ("cpp", ext),
        "cs" => ("csharp", ext),
        _ => return,
    };
    let src = match std::fs::read_to_string(&path) {
        Ok(s) => s,
        Err(_) => return,
    };
    let parser = match parser_for_ext(lang, lexr) {
        Some(p) => p,
        None => return,
    };
    let parsed = parser.parse(&src);
    let _facts = parser.extract(&parsed);
    println!("OK {} (errs={})", path, parsed.errors.len());
}