This commit is contained in:
radhitya 2025-01-23 12:41:55 +07:00
parent 3507a9f538
commit 24a0a640f1

97
main.c
View File

@ -21,6 +21,7 @@ typedef struct {
int italic; int italic;
int hyperlink; int hyperlink;
int code; int code;
int blockcode;
int headingone; int headingone;
int headingtwo; int headingtwo;
int headingthree; int headingthree;
@ -445,16 +446,16 @@ dohyperlink(void) {
void build(void) { void build(void) {
} }
void generate(void) {
void generate(void) {
header = doinsert("./media/header.html"); header = doinsert("./media/header.html");
fprintf(fpto, "<html>\n<head>\n<meta charset=\"utf-8\"/>\n<title>homepage - %s</title><link rel=\"stylesheet\" href=\"style.css\">\n</head>\n<body>", SUBTITLE); fprintf(fpto, "<html>\n<head>\n<meta charset=\"utf-8\"/>\n<title>homepage - %s</title><link rel=\"stylesheet\" href=\"style.css\">\n</head>\n<body>", SUBTITLE);
if( header == NULL ) { if (header == NULL) {
printf("header NULL\n"); printf("header NULL\n");
} else { } else {
fprintf(fpto, "%s\n", header); fprintf(fpto, "%s\n", header);
} }
while (fgets(txt, MAX_LENGTH, fptr) != NULL) { while (fgets(txt, MAX_LENGTH, fptr) != NULL) {
@ -464,48 +465,62 @@ void generate(void) {
txt[--len] = '\0'; txt[--len] = '\0';
} }
mdt.headingone = mdt.headingtwo = mdt.headingthree = mdt.quote = 0; mdt.headingone = mdt.headingtwo = mdt.headingthree = mdt.quote = mdt.blockcode = 0;
if (len == 0) { if (len == 0) {
fprintf(fpto, "\n"); fprintf(fpto, "\n");
} else { } else {
i = 0; i = 0;
judul = 0; judul = 0;
if (txt[0] == '#') { if (txt[0] == '#') {
int heading_count = 0; int heading_count = 0;
while (i < len && txt[i] == '#') { while (i < len && txt[i] == '#') {
heading_count++; heading_count++;
i++; i++;
} }
if (i < len && txt[i] == ' ') { if (i < len && txt[i] == ' ') {
i++; i++;
char *title_start = txt + i; char *title_start = txt + i;
if (heading_count == 1) { if (heading_count == 1) {
if (!judul) { if (!judul) {
judul = 1; judul = 1;
fseek(fpto, 0, SEEK_SET); fseek(fpto, 0, SEEK_SET);
fprintf(fpto, "<html>\n<head>\n<meta charset=\"utf-8\"/>\n" fprintf(fpto, "<html>\n<head>\n<meta charset=\"utf-8\"/>\n"
"<title>%s - %s</title>\n<link rel=\"stylesheet\" href=\"style.css\">\n" "<title>%s - %s</title>\n<link rel=\"stylesheet\" href=\"style.css\">\n"
"</head><body>", title_start, SUBTITLE); "</head><body>", title_start, SUBTITLE);
fprintf(fpto, "%s\n", header); fprintf(fpto, "%s\n", header);
}
fprintf(fpto, "<h1>%s</h1>", title_start);
} else {
fprintf(fpto, "<h%d>%s</h%d>\n", heading_count, title_start, heading_count);
}
continue;
}
} }
fprintf(fpto, "<h1>%s</h1>", title_start);
} else {
fprintf(fpto, "<h%d>%s</h%d>\n", heading_count, title_start, heading_count);
}
continue;
}
}
else if (len > 1 && txt[0] == '>' && txt[1] != '\\') { else if (len > 1 && txt[0] == '>' && txt[1] != '\\') {
doblockquote(); doblockquote();
while (i < len && (txt[i] == '>' || txt[i] == ' ')) i++; while (i < len && (txt[i] == '>' || txt[i] == ' ')) i++;
}
else if (len > 2 && txt[0] == '`' && txt[1] == '`' && txt[2] == '`' && (i == 0 || txt[i-1] != '\\')) {
if (mdt.blockcode == 0) {
fprintf(fpto, "<pre><code>");
mdt.blockcode = 1;
i += 3;
} else {
fprintf(fpto, "</code></pre>");
mdt.blockcode = 0;
i += 3;
}
continue;
} else if (mdt.blockcode == 1) {
fprintf(fpto, "%s\n", txt);
continue;
} else { } else {
fprintf(fpto, "<p>"); fprintf(fpto, "<p>");
i = 0;
} }
for (; i < len; i++) { for (; i < len; i++) {
@ -525,13 +540,13 @@ if (txt[0] == '#') {
} }
if (mdt.italic) fprintf(fpto, "</i>"); if (mdt.italic) fprintf(fpto, "</i>");
else if (mdt.code) fprintf(fpto, "</code>"); if (mdt.code) fprintf(fpto, "</code>");
else if (mdt.bold) fprintf(fpto, "</b>"); if (mdt.bold) fprintf(fpto, "</b>");
else if (mdt.quote) fprintf(fpto, "</blockquote>\n"); if (mdt.quote) fprintf(fpto, "</blockquote>\n");
else if (mdt.headingone) fprintf(fpto, "</h1>\n"); if (mdt.headingone) fprintf(fpto, "</h1>\n");
else if (mdt.headingtwo) fprintf(fpto, "</h2>\n"); if (mdt.headingtwo) fprintf(fpto, "</h2>\n");
else if (mdt.headingthree) fprintf(fpto, "</h3>\n"); if (mdt.headingthree) fprintf(fpto, "</h3>\n");
if (!(mdt.headingone || mdt.headingtwo || mdt.headingthree || mdt.quote)) fprintf(fpto, "</p>\n"); if (!(mdt.headingone || mdt.headingtwo || mdt.headingthree || mdt.quote || mdt.blockcode)) fprintf(fpto, "</p>\n");
mdt.italic = mdt.bold = mdt.quote = mdt.headingone = mdt.headingtwo = mdt.headingthree = mdt.code = 0; mdt.italic = mdt.bold = mdt.quote = mdt.headingone = mdt.headingtwo = mdt.headingthree = mdt.code = 0;
} }
@ -539,10 +554,10 @@ if (txt[0] == '#') {
footer = doinsert("./media/footer.html"); footer = doinsert("./media/footer.html");
if(footer == NULL) { if (footer == NULL) {
printf("gak ada footer bro :(\n"); printf("gak ada footer bro :(\n");
} else { } else {
fprintf(fpto, "%s", footer); fprintf(fpto, "%s", footer);
} }
fprintf(fpto, "</body>\n</html>"); fprintf(fpto, "</body>\n</html>");