summaryrefslogtreecommitdiff
path: root/output.c
blob: c42015c20cc414eab1ea2ea62494ebe0d24a4f0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <stdbool.h>
#include <string.h>

#include "tokens.h"
#include "opts.h"

void printashtml(token t) {
	char *start, *end;
	switch (t.type) {
		case HEADING: start = "<h1>"; end = "</h1>\n"; break;
		case DATE: start = "<h2>"; end = "</h2>\n"; break;
		case TODO: start = "<h3>"; end = "</h3>\n"; break;
		case BULLET: start = "<p>"; end = "</p>\n"; break;
	}
	printf("%s%s%s", start, t.data, end);
}

void printasgn(token t) {
	char *start, *end;
	bool p = (m & PRETTY) == PRETTY;
	switch (t.type) {
		case HEADING: 
			start = (p) ? "\e[1m*" : "*";
			end = (p) ? "* \e[0m" : " *";
			break;
		case DATE: 
			start = (p) ? "\e[4m[" :  "[";
			end = (p) ? "]\e[0m " : "] ";
			break;
		case TODO: 
			if (strcmp(t.data, "done") == 0) {
				start = (p) ? "\x1B[32m\e[2m{" : "{";
				end = (p) ? "}\n\x1B[31m\e[0m\e[0m" : "}\n";
			} else {
				start = (p) ? "\x1B[31m\e[2m{" : "{";
				end = (p) ? "}\n\x1B[31m\e[0m\e[0m" : "}\n";
			}
			break;
		case BULLET: 
			start = (p) ? "\e[3m- " : "- ";
			end = (p) ? "\n\e[0m" : "\n";
			break;
	}
	printf("%s%s%s", start, t.data, end);
}

void printasgroff(token t) {
	char *start, *end;
	switch (t.type) {
		case HEADING: start = ".NH\n"; end = "\n"; break;
		case DATE: start = ".LP\n"; end = "\n"; break;
		case TODO: start = ".LP\n"; end = "\n"; break;
		case BULLET: start = ".PP\n"; end = "\n"; break;
	}
	printf("%s%s%s", start, t.data, end);
}

void printastext(token t) {
	char *start, *end;
	switch (t.type) {
		case HEADING: start = " "; end = " "; break;
		case DATE: start = " "; end = " "; break;
		case TODO: start = " "; end = " \n"; break;
		case BULLET: start = " "; end = " \n"; break;
	}
	printf("%s%s%s", start, t.data, end);
}