Fixed handling of elements filter in sequence diagrams (#248)
This commit is contained in:
@@ -280,10 +280,12 @@ void generator<C, D>::generate(std::ostream &ostr) const
|
||||
|
||||
generate_title(ostr);
|
||||
|
||||
// Generate PlantUML directives before auto generated content
|
||||
generate_plantuml_directives(ostr, config.puml().before);
|
||||
|
||||
generate_diagram(ostr);
|
||||
|
||||
// Generate PlantUML directives after auto generated content
|
||||
generate_plantuml_directives(ostr, config.puml().after);
|
||||
|
||||
generate_metadata(ostr);
|
||||
|
||||
@@ -346,6 +346,35 @@ tvl::value_t element_filter::match(const diagram &d, const element &e) const
|
||||
});
|
||||
}
|
||||
|
||||
tvl::value_t element_filter::match(
|
||||
const diagram &d, const sequence_diagram::model::participant &p) const
|
||||
{
|
||||
using sequence_diagram::model::method;
|
||||
using sequence_diagram::model::participant;
|
||||
|
||||
if (d.type() != diagram_t::kSequence)
|
||||
return {};
|
||||
|
||||
const auto &sequence_model =
|
||||
dynamic_cast<const sequence_diagram::model::diagram &>(d);
|
||||
return tvl::any_of(elements_.begin(), elements_.end(),
|
||||
[&sequence_model, &p](const auto &el) {
|
||||
if (p.type_name() == "method") {
|
||||
|
||||
const auto &m = dynamic_cast<const method &>(p);
|
||||
const auto class_id = m.class_id();
|
||||
const auto &class_participant =
|
||||
sequence_model.get_participant<participant>(class_id)
|
||||
.value();
|
||||
|
||||
return el == p.full_name(false) ||
|
||||
el == class_participant.full_name(false);
|
||||
}
|
||||
|
||||
return el == p.full_name(false);
|
||||
});
|
||||
}
|
||||
|
||||
element_type_filter::element_type_filter(
|
||||
filter_t type, std::vector<std::string> element_types)
|
||||
: filter_visitor{type}
|
||||
|
||||
@@ -180,6 +180,9 @@ struct element_filter : public filter_visitor {
|
||||
|
||||
tvl::value_t match(const diagram &d, const element &e) const override;
|
||||
|
||||
tvl::value_t match(const diagram &d,
|
||||
const sequence_diagram::model::participant &p) const override;
|
||||
|
||||
private:
|
||||
std::vector<common::string_or_regex> elements_;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user