Add count-vars example

This commit is contained in:
Tad Hardesty 2020-03-31 17:14:41 -07:00
parent 5fa4946116
commit 26de2aa55d

View file

@ -0,0 +1,29 @@
//! Print total number of `var` declarations and overrides in a project.
extern crate dreammaker as dm;
fn main() {
let context = dm::Context::default();
let env = dm::detect_environment_default()
.expect("error detecting .dme")
.expect("no .dme found");
let pp = dm::preprocessor::Preprocessor::new(&context, env)
.expect("i/o error opening .dme");
let indents = dm::indents::IndentProcessor::new(&context, pp);
let mut parser = dm::parser::Parser::new(&context, indents);
parser.enable_procs();
let ot = parser.parse_object_tree();
let mut decls = 0;
let mut overrides = 0;
ot.root().recurse(&mut |ty: dm::objtree::TypeRef| {
for v in ty.vars.values() {
if v.declaration.is_some() {
decls += 1;
} else {
overrides += 1;
}
}
});
println!("decls: {}\noverrides: {}\ntotal: {}", decls, overrides, decls + overrides);
}