Arkanjo 0.2
A tool for find code duplicated functions in codebases
Loading...
Searching...
No Matches
path.hpp
Go to the documentation of this file.
1
12#pragma once
13
14#include <algorithm>
15#include <cassert>
16#include <string>
17#include <vector>
18#include <filesystem>
19namespace fs = std::filesystem;
20
27class Path {
28 private:
29 static constexpr const char* BETWEEN_RELATIVE_AND_FUNCTION_NAME = "::";
30
31 static constexpr const char* JSON_EXTENSION = ".json";
32 static constexpr const char* BASE_INIT_STRING = "arkanjo";
33 static constexpr const char* SOURCE_STRING = "source";
34 static constexpr const char* HEADER_STRING = "header";
35 static constexpr const char* INFO_STRING = "info";
36 static constexpr char BAR = '/';
37
38 std::vector<std::string> tokens;
39 size_t position_start_relative_path = -1;
40
46 static std::vector<std::string> split_path(const fs::path& path);
47
52 size_t find_position_start_relative_path() const;
53
59 static std::string build_string_path(const std::vector<std::string>& path_tokens);
60
66 std::string build_base_path(const std::string& base) const;
67
72 std::vector<std::string> get_tokens_from_relative_path() const;
73
79 static std::string remove_extension(std::string& token);
80
81 public:
86 bool is_empty() const;
87
91 Path() = default;
92
97 explicit Path(const fs::path& path);
98
103 std::string build_source_path() const;
104
109 std::string build_header_path() const;
110
115 std::string build_info_path() const;
116
121 std::string build_relative_path() const;
122
127 std::string build_function_name() const;
128
134 std::vector<std::string> get_common_folders(const Path& path) const;
135
141 bool contains_given_pattern(const std::string& pattern) const;
142
148 bool operator<(const Path& path) const;
149
154 std::string format_path_message_in_pair() const;
155};
Path manipulation class for tool-specific directory structure.
Definition path.hpp:27
std::string format_path_message_in_pair() const
Formats path for display.
Definition path.cpp:145
std::string build_relative_path() const
Builds relative path portion.
Definition path.cpp:101
std::string build_info_path() const
Builds metadata file path.
Definition path.cpp:65
std::vector< std::string > get_common_folders(const Path &path) const
Finds common folders with another path.
Definition path.cpp:119
std::string build_function_name() const
Extracts function name from path.
Definition path.cpp:110
bool contains_given_pattern(const std::string &pattern) const
Checks for pattern in path.
Definition path.cpp:140
Path()=default
Default constructor.
bool operator<(const Path &path) const
Path comparison operator.
Definition path.cpp:136
std::string build_header_path() const
Builds header file path.
Definition path.cpp:61
std::string build_source_path() const
Builds source file path.
Definition path.cpp:57
bool is_empty() const
Checks if path is empty.
Definition path.cpp:29