output.c (1720B)
1 #include <stdio.h> 2 #include <stdbool.h> 3 #include <string.h> 4 5 #include "tokens.h" 6 #include "opts.h" 7 8 void printashtml(token t) { 9 char *start, *end; 10 switch (t.type) { 11 case HEADING: start = "<h1>"; end = "</h1>\n"; break; 12 case DATE: start = "<h2>"; end = "</h2>\n"; break; 13 case TODO: start = "<h3>"; end = "</h3>\n"; break; 14 case BULLET: start = "<p>"; end = "</p>\n"; break; 15 } 16 printf("%s%s%s", start, t.data, end); 17 } 18 19 void printasgn(token t) { 20 char *start, *end; 21 bool p = (m & PRETTY) == PRETTY; 22 switch (t.type) { 23 case HEADING: 24 start = (p) ? "\e[1m*" : "*"; 25 end = (p) ? "* \e[0m" : " *"; 26 break; 27 case DATE: 28 start = (p) ? "\e[4m[" : "["; 29 end = (p) ? "]\e[0m " : "] "; 30 break; 31 case TODO: 32 if (strcmp(t.data, "done") == 0) { 33 start = (p) ? "\x1B[32m\e[2m{" : "{"; 34 end = (p) ? "}\n\x1B[31m\e[0m\e[0m" : "}\n"; 35 } else { 36 start = (p) ? "\x1B[31m\e[2m{" : "{"; 37 end = (p) ? "}\n\x1B[31m\e[0m\e[0m" : "}\n"; 38 } 39 break; 40 case BULLET: 41 start = (p) ? "\e[3m- " : "- "; 42 end = (p) ? "\n\e[0m" : "\n"; 43 break; 44 } 45 printf("%s%s%s", start, t.data, end); 46 } 47 48 void printasgroff(token t) { 49 char *start, *end; 50 switch (t.type) { 51 case HEADING: start = ".NH\n"; end = "\n"; break; 52 case DATE: start = ".LP\n"; end = "\n"; break; 53 case TODO: start = ".LP\n"; end = "\n"; break; 54 case BULLET: start = ".PP\n"; end = "\n"; break; 55 } 56 printf("%s%s%s", start, t.data, end); 57 } 58 59 void printastext(token t) { 60 char *start, *end; 61 switch (t.type) { 62 case HEADING: start = " "; end = " "; break; 63 case DATE: start = " "; end = " "; break; 64 case TODO: start = " "; end = " \n"; break; 65 case BULLET: start = " "; end = " \n"; break; 66 } 67 printf("%s%s%s", start, t.data, end); 68 }