mirror of
				https://github.com/flynx/pWiki.git
				synced 2025-11-04 13:00: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