use std::env; use std::fs; use std::io::Read; use sourcemap::{decode, DecodedMap, RewriteOptions, SourceMap}; fn load_from_reader(mut rdr: R) -> SourceMap { match decode(&mut rdr).unwrap() { DecodedMap::Regular(sm) => sm, DecodedMap::Index(idx) => idx .flatten_and_rewrite(&RewriteOptions { load_local_source_contents: true, ..Default::default() }) .unwrap(), _ => panic!("unexpected sourcemap format"), } } fn main() { let args: Vec<_> = env::args().collect(); let mut f = fs::File::open(&args[1]).unwrap(); let sm = load_from_reader(&mut f); let line = if args.len() > 2 { args[2].parse::().unwrap() } else { 0 }; let column = if args.len() > 3 { args[3].parse::().unwrap() } else { 0 }; let token = sm.lookup_token(line, column).unwrap(); // line-number and column println!("token: {}", token); }