mirror of
				https://github.com/flynx/pWiki.git
				synced 2025-10-30 18:40:08 +00:00 
			
		
		
		
	refactoring patters
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									996efe6d95
								
							
						
					
					
						commit
						d8e36c8916
					
				
							
								
								
									
										75
									
								
								pwiki2.js
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								pwiki2.js
									
									
									
									
									
								
							| @ -489,6 +489,73 @@ object.Constructor('BasePage', { | |||||||
| 
 | 
 | ||||||
| //---------------------------------------------------------------------
 | //---------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | // needs:
 | ||||||
|  | // 	STOP -- '\\>' or ')'
 | ||||||
|  | // 	PREFIX -- 'inline' or 'elem'
 | ||||||
|  | var MACRO_ARGS = | ||||||
|  | module.MACRO_ARGS = | ||||||
|  | ['(', | ||||||
|  | 	// arg='val' | arg="val" | arg=val
 | ||||||
|  | 	'|\\s+(?<PREFIXArgName>[a-z]+)\\s*=\\s*(',[ | ||||||
|  | 		"'(?<PREFIXSingleQuotedValue>[^']*)'", | ||||||
|  | 		'"(?<PREFIXDoubleQuotedValue>[^"]*)"', | ||||||
|  | 		'(?<PREFIXValue>[^\\s"\']*)', | ||||||
|  | 	].join('|'),')', | ||||||
|  | 	// "arg" | 'arg'
 | ||||||
|  | 	// XXX quote escaping???
 | ||||||
|  | 	// XXX CHROME/NODE BUG: this does not work yet...
 | ||||||
|  | 	//'\\s+(?<quote>[\'"])[^\\k<quote>]*\\k<quote>',
 | ||||||
|  | 	'\\s+"(?<PREFIXDoubleQuotedArg>[^"]*)"', | ||||||
|  | 	"|\\s+'(?<PREFIXSingleQuotedArg>[^']*)'", | ||||||
|  | 	// arg
 | ||||||
|  | 	//'|\\s+[^\\s\\/>\'"]+',
 | ||||||
|  | 	'|\\s+(?<PREFIXArg>[^\\sSTOP\'"]+)', | ||||||
|  | ')'].join('') | ||||||
|  | 
 | ||||||
|  | // needs:
 | ||||||
|  | // 	MACROS
 | ||||||
|  | // 	INLINE_ARGS -- MACRO_ARGS.replace(/STOP/, ')') 
 | ||||||
|  | // 	ARGS -- MACRO_ARGS.replace(/STOP/, '\\/>') 
 | ||||||
|  | var MACRO = | ||||||
|  | module.MACRO = | ||||||
|  | [ | ||||||
|  | 	// @macro(arg ..)
 | ||||||
|  | 	'\\\\?@(?<nameInline>MACROS)\\((?<argsInline>INLINE_ARGS)\\)', | ||||||
|  | 	// <macro ..> | <macro ../>
 | ||||||
|  | 	'<\\s*(?<nameOpen>MACROS)(?<argsOpen>ARGS)?\\s*/?>', | ||||||
|  | 	// </macro>
 | ||||||
|  | 	'</\\s*(?<nameClose>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'){ | ||||||
|  | 	console.log('---',macros) | ||||||
|  | 	var pattern = module.MACRO | ||||||
|  | 		.replace(/MACROS/g, macros.join('|')) | ||||||
|  | 		.replace(/INLINE_ARGS/g, | ||||||
|  | 			buildArgsPattern('inline', ')', false) +'*') | ||||||
|  | 		.replace(/ARGS/g,  | ||||||
|  | 			buildArgsPattern('elem', '\\/>', false) +'*') | ||||||
|  | 	return regexp ? | ||||||
|  | 		new RegExp(pattern, regexp)  | ||||||
|  | 		: pattern } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| // 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 = { | ||||||
| @ -510,7 +577,11 @@ module.parser = { | |||||||
| 			// arg
 | 			// arg
 | ||||||
| 			'|\\s+[^\\s\\/>\'"]+', | 			'|\\s+[^\\s\\/>\'"]+', | ||||||
| 			// arg='val' | arg="val" | arg=val
 | 			// arg='val' | arg="val" | arg=val
 | ||||||
| 			'|\\s+[a-z]+\\s*=\\s*(\'[^\']*\'|"[^"]*"|[^\\s"\']*)', | 			'|\\s+[a-z]+\\s*=\\s*(',[ | ||||||
|  | 				"'[^']*'", | ||||||
|  | 				'"[^"]*"', | ||||||
|  | 				'[^\\s"\']*', | ||||||
|  | 			].join('|'),')', | ||||||
| 		')*'].join(''), | 		')*'].join(''), | ||||||
| 	// patterns...
 | 	// patterns...
 | ||||||
| 	//
 | 	//
 | ||||||
| @ -539,7 +610,7 @@ module.parser = { | |||||||
| 							.replace(/MACRO_ARGS/g, this.MACRO_ARGS) | 							.replace(/MACRO_ARGS/g, this.MACRO_ARGS) | ||||||
| 							.replace(/MACRO_INLINE_ARGS/g, this.MACRO_INLINE_ARGS) | 							.replace(/MACRO_INLINE_ARGS/g, this.MACRO_INLINE_ARGS) | ||||||
| 					})`)).length-2) },
 | 					})`)).length-2) },
 | ||||||
| 	// XXX update using MACRO_ARGS...
 | 	/*/ XXX update using MACRO_ARGS... | ||||||
| 	MACRO_ARGS_PATTERN: RegExp('('+[ | 	MACRO_ARGS_PATTERN: RegExp('('+[ | ||||||
| 		].join('|') +')', 'smig'), | 		].join('|') +')', 'smig'), | ||||||
| 	/*/ | 	/*/ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user