gn

thing1's goat note implementation
Log | Files | Refs

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 }