#include #include #include "htmlTranslator.h" char* html_to_bash_format(const char* input) { if (!input) return NULL; // Großzügiger Puffer size_t max_len = strlen(input) * 4 + 1; char* result = (char*)malloc(max_len); if (!result) return NULL; char* dest = result; const char* src = input; while (*src) { // Tabulatoren abfangen und durch EIN Leerzeichen ersetzen. // Verhindert, dass das Terminal-Rendering den ASCII-Kasten zerreißt. if (*src == '\t') { *dest++ = ' '; src++; continue; } // Erkennung für
,
,
,
etc. if (src[0] == '<' && (src[1] == 'b' || src[1] == 'B') && (src[2] == 'r' || src[2] == 'R')) { const char *temp = src + 3; // Überspringe eventuelle Leerzeichen oder Slashes im Tag while (*temp == ' ' || *temp == '/') temp++; if (*temp == '>') { *dest++ = '\n'; src = temp + 1; continue; } } // Fettschrift (Case-Insensitive) if (strncmp(src, "", 3) == 0 || strncmp(src, "", 3) == 0) { strcpy(dest, "\033[1m"); dest += 4; src += 3; continue; } if (strncmp(src, "", 4) == 0 || strncmp(src, "", 4) == 0) { strcpy(dest, "\033[22m"); dest += 5; src += 4; continue; } // Kursiv (Case-Insensitive) if (strncmp(src, "", 3) == 0 || strncmp(src, "", 3) == 0) { strcpy(dest, "\033[3m"); dest += 4; src += 3; continue; } if (strncmp(src, "", 4) == 0 || strncmp(src, "", 4) == 0) { strcpy(dest, "\033[23m"); dest += 5; src += 4; continue; } // HTML-Leerzeichen if (strncmp(src, " ", 6) == 0) { *dest++ = ' '; src += 6; continue; } // Normales Zeichen kopieren *dest++ = *src++; } *dest = '\0'; char* optimized = realloc(result, (dest - result) + 1); return optimized ? optimized : result; }