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);
}
|