2026-07-20 10:57:07 +10:00
|
|
|
#include "post.h"
|
|
|
|
|
#include <memory>
|
2026-07-20 17:49:29 +10:00
|
|
|
#include <regex>
|
2026-07-20 10:57:07 +10:00
|
|
|
#include <sstream>
|
|
|
|
|
#include <string>
|
|
|
|
|
#include <ctime>
|
|
|
|
|
#include <maddy/parser.h>
|
|
|
|
|
|
2026-07-20 17:49:29 +10:00
|
|
|
std::regex tags("<[^<]*>");
|
|
|
|
|
|
2026-07-20 10:57:07 +10:00
|
|
|
Post::Post(const std::string& contentin, const std::string& user) : user(user), time(std::time(nullptr)) {
|
|
|
|
|
// parse the post content markdown
|
2026-07-20 17:49:29 +10:00
|
|
|
std::stringstream input(std::regex_replace(contentin, tags, ""));
|
2026-07-20 10:57:07 +10:00
|
|
|
std::shared_ptr<maddy::Parser> parser = std::make_shared<maddy::Parser>();
|
|
|
|
|
content = parser->Parse(input);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Post::Post(const std::string& contentin, uint64_t user) : userId(user), time(std::time(nullptr)) {
|
|
|
|
|
// parse the post content markdown
|
2026-07-20 17:49:29 +10:00
|
|
|
std::stringstream input(std::regex_replace(contentin, tags, ""));
|
2026-07-20 10:57:07 +10:00
|
|
|
std::shared_ptr<maddy::Parser> parser = std::make_shared<maddy::Parser>();
|
|
|
|
|
content = parser->Parse(input);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::string Post::genHtml() const {
|
|
|
|
|
std::stringstream ss;
|
|
|
|
|
ss << "<hr>\n";
|
|
|
|
|
|
|
|
|
|
// do time
|
|
|
|
|
char buf[256];
|
|
|
|
|
struct tm ts;
|
|
|
|
|
ts = *localtime(&time);
|
|
|
|
|
strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S %Z", &ts);
|
|
|
|
|
|
2026-07-20 11:48:27 +10:00
|
|
|
ss << "<p class='postinfo'><i>" << user << "</i> posted this at " << buf << "</p>\n";
|
2026-07-20 10:57:07 +10:00
|
|
|
|
|
|
|
|
ss << content;
|
|
|
|
|
|
2026-07-20 11:48:27 +10:00
|
|
|
ss << "<p class='postinfo'>" << likes << " likes</p>";
|
2026-07-20 10:57:07 +10:00
|
|
|
|
|
|
|
|
return ss.str();
|
|
|
|
|
|
|
|
|
|
}
|