summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthing1 <thing1@seacrossedlovers.xyz>2025-04-08 09:53:29 +0100
committerthing1 <thing1@seacrossedlovers.xyz>2025-04-08 09:53:29 +0100
commit2ebbe89ddf64a1cdaea65b4d49ffe668c6577e00 (patch)
tree45f0b0d95d8959c951fe614ccb81e35e33291a95
parent39b1d95bcdb6f6dfe17186a05798084234d0cc24 (diff)
made some additions that allow for better outputing of dataHEADmaster
-rw-r--r--TODO.gn2
-rw-r--r--gn.c24
-rw-r--r--opts.h19
-rw-r--r--output.c32
4 files changed, 48 insertions, 29 deletions
diff --git a/TODO.gn b/TODO.gn
index 78ef2c1..7ef24fb 100644
--- 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
index b56d934..f09b078 100644
--- 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
new file mode 100644
index 0000000..76bed31
--- /dev/null
+++ 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
index fc7eb28..c42015c 100644
--- 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);
}