WebFramework v3.0.12
Web framework for C++.
Loading...
Searching...
No Matches
WebFrameworkDynamicPages.h
1#pragma once
2
3#include "Import/WebFrameworkCore.h"
4
5namespace framework
6{
8 {
9 private:
10 struct ExecutionUnit
11 {
12 std::string functionName;
13 std::vector<std::string> arguments;
14
15 ExecutionUnit(std::string&& functionName, std::vector<std::string>&& arguments) noexcept;
16 };
17
18 private:
19 std::unordered_map<std::string, std::function<std::string(const std::vector<std::string>&)>> dynamicPagesFunctions;
20 const std::filesystem::path pathToTemplates;
21
22 private:
23 static void clear(std::string& code);
24
25 static void separateArguments(std::string& code);
26
27 static std::string insertVariables(const std::unordered_map<std::string, std::string>& variables, std::string code);
28
29 static std::vector<ExecutionUnit> preExecute(const std::string& code);
30
31 std::string execute(const std::vector<ExecutionUnit>& codes);
32
33 public:
34 WebFrameworkDynamicPages(const std::filesystem::path& pathToTemplates);
35
36 void run(const std::unordered_map<std::string, std::string>& variables, std::string& source);
37
38 void registerDynamicFunction(const std::string& functionName, std::function<std::string(const std::vector<std::string>&)>&& function);
39
40 void unregisterDynamicFunction(const std::string& functionName);
41
42 bool isDynamicFunctionRegistered(const std::string& functionName);
43
44 const std::filesystem::path& getPathToTemplates() const;
45
46 ~WebFrameworkDynamicPages() = default;
47 };
48}