Added regex support to subclasses filter

This commit is contained in:
Bartek Kryza
2023-06-07 00:15:36 +02:00
parent c7e61a586b
commit ad2fc3f8a6
6 changed files with 162 additions and 7 deletions

View File

@@ -17,6 +17,7 @@
*/
#pragma once
#include "common/clang_utils.h"
#include "common/model/enums.h"
#include "common/types.h"
@@ -26,6 +27,13 @@ namespace clanguml::class_diagram::model {
class class_parent {
public:
class_parent() = default;
class_parent(const std::string &name)
{
set_name(name);
set_id(common::to_id(name));
}
void set_name(const std::string &name);
std::string name() const;

View File

@@ -311,7 +311,8 @@ tvl::value_t method_type_filter::match(
});
}
subclass_filter::subclass_filter(filter_t type, std::vector<std::string> roots)
subclass_filter::subclass_filter(
filter_t type, std::vector<config::string_or_regex> roots)
: filter_visitor{type}
, roots_{std::move(roots)}
{

View File

@@ -162,14 +162,14 @@ private:
};
struct subclass_filter : public filter_visitor {
subclass_filter(filter_t type, std::vector<std::string> roots);
subclass_filter(filter_t type, std::vector<config::string_or_regex> roots);
~subclass_filter() override = default;
tvl::value_t match(const diagram &d, const element &e) const override;
private:
std::vector<std::string> roots_;
std::vector<config::string_or_regex> roots_;
};
struct parents_filter : public filter_visitor {

View File

@@ -170,7 +170,7 @@ struct filter {
// - private
std::vector<common::model::access_t> access;
std::vector<std::string> subclasses;
std::vector<string_or_regex> subclasses;
std::vector<std::string> parents;