mirror of
https://github.com/flynx/pWiki.git
synced 2025-11-02 03:50:10 +00:00
fixed tag pattern args, still need to do inline args...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
39bff14b3a
commit
d452b63465
26
pwiki2.js
26
pwiki2.js
@ -492,6 +492,18 @@ object.Constructor('BasePage', {
|
|||||||
// XXX BUG? '<slot name=x text="moo <now/> foo">' is parsed semi-wrong...
|
// XXX BUG? '<slot name=x text="moo <now/> foo">' is parsed semi-wrong...
|
||||||
var parser =
|
var parser =
|
||||||
module.parser = {
|
module.parser = {
|
||||||
|
// XXX
|
||||||
|
MACRO_INLINE_ARGS: '[^)]*',
|
||||||
|
// XXX ugly...
|
||||||
|
MACRO_ARGS: ['(',
|
||||||
|
// "arg" | 'arg'
|
||||||
|
'\\s+"[^"]"',
|
||||||
|
'|\\s+\'[^\']\'',
|
||||||
|
// arg
|
||||||
|
'|\\s+[^\\s\\/>\'"]+',
|
||||||
|
// arg='val' | arg="val" | arg=val
|
||||||
|
'|\\s+[a-z]+=(\'[^\']*\'|"[^"]*"|[^\\s"\']*)',
|
||||||
|
')*'].join(''),
|
||||||
// patterns...
|
// patterns...
|
||||||
//
|
//
|
||||||
// NOTE: the actual macro pattern is not stored as it depends on
|
// NOTE: the actual macro pattern is not stored as it depends on
|
||||||
@ -500,10 +512,12 @@ module.parser = {
|
|||||||
MACRO_PATTERN_STR: [[
|
MACRO_PATTERN_STR: [[
|
||||||
// @macro(arg ..)
|
// @macro(arg ..)
|
||||||
// XXX add support for '\)' in args...
|
// XXX add support for '\)' in args...
|
||||||
'\\\\?@(?<nameInline>MACROS)\\((?<argsInline>([^)])*)\\)',
|
//'\\\\?@(?<nameInline>MACROS)\\((?<argsInline>([^)])*)\\)',
|
||||||
|
'\\\\?@(?<nameInline>MACROS)\\((?<argsInline>MACRO_INLINE_ARGS)\\)',
|
||||||
// <macro ..> | <macro ../>
|
// <macro ..> | <macro ../>
|
||||||
// XXX need to ignore ">" in quotes and "/" not before >...
|
// XXX need to ignore ">" in quotes and "/" not before >...
|
||||||
'<\\s*(?<nameOpen>MACROS)(?<argsOpen>\\s+([^>/])*)?/?>',
|
//'<\\s*(?<nameOpen>MACROS)(?<argsOpen>\\s+([^>/])*)?/?>',
|
||||||
|
'<\\s*(?<nameOpen>MACROS)(?<argsOpen>MACRO_ARGS)?/?>',
|
||||||
// </macro>
|
// </macro>
|
||||||
'</\\s*(?<nameClose>MACROS)\\s*>',
|
'</\\s*(?<nameClose>MACROS)\\s*>',
|
||||||
].join('|'), 'smig'],
|
].join('|'), 'smig'],
|
||||||
@ -512,7 +526,11 @@ module.parser = {
|
|||||||
get MACRO_PATTERN_GROUPS(){
|
get MACRO_PATTERN_GROUPS(){
|
||||||
return this.__MACRO_PATTERN_GROUPS
|
return this.__MACRO_PATTERN_GROUPS
|
||||||
?? (this.__MACRO_PATTERN_GROUPS =
|
?? (this.__MACRO_PATTERN_GROUPS =
|
||||||
'<MACROS>'.split(new RegExp(`(${ this.MACRO_PATTERN_STR })`)).length-2) },
|
'<MACROS>'.split(new RegExp(`(${
|
||||||
|
this.MACRO_PATTERN_STR[0]
|
||||||
|
.replace(/MACRO_ARGS/g, this.MACRO_ARGS)
|
||||||
|
.replace(/MACRO_INLINE_ARGS/g, this.MACRO_INLINE_ARGS)
|
||||||
|
})`)).length-2) },
|
||||||
// XXX still buggy...
|
// XXX still buggy...
|
||||||
MACRO_ARGS_PATTERN: RegExp('('+[
|
MACRO_ARGS_PATTERN: RegExp('('+[
|
||||||
// named args...
|
// named args...
|
||||||
@ -593,6 +611,8 @@ module.parser = {
|
|||||||
// XXX should this be cached???
|
// XXX should this be cached???
|
||||||
var MACRO_PATTERN = new RegExp(
|
var MACRO_PATTERN = new RegExp(
|
||||||
'('+ this.MACRO_PATTERN_STR[0]
|
'('+ this.MACRO_PATTERN_STR[0]
|
||||||
|
.replace(/MACRO_ARGS/g, this.MACRO_ARGS)
|
||||||
|
.replace(/MACRO_INLINE_ARGS/g, this.MACRO_INLINE_ARGS)
|
||||||
.replace(/MACROS/g, Object.keys(page.macros).join('|')) +')',
|
.replace(/MACROS/g, Object.keys(page.macros).join('|')) +')',
|
||||||
this.MACRO_PATTERN_STR[1])
|
this.MACRO_PATTERN_STR[1])
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user