diff options
-rw-r--r-- | TODO.gn | 2 | ||||
-rw-r--r-- | gn.c | 24 | ||||
-rw-r--r-- | opts.h | 19 | ||||
-rw-r--r-- | output.c | 32 |
4 files changed, 48 insertions, 29 deletions
@@ -1,4 +1,4 @@ -* Syntax checking * [ 2025.02.10] {done} +* Syntax checking * [2025.02.10] {done} - loop through tokens and find if they are in the right order * More output formats * [2025.02.10] {todo} - Latex? @@ -7,26 +7,10 @@ #include "tokens.h" #include "output.h" #include "util.h" - -typedef enum mode { - NONE = 0, - LIST = 1, - CHECK = 2, - OUTPUT = 4, - PRETTY = 8, -} mode; - -typedef enum outputformats { - GOATNOTE, - HTML, - GROFF, - TEXT, -} outputformats; +#include "opts.h" outputformats outputformat; - mode m = NONE; - token tokens[1024]; int tokcount = 0; @@ -80,13 +64,11 @@ int readuntil(char *file, int off, char end, types t) { } void usage() { - fprintf(stderr, - "usage: gn [-l -c -o format -p -H header -F footer -h] < note.gn\n" - ); - exit(1); + eprint("usage: gn [-l -c -o format -p -H header -F footer -h] < note.gn"); } int main(int argc, char **argv) { + if (argc <= 1) usage(); for (int i = 1; i < argc && argc != 1; i++) { if (strcmp(argv[i], "-l") == 0) m |= LIST; else if (strcmp(argv[i], "-c") == 0) m |= CHECK; @@ -0,0 +1,19 @@ +typedef enum mode { + NONE = 0, + LIST = 1, + CHECK = 2, + OUTPUT = 4, + PRETTY = 8, +} mode; + +typedef enum outputformats { + GOATNOTE, + HTML, + GROFF, + TEXT, +} outputformats; + +extern outputformats outputformat; +extern mode m; +extern token tokens[1024]; +extern int tokcount; @@ -1,9 +1,9 @@ #include <stdio.h> +#include <stdbool.h> +#include <string.h> #include "tokens.h" - -extern token tokens[1024]; -extern int tokcount; +#include "opts.h" void printashtml(token t) { char *start, *end; @@ -18,11 +18,29 @@ void printashtml(token t) { void printasgn(token t) { char *start, *end; + bool p = (m & PRETTY) == PRETTY; 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; + 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); } |