From 9439c01a75998598a06e2ec4d2c4bb562d37a735 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Sun, 1 May 2022 23:07:59 +0300 Subject: [PATCH] fixes and tweaks... Signed-off-by: Alex A. Naanou --- pwiki2.js | 59 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/pwiki2.js b/pwiki2.js index 45226e7..7e61f5c 100755 --- a/pwiki2.js +++ b/pwiki2.js @@ -494,24 +494,40 @@ object.Constructor('BasePage', { // PREFIX -- 'inline' or 'elem' var MACRO_ARGS = module.MACRO_ARGS = -['(', - // arg='val' | arg="val" | arg=val - '|\\s+(?[a-z]+)\\s*=\\s*(',[ - "'(?[^']*)'", - '"(?[^"]*)"', - '(?[^\\s"\']*)', - ].join('|'),')', - // "arg" | 'arg' - // XXX quote escaping??? - // XXX CHROME/NODE BUG: this does not work yet... - //'\\s+(?[\'"])[^\\k]*\\k', - '\\s+"(?[^"]*)"', - "|\\s+'(?[^']*)'", - // arg - //'|\\s+[^\\s\\/>\'"]+', - '|\\s+(?[^\\sSTOP\'"]+)', +['(',[ + // arg='val' | arg="val" | arg=val + '\\s+(?[a-z]+)\\s*=\\s*(?'+([ + // XXX for some readon we are not getting anythinng + // matching back from these... + // ...but they seem to match correctly within + // the macro -- nestin issue??? + "'(?[^']*)'", + '"(?[^"]*)"', + '(?[^\\sSTOP\'"]+)', + ].join('|'))+')', + // "arg" | 'arg' + // XXX quote escaping??? + // XXX CHROME/NODE BUG: this does not work yet... + //'\\s+(?[\'"])[^\\k]*\\k', + '\\s+"(?[^"]*)"', + "\\s+'(?[^']*)'", + // arg + //'|\\s+[^\\s\\/>\'"]+', + '\\s+(?[^\\sSTOP\'"]+)', + ].join('|'), ')'].join('') +var buildArgsPattern = +module.buildArgsPattern = +function(prefix, stop='', regexp='smig'){ + var pattern = module.MACRO_ARGS + .replace(/PREFIX/g, prefix) + .replace(/STOP/g, stop) + return regexp ? + new RegExp(pattern, regexp) + : pattern } + + // needs: // MACROS // INLINE_ARGS -- MACRO_ARGS.replace(/STOP/, ')') @@ -527,17 +543,6 @@ module.MACRO = 'MACROS)\\s*>', ].join('|') - -var buildArgsPattern = -module.buildArgsPattern = -function(prefix, stop='', regexp='smig'){ - var pattern = module.MACRO_ARGS - .replace(/PREFIX/g, prefix) - .replace(/STOP/g, stop) - return regexp ? - new RegExp(pattern, regexp) - : pattern } - var buildMacroPattern = module.buildMacroPattern = function(macros=['macro'], regexp='smig'){