mirror of
https://github.com/pcvolkmer/osc-variant.git
synced 2025-04-20 20:26:50 +00:00
Do not list form references twice as dataform and unterformular
This commit is contained in:
parent
42cbb9ce7e
commit
e33b1a3a4c
@ -256,7 +256,7 @@ impl Comparable for DataForm {
|
|||||||
|
|
||||||
impl Requires for DataForm {
|
impl Requires for DataForm {
|
||||||
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
||||||
let mut data_catalogues = self
|
let mut result = self
|
||||||
.data_catalogues
|
.data_catalogues
|
||||||
.data_catalogue
|
.data_catalogue
|
||||||
.iter()
|
.iter()
|
||||||
@ -268,7 +268,7 @@ impl Requires for DataForm {
|
|||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let data_forms = &mut self
|
let referenced_forms = &mut self
|
||||||
.entries
|
.entries
|
||||||
.entry
|
.entry
|
||||||
.iter()
|
.iter()
|
||||||
@ -281,30 +281,15 @@ impl Requires for DataForm {
|
|||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|entry| match all.find_data_form(entry.as_str()) {
|
.map(|entry| match all.find_data_form(entry.as_str()) {
|
||||||
Some(contained) => Requirement::DataFormReference(contained),
|
Some(contained) => Requirement::DataFormReference(contained),
|
||||||
None => Requirement::ExternalDataFormReference(entry.to_string()),
|
None => match all.find_unterformular(entry.as_str()) {
|
||||||
})
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
data_catalogues.append(data_forms);
|
|
||||||
|
|
||||||
let unterformulare = &mut self
|
|
||||||
.entries
|
|
||||||
.entry
|
|
||||||
.iter()
|
|
||||||
.filter(|&entry| entry.get_type() == "formReference")
|
|
||||||
.filter_map(|entry| match &entry.referenced_data_form {
|
|
||||||
Some(name) => Some(name),
|
|
||||||
None => None,
|
|
||||||
})
|
|
||||||
.collect::<HashSet<_>>()
|
|
||||||
.into_iter()
|
|
||||||
.map(|entry| match all.find_unterformular(entry.as_str()) {
|
|
||||||
Some(contained) => Requirement::UnterformularReference(contained),
|
Some(contained) => Requirement::UnterformularReference(contained),
|
||||||
None => Requirement::ExternalUnterformularReference(entry.to_string()),
|
None => Requirement::ExternalUnterformularReference(entry.to_string()),
|
||||||
|
},
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
data_catalogues.append(unterformulare);
|
result.append(referenced_forms);
|
||||||
|
|
||||||
data_catalogues
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {
|
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {
|
||||||
|
@ -260,7 +260,7 @@ impl Comparable for Unterformular {
|
|||||||
|
|
||||||
impl Requires for Unterformular {
|
impl Requires for Unterformular {
|
||||||
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
fn get_required_entries<'a>(&'a self, all: &'a OnkostarEditor) -> Vec<Requirement> {
|
||||||
let mut data_catalogues = self
|
let mut result = self
|
||||||
.data_catalogues
|
.data_catalogues
|
||||||
.data_catalogue
|
.data_catalogue
|
||||||
.iter()
|
.iter()
|
||||||
@ -272,7 +272,7 @@ impl Requires for Unterformular {
|
|||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let data_forms = &mut self
|
let referenced_forms = &mut self
|
||||||
.entries
|
.entries
|
||||||
.entry
|
.entry
|
||||||
.iter()
|
.iter()
|
||||||
@ -285,30 +285,15 @@ impl Requires for Unterformular {
|
|||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|entry| match all.find_data_form(entry.as_str()) {
|
.map(|entry| match all.find_data_form(entry.as_str()) {
|
||||||
Some(contained) => Requirement::DataFormReference(contained),
|
Some(contained) => Requirement::DataFormReference(contained),
|
||||||
None => Requirement::ExternalDataFormReference(entry.to_string()),
|
None => match all.find_unterformular(entry.as_str()) {
|
||||||
})
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
data_catalogues.append(data_forms);
|
|
||||||
|
|
||||||
let unterformulare = &mut self
|
|
||||||
.entries
|
|
||||||
.entry
|
|
||||||
.iter()
|
|
||||||
.filter(|&entry| entry.get_type() == "formReference")
|
|
||||||
.filter_map(|entry| match &entry.referenced_data_form {
|
|
||||||
Some(name) => Some(name),
|
|
||||||
None => None,
|
|
||||||
})
|
|
||||||
.collect::<HashSet<_>>()
|
|
||||||
.into_iter()
|
|
||||||
.map(|entry| match all.find_unterformular(entry.as_str()) {
|
|
||||||
Some(contained) => Requirement::UnterformularReference(contained),
|
Some(contained) => Requirement::UnterformularReference(contained),
|
||||||
None => Requirement::ExternalUnterformularReference(entry.to_string()),
|
None => Requirement::ExternalUnterformularReference(entry.to_string()),
|
||||||
|
},
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
data_catalogues.append(unterformulare);
|
result.append(referenced_forms);
|
||||||
|
|
||||||
data_catalogues
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {
|
fn to_requirement_string<'a>(&'a self, all: &'a OnkostarEditor) -> String {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user