diff options
| author | Philipp A | 2019-03-31 23:22:03 +0200 | 
|---|---|---|
| committer | Philipp A | 2019-03-31 23:22:03 +0200 | 
| commit | d6cc93c02ceb4730375df9a0ca4ae2ea01391737 (patch) | |
| tree | e4c6dc433298bf71a7f0b1216ed5bd865801857b /src/parser/simplify.rs | |
| parent | 4e22848e3faa255c34fdc1b6503a88a02a7350c5 (diff) | |
| download | rust-rst-d6cc93c02ceb4730375df9a0ca4ae2ea01391737.tar.bz2 | |
Add stub for ref resolution
Diffstat (limited to 'src/parser/simplify.rs')
| -rw-r--r-- | src/parser/simplify.rs | 34 | 
1 files changed, 34 insertions, 0 deletions
| diff --git a/src/parser/simplify.rs b/src/parser/simplify.rs new file mode 100644 index 0000000..2743a69 --- /dev/null +++ b/src/parser/simplify.rs @@ -0,0 +1,34 @@ +use std::collections::HashMap; + +use crate::target::Target; +use crate::document_tree::{ +	Document, +	HasChildren, +	attribute_types::ID, +	element_categories as c, +}; + + +trait ResolvableRefs { +	fn populate_targets(&self, refs: &mut HashMap<&ID, Target>); +	fn resolve_refs(self, refs: &HashMap<&ID, Target>) -> Self; +} + +pub fn resolve_references(mut doc: Document) -> Document { +	let mut references = HashMap::new(); +	for c in doc.children() { +		c.populate_targets(&mut references); +	} +	let new: Vec<_> = doc.children_mut().drain(..).map(|c| c.resolve_refs(&references)).collect(); +	Document::with_children(new) +} + +impl ResolvableRefs for c::StructuralSubElement { +	fn populate_targets(&self, refs: &mut HashMap<&ID, Target>) { +		//TODO +	} +	fn resolve_refs(self, refs: &HashMap<&ID, Target>) -> Self { +		self //TODO +	} +} + | 
