From 1668cb85639c70137ba56f79ede3c08ea30a5e10 Mon Sep 17 00:00:00 2001 From: Szymon P Date: Sun, 11 Jan 2026 22:33:58 +0100 Subject: [PATCH] moved all the file operation logic into io module --- .../index/config.cpp.A68A2AE9FDFA8117.idx | Bin 0 -> 1382 bytes .../index/config.hpp.C519F3A7E0A75094.idx | Bin 0 -> 1040 bytes .../index/format.cpp.047FF551BC8DE01E.idx | Bin 0 -> 1078 bytes .../index/main.cpp.AC604CCC20973D23.idx | Bin 0 -> 436 bytes .../index/markdown.cpp.A5D40F1BF5766683.idx | Bin 0 -> 3162 bytes .../index/markdown.hpp.66A7ABFD738DA42D.idx | Bin 0 -> 1138 bytes src/config/config.cpp | 4 ++-- src/config/config.hpp | 5 ++++- src/format/format.cpp | 19 ---------------- src/markdown/markdown.cpp | 21 +++++++++--------- 10 files changed, 16 insertions(+), 33 deletions(-) create mode 100644 src/.cache/clangd/index/config.cpp.A68A2AE9FDFA8117.idx create mode 100644 src/.cache/clangd/index/config.hpp.C519F3A7E0A75094.idx create mode 100644 src/.cache/clangd/index/format.cpp.047FF551BC8DE01E.idx create mode 100644 src/.cache/clangd/index/main.cpp.AC604CCC20973D23.idx create mode 100644 src/.cache/clangd/index/markdown.cpp.A5D40F1BF5766683.idx create mode 100644 src/.cache/clangd/index/markdown.hpp.66A7ABFD738DA42D.idx diff --git a/src/.cache/clangd/index/config.cpp.A68A2AE9FDFA8117.idx b/src/.cache/clangd/index/config.cpp.A68A2AE9FDFA8117.idx new file mode 100644 index 0000000000000000000000000000000000000000..e7480b6ef8fe9b5e1d600506c1e56f8ebb249f4b GIT binary patch literal 1382 zcmWIYbaRViWngel@vO*AElFfyU|9;hPV)6;HWX-kzWhtT z(xoZwu>z?J1J;CbCGpGI=-o`&#e4Snq&H!!f86)IZMz~wQ>4wOqS9!lxv<0+`%5tv z(zD_+Qs%WE(~kbCx4e7#%|8ogoRxoX-)`_@z64XU;gWFaPiHJVA7_~`nXzv>(Xh8* z?PIU}-scBc4A{>E7pxUOvgA{8jHR>0z3s;$eYOb4Bu5nbXPBQ_@KEuUsd#o=pu@tQ zYg49o>G)oH!nRe5pDRss!;KdaJ#H^eRX!~KF*ka9Th8XATPMGp8tod96`uIvQHjvw zVx7>dOI@y*CP>>%JN4+?kCOGyH??%@H}bjMn{VT9m9o<0X~*+BHEEq!w+mVGpW?df z9xd#oG=~+X<#6;v$G3|3bP9fGH^06G6)JYin1~k zrKS~!Ff%ZmQ?Bl4vJ2*Ck`dw2=Fx{~1oG^8oMF6rUez4WcY7olc|=5+L^)x?KW$8# zR5$%lW)%?;kQR`E35$pbN(&U1pIfB(

JR@-PpYn{-N*z~&A`qE6Xp?-Vv^#3@$S6e+;PX|#u1=i4h{~u-YoMk zds`-po?(;`;S%RkgsCnS3X5e-nRylz@d5&ZFkxWC3kV|dgam|;cwz!#NIY=?aX4>> z+tiA64$p6ZjAIjkdlP6Jn;;TTh)oEIC&ng*#1m%|hx7K!F$m>MoN@=~7jAKGcq}i> z@n-P~Y>q$3&cVka0TZ^8`*b?SP;%DNA=Zm7$oJ3Ik6&EEJ2ZI=5AOZr!VGITaQ3O*G!IVNUCE!d( tk&C+=r?(EKHs~Kq}VpIf@4~Bt-()ys5C>Uj_tt71wyGyR+&%;JP zMj6#ZkgVVq?L&p3FJ=}N#abw4v}g!fhAW5~qTx%}oza6{nD1WBx!<|x`_7zj<>y;C zgpQtb1?t@XN_s>N`uY6c+Hd;KAQWhSa(AG>lq+A0AHN(Kt;q5Wd~R=jzR&z6Xf6Ke z$v))I%E&B#+`2G-{^{i4Ep_Ex(PC~@&DXYA=f#*SHvIirMpwtgi%>^a-&}L|mBy9! zN8>*f-i%6Wf0yTO-isR#$60@Jd0ixMhaEnRx+s4i5UQ)9NtpZPf%IQiNZW}L1 z=(Q78rD;`EZ3aNPMM?9x=3hH`79&IiED!^bV2~MNPVYG~>m2cv$;gI~f-$xc4Qn}&+%d}c6V^`oA`$Hd0KZoliROp5#R)6Z z*UiMN835_h-vi6R;^t+ZHPiAYY$671lt*57jqmCvml@G;7y1HsX;`-w!r&?^uDNNL ziI7ZGRuzB)&N7K>j;>zjNLW%}3^LKSYrCK`h|)Lp$$%L!`dPEDK)ZqltWM~o~}&$Lf4*tzLv_u`wq zF%uS@UTp7uf9tlb+a(Tvc$sj$N%QLa6`8lBH+)e3{qo-G&ZY=CDN($UH z=g8iSqOUsBrm+_2b~&G@sH%x@{<2@8v9_b8{l|RW`aTc8=V#BvH_zR7bWR@M%tx;z zU#{AHpX+w^?VDoXmul@U;f(s%5XM{CG9i9Omi<+c-xF4UnR;0$HZ|bhlpWK3c;ut( z&IS}$<|f$z!^ZRLr8V<2E|~Bzh%qn-u=210-+ zVA4gYX~hx1P<69jz2v>pRYpc00U>rFeweQB7qrxQJ_ztJ$_NPa2n)l6O>B>F-KdNb z0jg$aV&{N4L9T7%vilYnB^gBo#6-o!VX9%$Oj0N=lM#?)lN5p}+WA&dEG2ig70@Pe zUU9f^;N|lk5AweF1C5m8mJ)=iHoNw#Xh-OmV4$!#t2jGMSk++f{4k}J;Xq*tP6;lU z@Ko`3F~>TQI-sy1pP&d#_>uqXLYKn#(8tLmz$(Y80uu)E z%vfy@JT?_JEd-B4f=w8UG?HDCT^8o) z1#BMv3nSh<1BS7XfDqisqSTy3P+BW4N-nkrF@!+`1b}ij1TYGiSI^Kn!*%%%i=dFO k2!jwzf`LI0!A#Cg$q@i@dHDF4xLDa(n7P?G_&FJQ0ohq?KmY&$ literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/main.cpp.AC604CCC20973D23.idx b/src/.cache/clangd/index/main.cpp.AC604CCC20973D23.idx new file mode 100644 index 0000000000000000000000000000000000000000..a2de7f591edc23e69079d2fdee95ea415f5f67a7 GIT binary patch literal 436 zcmWIYbaPw7$iU#7;#rZKT9U}Zz`!5^#Kk2=nV*65YoJ`koT>ee-bWmGT0f`TO!did z6j><#ag%z#T&mUNxovZ2PMKL&`uFR$H(C{|1%xUpe^xNMIDBzE7h|yUxt$5`1I7W);AAK zjoD)P<95aSsLQk5yNqH)Uqv0T`hCyT_csIEzXS1Kwy2!@-0Ju0>*2ISsYPt7j=n8l z*Qp|H?(5*KYvQr&?ft}wFVOzA3pHDKDI21p|~okKYwV@_<4_kcEYX z155yAAfPBUtymn$gsEecLYL1;1gR`8N-ow1F@!(_1PH?z3=9HrCZk|@dt%(3hNE%J e0z$$J$+;;xAW0rRJ|-?!HWp@Xb`E|{MqU7tmY4(p literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/markdown.cpp.A5D40F1BF5766683.idx b/src/.cache/clangd/index/markdown.cpp.A5D40F1BF5766683.idx new file mode 100644 index 0000000000000000000000000000000000000000..4050d1bdc47a8a2c710d9a4173d28c6ed1ab1155 GIT binary patch literal 3162 zcmY*b4Ooon8vbUgnP%pj|F3WUo0)!Qs4>&uRQN_Ur5bIh{O_cdSfr#nPDw&b`CX(f zEsNMJPA%y~mm_r1D#}MUDu9VBjw+J9Bw36+yzB5G3b7^{lki9v@!kz$i29!fipy|$LxMuHP~IycW>*teWil#(CbfLHQdSiwmqtSdco6#!Ne~DG{%F? zSly|?J6zGBhh=>Wlk!J%r?}mHFG}BnAmcb z$ZOeIvj(5i!U(VMpXfSZh>m>aSuilS+NrF5-Luj@=i?jaHg^%UTtXn(>>_Bbl;D@gMBK;*<-(qEf1FT8BZyglP;^s4u7cs)f{?Q-*)ART8+Q5PLHA`>POPjmc*S=~`@6QLOEWs&hj>0O?p@H~ zxSun3_sP4FCRMFAbM1n4<6q~lHpJxSeLrxm@~4Q7+TOu{klZ}Kukg)R^RL#EptfWO|B?^9s ztvzt#*aW$QwK84x!guD&Z+}^^8oL?xYVqljJw4THHS_;)H*!CeoLhRRdh%PZ&fTs0 zVchnU^@zp z!bBoegxOB>JwTaeE?JuOyEB3~UTmFmw0;gkMR69L#UYL2(e!8zRMINTdBVuyI8iX% zG}UB*LbIj|w9oetP81YZ(N%0nH{M>p?3lTnMv>#bJYNx{zo_v~&Yogs0a~NcjE8g@ z7PgPZjpPE_gXbZJbh~?A@un#WHd=rSq>w&0E2XPBZV?7d>KS?#q}R6oN9k#vDh3W} zd^P@%7E6Z@-tDHl0wodj2sTXFd&0QMv-aQaju@`?QTsw^4A+g`41B5Jn|p8QziORRD+AJ( z^a+Rjo^1~Wx1kkl-JvGd>zk6wWYJV$7pLP)NC({dx$*w%Yf(U2E|JS1-PaU8N%!^f zXdvy!^dr5j53DWEyZs^>NTV3)3Z<#m-j#p$Pf)-#pG0EFR@eoc34$pR3(BP4Mtc5lq4wIx&oS+h9C`pAW z@78#~OacaYS{_;A95k&P-qGMQly`n{{Q`q zBo!Cy@QukCK#7niB#Wz5RD_4E$JT>dW^>pWJdEKMjs=4e0)$)CW01Q=15w!$^Yg3Y z+ls&)8e9w#sNmE!YQ|K=M!u1x9X=)udi7ta0^KHN zh&&S4?Fr|bROBx^3S4| zAezU9+tqj@wQ9R|(Su52G_D7gW`^z`;5r|_Qya}p^j`)}G_4G*;^lm@Sc zLPyRa3@6ltn|;ruHjxP4BWP^fdkj-wGfO_2GSqMfm{Y2i8hG}6WNA)K=s-8fDj_1& zkOnWX$V8$Y$G&^8YTaNDh(IM%DWOng1pmYn%8Fh<wh09Tp$S990($_vtn{d!MQX45vSczw}2rMOQbSaxk8C3$!$bpUyAHYxqZ1f YEoCJSKn{oJh|-;DPHYBK$a3KR7pxa(H~;_u literal 0 HcmV?d00001 diff --git a/src/.cache/clangd/index/markdown.hpp.66A7ABFD738DA42D.idx b/src/.cache/clangd/index/markdown.hpp.66A7ABFD738DA42D.idx new file mode 100644 index 0000000000000000000000000000000000000000..5730bdac6978b44a3d5c59ddba51b45182c6fded GIT binary patch literal 1138 zcmWIYbaTsMVPJ4h@vO*AElC728AO1%xTGj^FCzoPUS^xdyT4O=A7Q>U-z}GuU%WZ^vyzrBMT}&KRerg z=vO|f;KN=0yjP(kok!vN(i@sj{2m${WG*|zeMsuty_uX348`^_91fh^^!sa7?fe&I zH!`x_k8a#?^-ssPb794Sj5+tWty8wp+LCa0y--QVtzS1LuP|Afut@!>&E%u0KbQ9S z_LqmAJbv6pfBREE7Twj$m*wc)i%~hVZHm{Au00n->dHH2#Bdea+381YPo1)4uIO8} zrtMENdpcI@Hi={CI&Q&Kj){>R=M zb>Yjw;@s5R*H1j%Jp1~`4}V4Ib`~NPL^jnfPvw|IY zgG}}Qr7S5;xXkbUD{fh1&W%UU4TXFYmT2mo^1pM(osprqGB@caFgBNceV)l@w~CFA ziJgUkhnfUN8ZZzV69m@o@@w92*lbG4Qal zv+;uo22P0XGK+QlZO)ix@h}K8FmQ88aH;SJO9-nlNHQ_9iEuJJyKzce@zDKgd`#j% z!#Vjlg~0^O@cPuCuqzfzPV+H|0j0U5x#YnFO#0f*$||dU78iLKgn)*-^SF!fi1Ubx zfDC691v|vNsU>*hvgM14UmYHZR z5hPm>3p7NSRhSp%F_<(H7sTHXZ!-WD@d=B;6v1dlNr>;EidG+Gnw3z?)&Vq)zZ{fj%}K9(HziUYIj^csSWPd0`<2^olT-B+M&7>kNd=VAk;Ph_i}w!$XHh zTtQq7#)Ihx`VJJ_Fz3Sz0t$nI872(V1#~z#WT6fRhHOqEh+SNiT #include -Config get_config(const std::string &CONFIG_FILE) { +Config get_config(const std::string &CONFIGURATION) { toml::table toml_table; try { - toml_table = toml::parse_file(CONFIG_FILE); + toml_table = toml::parse(CONFIGURATION); } catch (const toml::parse_error &err) { std::cerr << "Parsing failed:" << std::endl << err << std::endl; } diff --git a/src/config/config.hpp b/src/config/config.hpp index 30e25ee..1c40f89 100644 --- a/src/config/config.hpp +++ b/src/config/config.hpp @@ -17,4 +17,7 @@ struct Config { General general; }; -Config get_config(const std::string &CONFIG_FILE); +// @brief Load config into `Config` struct +// @param CONFIGURATION content of `.toml` file containing configuration +// @return Config with parsed configuration +Config get_config(const std::string &CONFIGURATION); diff --git a/src/format/format.cpp b/src/format/format.cpp index 5bf4f23..68516de 100644 --- a/src/format/format.cpp +++ b/src/format/format.cpp @@ -1,6 +1,4 @@ #include "markdown/markdown.hpp" -#include -#include #include static bool replace_once(std::string &str, const std::string &from, @@ -11,20 +9,3 @@ static bool replace_once(std::string &str, const std::string &from, str.replace(start_pos, from.length(), to); return true; } - -std::string inject_html_into_template(const std::string &FILE_NAME, - const std::string &TEMPLATE, - const std::string &HTML) { - std::string result; - std::ifstream file(FILE_NAME); - if (!file.is_open()) { - return ""; - } - std::ostringstream ss; - ss << file.rdbuf(); - result = ss.str(); - if (replace_once(result, TEMPLATE, HTML)) { - return result; - } - return ""; -} diff --git a/src/markdown/markdown.cpp b/src/markdown/markdown.cpp index 34bf0c5..81790c5 100644 --- a/src/markdown/markdown.cpp +++ b/src/markdown/markdown.cpp @@ -1,6 +1,5 @@ #include "markdown.hpp" #include -#include #include #include #include @@ -8,21 +7,21 @@ #include #include -std::optional get_metadata(const std::string &FILE_PATH) { - std::fstream file(FILE_PATH); +std::optional get_metadata(const std::string &FILE_CONTENTS) { + std::stringstream file_contents(FILE_CONTENTS); std::stringstream metadata_s; std::string buffer; /* if there's no ---, then no metadata in file there is */ - if (!getline(file, buffer) || buffer != "---") { - std::cerr << "File " << FILE_PATH << " does not contain metadata. " + if (!getline(file_contents, buffer) || buffer != "---") { + std::clog << "File does not contain any metadata. Is this intentional?" << std::endl; return std::nullopt; } std::map metadata_map; - while (getline(file, buffer)) { + while (getline(file_contents, buffer)) { if (buffer == "---") { break; } @@ -69,15 +68,15 @@ static void html_callback(const MD_CHAR *data, MD_SIZE size, void *userdata) { out->append(data, size); } -std::string get_html(const std::string &FILE_PATH) { - std::fstream file(FILE_PATH); +std::string get_html(const std::string &FILE_CONTENTS) { + std::stringstream file_contents(FILE_CONTENTS); std::string buffer, file_string, out; - getline(file, buffer); + getline(file_contents, buffer); bool is_metadata = buffer == "---"; /* skip metadata */ if (is_metadata) { - while (getline(file, buffer)) { + while (getline(file_contents, buffer)) { if (buffer == "---") { break; } @@ -86,7 +85,7 @@ std::string get_html(const std::string &FILE_PATH) { file_string += buffer + '\n'; } - while (getline(file, buffer)) { + while (getline(file_contents, buffer)) { file_string += buffer + '\n'; }