aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser/simplify.rs
diff options
context:
space:
mode:
authorPhilipp A2019-03-31 23:22:03 +0200
committerPhilipp A2019-03-31 23:22:03 +0200
commitd6cc93c02ceb4730375df9a0ca4ae2ea01391737 (patch)
treee4c6dc433298bf71a7f0b1216ed5bd865801857b /src/parser/simplify.rs
parent4e22848e3faa255c34fdc1b6503a88a02a7350c5 (diff)
downloadrust-rst-d6cc93c02ceb4730375df9a0ca4ae2ea01391737.tar.bz2
Add stub for ref resolution
Diffstat (limited to 'src/parser/simplify.rs')
-rw-r--r--src/parser/simplify.rs34
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
+ }
+}
+