Files
chookchat/server/src/post.cpp

44 lines
1.2 KiB
C++
Raw Normal View History

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();
}