never own you

This commit is contained in:
radhitya 2025-01-14 20:04:36 +07:00
parent 2271650ca8
commit 796535c3aa

72
main.c
View File

@ -1,3 +1,9 @@
/* daisy
* alif@radhitya.org
*
* thank you stackoverflow, geeksforgeeks, grok
*/
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -5,7 +11,8 @@
#define MAX_LENGTH 1000 #define MAX_LENGTH 1000
typedef struct markdown { typedef struct
markdown {
int bold; int bold;
int quote; int quote;
int italic; int italic;
@ -18,7 +25,9 @@ markdown mdt;
FILE *fptr; FILE *fptr;
void checker() { void
checker()
{
fptr = fopen("./source/data.txt", "rb+"); fptr = fopen("./source/data.txt", "rb+");
if (fptr == NULL) { if (fptr == NULL) {
perror("galat checker buat ./source/data.txt"); perror("galat checker buat ./source/data.txt");
@ -26,7 +35,9 @@ void checker() {
} }
} }
int main(int argc, char *argv[]) { int
main(int argc, char *argv[])
{
if (argc < 2) { if (argc < 2) {
printf("penggunaan: %s <berkas_input>\natau %s -h untuk info lebih lanjut\n", argv[0], argv[0]); printf("penggunaan: %s <berkas_input>\natau %s -h untuk info lebih lanjut\n", argv[0], argv[0]);
return 1; return 1;
@ -74,7 +85,9 @@ int main(int argc, char *argv[]) {
char txt[MAX_LENGTH], of[MAX_LENGTH]; char txt[MAX_LENGTH], of[MAX_LENGTH];
int i, len; int i, len;
mdt.italic = 0, mdt.bold = 0, mdt.quote = 0, mdt.headingone = 0;
mdt.italic = 0, mdt.bold = 0, mdt.quote = 0, mdt.headingone = 0, mdt.headingtwo = 0;
mdt.headingthree = 0;
const char *file_name = strrchr(argv[1], '/'); const char *file_name = strrchr(argv[1], '/');
if (file_name == NULL) { if (file_name == NULL) {
@ -99,28 +112,48 @@ int main(int argc, char *argv[]) {
} }
fprintf(fpto, "<html>\n<body>\n"); fprintf(fpto, "<html>\n<body>\n");
while (fgets(txt, MAX_LENGTH, fptr) != NULL) { while (fgets(txt, MAX_LENGTH, fptr) != NULL) {
len = strlen(txt); len = strlen(txt);
if (len > 0 && txt[len-1] == '\n') {
// hapus newline
if (len > 0 && txt[len-1] == '\n') {
txt[--len] = '\0'; txt[--len] = '\0';
} }
mdt.headingone = 0; mdt.headingone = 0;
mdt.headingtwo = 0;
mdt.quote = 0; mdt.quote = 0;
if(len == 0) { if(len == 0) {
fprintf(fpto, "\n"); fprintf(fpto, "\n");
} else { } else {
if(len > 0 && txt[0] == '#' && (len == 1 || txt[1] != '\\')) { i = 0;
fprintf(fpto, "<h1>"); if(len > 1 && txt[0] == '#' && txt[1] != '\\') {
mdt.headingone = 1; if(len > 2 && txt[1] == '#' && txt[2] != '\\') {
} if(len > 3 && txt[2] == '#' && txt[3] != '\\') {
else if (len > 0 && txt[0] == '>' && (len == 1 || txt[1] != '\\')) { fprintf(fpto, "<h3>");
mdt.headingthree = 1;
while (i < len && (txt[i] == '#' || txt[i] == ' ')) i++;
} else {
fprintf(fpto, "<h2>");
mdt.headingtwo = 1;
while (i < len && (txt[i] == '#' || txt[i] == ' ')) i++;
}
} else {
fprintf(fpto, "<h1>");
mdt.headingone = 1;
while (i < len && (txt[i] == '#' || txt[i] == ' ')) i++;
}
} else if (len > 1 && txt[0] == '>' && txt[1] != '\\') {
fprintf(fpto, "<blockquote>"); fprintf(fpto, "<blockquote>");
mdt.quote = 1; mdt.quote = 1;
} i = 0;
else { } else {
fprintf(fpto, "<p>"); fprintf(fpto, "<p>");
i = 0;
} }
for(i = 0; i < len; i++) {
for(; i < len; i++) {
if (txt[i] == '_' && (i == 0 || txt[i-1] != '\\')) { if (txt[i] == '_' && (i == 0 || txt[i-1] != '\\')) {
if(!mdt.italic) { if(!mdt.italic) {
fprintf(fpto, "<i>"); fprintf(fpto, "<i>");
@ -151,10 +184,17 @@ int main(int argc, char *argv[]) {
else if(mdt.quote) fprintf(fpto, "</blockquote>"); else if(mdt.quote) fprintf(fpto, "</blockquote>");
else if(mdt.headingone) { else if(mdt.headingone) {
fprintf(fpto, "</h1>\n"); fprintf(fpto, "</h1>\n");
} else { }
else if(mdt.headingtwo) {
fprintf(fpto, "</h2>\n");
}
else if(mdt.headingthree) {
fprintf(fpto, "</h3>\n");
}
else {
fprintf(fpto, "</p>\n"); fprintf(fpto, "</p>\n");
} }
mdt.italic = mdt.bold = mdt.quote = mdt.headingone = 0; mdt.italic = mdt.bold = mdt.quote = mdt.headingone = mdt.headingtwo = mdt.headingthree = 0;
} }
} }