CodeCompass
78 строк · 1.5 Кб
1#include <iostream>
2#include <ctime>
3#include <sstream>
4#include <util/util.h>
5
6namespace cc
7{
8namespace util
9{
10
11std::string getCurrentDate()
12{
13std::time_t rawtime;
14struct tm* timeinfo;
15
16std::time(&rawtime);
17timeinfo = std::localtime(&rawtime);
18
19char output[42];
20std::strftime(output, 42, "%c", timeinfo);
21
22return {output};
23}
24
25std::string textRange(
26const std::string& text_,
27std::size_t startLine_, std::size_t startCol_,
28std::size_t endLine_, std::size_t endCol_)
29{
30std::string res;
31
32if (startLine_ == static_cast<std::size_t>(-1) ||
33startCol_ == static_cast<std::size_t>(-1) ||
34endLine_ == static_cast<std::size_t>(-1) ||
35endCol_ == static_cast<std::size_t>(-1))
36return res;
37
38std::istringstream iss(text_);
39std::string lineStr;
40
41for (std::size_t i = 1; i <= endLine_; ++i)
42{
43std::getline(iss, lineStr);
44
45if (startLine_ < endLine_)
46{
47if (startLine_ == i)
48res += lineStr.substr(startCol_ - 1) + '\n';
49else if (endLine_ == i)
50res += lineStr.substr(0, endCol_ - 1);
51else if (startLine_ < i && i < endLine_)
52res += lineStr + '\n';
53}
54else if (startLine_ == i)
55res = lineStr.substr(startCol_ - 1, endCol_ - startCol_);
56}
57
58return res;
59}
60
61std::string escapeHtml(const std::string& str_)
62{
63std::string ret;
64
65for (char c : str_)
66switch (c)
67{
68case '<': ret += "<"; break;
69case '>': ret += ">"; break;
70case '&': ret += "&"; break;
71default : ret += c; break;
72}
73
74return ret;
75}
76
77}
78}
79