Initial implementation of MarkDown support
This commit is contained in:
parent
849f3c6c62
commit
d4466d6136
37
main.cpp
37
main.cpp
@ -124,6 +124,31 @@ string32 parsePageHTML(string32 htmlContents) {
|
|||||||
return parsePage(htmlContents);
|
return parsePage(htmlContents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string32 parsePageMD(string32 mdContents) {
|
||||||
|
string32 htmlContents;
|
||||||
|
// Process markdown in to HTML
|
||||||
|
|
||||||
|
// Markdown is nicely separated by `\n\n` for each "section" so we can process them individually.
|
||||||
|
std::vector<string32> sections = mdContents.split("\n\n");
|
||||||
|
|
||||||
|
for (string32 section : sections) {
|
||||||
|
if (section.substr(0, 3) == "---") {
|
||||||
|
htmlContents += section + "\n\n";
|
||||||
|
continue;
|
||||||
|
} else if (section[0] == "#") {
|
||||||
|
htmlContents += "<h1>" + section.substr(1) + "</h1>";
|
||||||
|
} else {
|
||||||
|
htmlContents += "<p>" + section + "</p>";
|
||||||
|
}
|
||||||
|
htmlContents.replaceAroundSelfAll("***", "** *");
|
||||||
|
htmlContents.replaceAroundSelfAsymAll("**", "**", "<strong>", "</strong>");
|
||||||
|
htmlContents.replaceAroundSelfAsymAll("*", "*", "<em>", "</em>");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run it through normal pagePage
|
||||||
|
return parsePage(htmlContents);
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
std::string path = "source";
|
std::string path = "source";
|
||||||
|
|
||||||
@ -134,11 +159,17 @@ int main() {
|
|||||||
continue;
|
continue;
|
||||||
if (file.is_regular_file()) {
|
if (file.is_regular_file()) {
|
||||||
std::string ext = file.path().extension().string();
|
std::string ext = file.path().extension().string();
|
||||||
|
std::string writeExt = ext;
|
||||||
fs::create_directories("output" + file.path().parent_path().string().substr(6));
|
fs::create_directories("output" + file.path().parent_path().string().substr(6));
|
||||||
std::ofstream outfile("output" + file.path().string().substr(6));
|
std::string path = file.path().string();
|
||||||
if (ext == ".html") {
|
if (writeExt == ".md")
|
||||||
|
writeExt = ".html";
|
||||||
|
std::ofstream outfile("output" + path.substr(6, path.size() - ext.size() - 6) + writeExt);
|
||||||
|
if (ext == ".html")
|
||||||
outfile << parsePageHTML(readfile(file.path().c_str()));
|
outfile << parsePageHTML(readfile(file.path().c_str()));
|
||||||
} else {
|
else if (ext == ".md")
|
||||||
|
outfile << parsePageMD(readfile(file.path().c_str()));
|
||||||
|
else {
|
||||||
char* data = read(file.path().c_str());
|
char* data = read(file.path().c_str());
|
||||||
int length = *(int*)data;
|
int length = *(int*)data;
|
||||||
outfile.write(data+4, length);
|
outfile.write(data+4, length);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user