mirror of
https://github.com/SpaceManiac/SpacemanDMM.git
synced 2025-12-23 05:36:47 +00:00
Add count-vars example
This commit is contained in:
parent
5fa4946116
commit
26de2aa55d
1 changed files with 29 additions and 0 deletions
29
src/dreammaker/examples/count-vars.rs
Normal file
29
src/dreammaker/examples/count-vars.rs
Normal 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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue