From f680fe177d9266360eaaac0ef12dff86230146bd Mon Sep 17 00:00:00 2001 From: Nate Choe Date: Sun, 11 Feb 2024 17:44:41 -0600 Subject: [PATCH] Better error checking and nesting documentation --- README.md | 29 +++++++++++++++++++++++++++++ src/parse.c | 3 +++ 2 files changed, 32 insertions(+) diff --git a/README.md b/README.md index 52b292e..09aba4f 100644 --- a/README.md +++ b/README.md @@ -158,3 +158,32 @@ this text isn't minified ``` Used for legacy web pages on my site that I don't want to update + +### Nesting + +``` +@=var Hello world!@ +@n @@$ echo '@!var@' | rev @@ @m +``` + +Turns into + +``` +@$ echo 'Hello world!' | rev @ +``` + +Turns into + +``` +!dlrow olleH +``` + +Things between an `@n` and `@m` tag get processed twice. A double escape char `@@` +gets escaped into a single escape char `@`. Defining variables in a nest is +illegal, so + +``` +@n @@= dynamic_variable @$./generate_variable_value.sh@ @@ @m +``` + +is illegal diff --git a/src/parse.c b/src/parse.c index 4aab5d3..d93cbbd 100644 --- a/src/parse.c +++ b/src/parse.c @@ -157,6 +157,9 @@ autoescapeend: break; } #endif + default: + fprintf(stderr, "Error in expansion phase: Unknown escape %c%c\n", ESCAPE_CHAR, data->data[i]); + return 1; } } else