From 96fdaebb5c8c8902c98c1fb43e755cf90fc15198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 18 Aug 2015 02:25:24 +0200 Subject: GH-926 implement log cleaning functionality Also adds gzip compressed log support --- logic/pathmatcher/FSTreeMatcher.h | 19 +++++++++++++++++++ logic/pathmatcher/IPathMatcher.h | 12 ++++++++++++ logic/pathmatcher/MultiMatcher.h | 31 +++++++++++++++++++++++++++++++ logic/pathmatcher/RegexpMatcher.h | 29 +++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+) create mode 100644 logic/pathmatcher/FSTreeMatcher.h create mode 100644 logic/pathmatcher/IPathMatcher.h create mode 100644 logic/pathmatcher/MultiMatcher.h create mode 100644 logic/pathmatcher/RegexpMatcher.h (limited to 'logic/pathmatcher') diff --git a/logic/pathmatcher/FSTreeMatcher.h b/logic/pathmatcher/FSTreeMatcher.h new file mode 100644 index 00000000..f99e45c9 --- /dev/null +++ b/logic/pathmatcher/FSTreeMatcher.h @@ -0,0 +1,19 @@ +#include "IPathMatcher.h" +#include +#include + +class FSTreeMatcher : public IPathMatcher +{ +public: + virtual ~FSTreeMatcher() {}; + FSTreeMatcher(SeparatorPrefixTree<'/'> & tree) : m_fsTree(tree) + { + } + + virtual bool matches(const QString &string) override + { + return m_fsTree.covers(string); + } + + SeparatorPrefixTree<'/'> & m_fsTree; +}; diff --git a/logic/pathmatcher/IPathMatcher.h b/logic/pathmatcher/IPathMatcher.h new file mode 100644 index 00000000..806a750a --- /dev/null +++ b/logic/pathmatcher/IPathMatcher.h @@ -0,0 +1,12 @@ +#pragma once +#include + +class IPathMatcher +{ +public: + typedef std::shared_ptr Ptr; + +public: + virtual ~IPathMatcher(){}; + virtual bool matches(const QString &string) = 0; +}; diff --git a/logic/pathmatcher/MultiMatcher.h b/logic/pathmatcher/MultiMatcher.h new file mode 100644 index 00000000..e018967c --- /dev/null +++ b/logic/pathmatcher/MultiMatcher.h @@ -0,0 +1,31 @@ +#include "IPathMatcher.h" +#include +#include + +class MultiMatcher : public IPathMatcher +{ +public: + virtual ~MultiMatcher() {}; + MultiMatcher() + { + } + MultiMatcher &add(Ptr add) + { + m_matchers.append(add); + return *this; + } + + virtual bool matches(const QString &string) override + { + for(auto iter: m_matchers) + { + if(iter->matches(string)) + { + return true; + } + } + return false; + } + + QList m_matchers; +}; diff --git a/logic/pathmatcher/RegexpMatcher.h b/logic/pathmatcher/RegexpMatcher.h new file mode 100644 index 00000000..f3cf90b1 --- /dev/null +++ b/logic/pathmatcher/RegexpMatcher.h @@ -0,0 +1,29 @@ +#include "IPathMatcher.h" +#include + +class RegexpMatcher : public IPathMatcher +{ +public: + virtual ~RegexpMatcher() {}; + RegexpMatcher(QString regexp) + { + m_regexp.setPattern(regexp); + m_onlyFilenamePart = !regexp.contains('/'); + } + + virtual bool matches(const QString &string) override + { + if(m_onlyFilenamePart) + { + auto slash = string.lastIndexOf('/'); + if(slash != -1) + { + auto part = string.mid(slash + 1); + return m_regexp.match(part).hasMatch(); + } + } + return m_regexp.match(string).hasMatch(); + } + QRegularExpression m_regexp; + bool m_onlyFilenamePart = false; +}; -- cgit v1.2.3