X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=md_macros.awk;h=88e662f7d913f3058120c405a065ea507537d77c;hb=65676ea8331f60d882e3baec99c101382e9fad57;hp=7e1548235479ad9a733591559775e2c8d990b03b;hpb=b2c5e68fd567ad46143e70254c95f5b1050c8ed0;p=shellwiki diff --git a/md_macros.awk b/md_macros.awk index 7e15482..88e662f 100755 --- a/md_macros.awk +++ b/md_macros.awk @@ -41,20 +41,17 @@ 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) { + oldRS=RS; oldORS=ORS; RS=""; ORS=""; line=""; "printf '%s' " sh_escape(file) " | " sh_escape(ENVIRON["MD_MACROS"]) "/" call | getline line; + RS=oldRS; ORS=oldORS; return line; } else { return HTML("<<" call ">>"); @@ -62,5 +59,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[""]; + } }