commit 2ebbe89ddf64a1cdaea65b4d49ffe668c6577e00
parent 39b1d95bcdb6f6dfe17186a05798084234d0cc24
Author: thing1 <thing1@seacrossedlovers.xyz>
Date: Tue, 8 Apr 2025 09:53:29 +0100
made some additions that allow for better outputing of data
Diffstat:
| M | TODO.gn | | | 2 | +- |
| M | gn.c | | | 24 | +++--------------------- |
| A | opts.h | | | 19 | +++++++++++++++++++ |
| M | output.c | | | 32 | +++++++++++++++++++++++++------- |
4 files changed, 48 insertions(+), 29 deletions(-)
diff --git a/TODO.gn b/TODO.gn
@@ -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?
diff --git a/gn.c b/gn.c
@@ -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;
diff --git a/opts.h b/opts.h
@@ -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;
diff --git a/output.c b/output.c
@@ -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);
}