diff --git a/main.c b/main.c index 1219036..4d70a98 100644 --- a/main.c +++ b/main.c @@ -58,8 +58,8 @@ void checker(void) { void build(void) { mdt.italic = mdt.bold = mdt.quote = mdt.headingone = mdt.headingtwo = mdt.headingthree = mdt.code = 0; - fprintf(fpto, "\n
\n\n\n");
}
- for (; i < len; i++) {
+ for (i = 0; i < len; i++) {
+
if (txt[i] == '_' && (i == 0 || txt[i-1] != '\\')) {
if (!mdt.italic) {
fprintf(fpto, "");
@@ -107,12 +108,60 @@ void build(void) {
fprintf(fpto, "");
mdt.italic = 0;
}
- }
- if(txt[i] == '!' && (i == 0 || txt[i-1] != '\\')) {
- if(txt[i] == '[' && (i == 0 || txt[i-1] !='\\')) {
- }
- }
- else if (txt[i] == '[' && (i == 0 || txt[i-1] != '\\')) {
+ } else if (txt[i] == '!' && (i == 0 || txt[i-1] != '\\')) {
+ if (i + 1 < len && txt[i+1] == '[' && (i == 0 || txt[i] != '\\')) {
+ int alt_start = i + 2;
+ int alt_end = -1;
+ int url_start = -1;
+ int url_end = -1;
+ int j;
+
+ for (j = alt_start; j < len; j++) {
+ if (txt[j] == ']' && (j == 0 || txt[j-1] != '\\')) {
+ alt_end = j;
+ break;
+ }
+ }
+
+ if (alt_end != -1) {
+ for (j = alt_end + 1; j < len; j++) {
+ if (txt[j] == '(' && (j == 0 || txt[j-1] != '\\')) {
+ url_start = j + 1;
+ break;
+ }
+ }
+
+ if (url_start != -1) {
+ for (j = url_start; j < len; j++) {
+ if (txt[j] == ')' && (j == 0 || txt[j-1] != '\\')) {
+ url_end = j;
+ break;
+ }
+ }
+ }
+ }
+
+ if (alt_end != -1 && url_end != -1) {
+ char alt_text[100], url[100];
+ int alt_len = alt_end - alt_start;
+ int url_len = url_end - url_start;
+
+ strncpy(alt_text, txt + alt_start, alt_len);
+ alt_text[alt_len] = '\0';
+
+ strncpy(url, txt + url_start, url_len);
+ url[url_len] = '\0';
+
+ fprintf(fpto, "", url, alt_text);
+
+ i = url_end;
+ } else {
+ fprintf(fpto, "!");
+ }
+ } else {
+ fprintf(fpto, "!");
+ }
+ } else if (txt[i] == '[' && (i == 0 || txt[i-1] != '\\')) {
int start_linkname = i + 1;
int end_linkname = -1;
int start_linkurl = -1;
@@ -185,16 +234,16 @@ void build(void) {
}
if (mdt.italic) fprintf(fpto, "");
- if (mdt.code) fprintf(fpto, "");
- if (mdt.bold) fprintf(fpto, "");
- if (mdt.quote) fprintf(fpto, "\n");
- else if (mdt.headingone) fprintf(fpto, "\n");
- else if (mdt.headingtwo) fprintf(fpto, "\n");
- else if (mdt.headingthree) fprintf(fpto, "\n");
- if (!(mdt.headingone || mdt.headingtwo || mdt.headingthree || mdt.quote)) fprintf(fpto, "