]> git.plutz.net Git - shellwiki/commitdiff
cache macro list
authorPaul Hänsch <paul@plutz.net>
Fri, 18 Mar 2022 11:51:40 +0000 (12:51 +0100)
committerPaul Hänsch <paul@plutz.net>
Fri, 18 Mar 2022 11:51:40 +0000 (12:51 +0100)
md_macros.awk

index 7e1548235479ad9a733591559775e2c8d990b03b..4b85a0e5dae84a282e48c7e6f14633fef8bbc8a4 100755 (executable)
@@ -41,18 +41,13 @@ function argsplit(line, args, LOCAL, c, n, ctx) {
   }
 } 
 
-function macro(call, LOCAL, line, files, n, args) {
-  "cd " sh_escape(ENVIRON["MD_MACROS"]) "; printf '%s/' *" |getline line;
-  split(line, files, "/");
-  for (n in files) { files[files[n]] = ""; delete files[n]; }
-  delete files[""];
-
+function macro(call, LOCAL, line, args) {
   argsplit(call, args);
   call="";
 
   for (n = 1; n in args; n++) call = call sh_escape(args[n]) " ";
 
-  if (args[1] in files) {
+  if (args[1] in MACROS) {
     RS=""; ORS=""; line="";
     "printf '%s' " sh_escape(file) " | " sh_escape(ENVIRON["MD_MACROS"]) "/" call | getline line;
     return line;
@@ -62,5 +57,11 @@ function macro(call, LOCAL, line, files, n, args) {
 }
 
 BEGIN {
-  if (ENVIRON["MD_MACROS"]) { AllowMacros = "true"; }
+  if (ENVIRON["MD_MACROS"]) {
+    AllowMacros = "true";
+    "cd " sh_escape(ENVIRON["MD_MACROS"]) "; printf '%s/' *" |getline macro_list;
+    split(macro_list, MACROS, "/");
+    for (n in MACROS) { MACROS[MACROS[n]] = ""; delete MACROS[n]; }
+    delete MACROS[""];
+  }
 }