mirror of
				https://github.com/flynx/pWiki.git
				synced 2025-10-31 11:00:08 +00:00 
			
		
		
		
	reworked macro attr inheritance...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									82fb5fa9ac
								
							
						
					
					
						commit
						b5a8214263
					
				| @ -1325,30 +1325,8 @@ object.Constructor('Page', BasePage, { | ||||
| 				['strict', 'nonstrict', 'isolated', 'unisolated']], | ||||
| 			async function*(args, body, state){ | ||||
| 				var that = this | ||||
| 				var name = args.name //?? args[0]
 | ||||
| 				var src = args.src | ||||
| 				var base = this.get(this.path.split(/\*/).shift()) | ||||
| 				var sort = (args.sort ?? '') | ||||
| 					.split(/\s+/g) | ||||
| 					.filter(function(e){  | ||||
| 						return e != '' }) | ||||
| 				// NOTE: args.text will need parsing...
 | ||||
| 				var text = args.text  | ||||
| 					?? body  | ||||
| 					?? [] | ||||
| 				text = typeof(text) == 'string' ? | ||||
| 					[...this.__parser__.group(this, text+'</macro>', 'macro')] | ||||
| 					: text | ||||
| 				var strict = args.strict | ||||
| 					&& !args.nonstrict | ||||
| 				var isolated = args.isolated  | ||||
| 					|| !args.unisolated  | ||||
| 				var join | ||||
| 
 | ||||
| 				var depends = state.depends =  | ||||
| 					state.depends  | ||||
| 						?? new Set() | ||||
| 
 | ||||
| 				// helpers...
 | ||||
| 				var _getBlock = function(name){ | ||||
| 					var block = args[name] ? | ||||
| 						[{ | ||||
| @ -1369,18 +1347,66 @@ object.Constructor('Page', BasePage, { | ||||
| 							?? block.body | ||||
| 					return block } | ||||
| 
 | ||||
| 				if(name){ | ||||
| 					name = await base.parse(name, state) | ||||
| 				var base = this.get(this.path.split(/\*/).shift()) | ||||
| 
 | ||||
| 				var depends = state.depends =  | ||||
| 					state.depends  | ||||
| 						?? new Set() | ||||
| 
 | ||||
| 				// uninheritable args...
 | ||||
| 				// NOTE: arg handling is split in two, to make things simpler 
 | ||||
| 				// 		to process for retrieved named macros...
 | ||||
| 				var src = args.src | ||||
| 				var text = args.text  | ||||
| 					?? body  | ||||
| 					?? [] | ||||
| 				text = typeof(text) == 'string' ? | ||||
| 					[...this.__parser__.group(this, text+'</macro>', 'macro')] | ||||
| 					: text | ||||
| 				var join | ||||
| 				var iargs = {} | ||||
| 
 | ||||
| 				// stored macros...
 | ||||
| 				if(args.name){ | ||||
| 					var name = await base.parse(args.name, state) | ||||
| 					// define new named macro...
 | ||||
| 					if(text.length != 0){ | ||||
| 						// NOTE: we do not need to worry about saving 
 | ||||
| 						// 		stateful text here because it is only 
 | ||||
| 						// 		grouped and not expanded...
 | ||||
| 						;(state.macros = state.macros ?? {})[name] = [text, _getBlock('join')] | ||||
| 						;(state.macros = state.macros ?? {})[name] =  | ||||
| 							// XXX should we store all the args???
 | ||||
| 							[text, _getBlock('join'), JSON.parse(JSON.stringify(args))] | ||||
| 					// use existing macro...
 | ||||
| 					} else if(state.macros  | ||||
| 							&& name in state.macros){ | ||||
| 						[text, join] = state.macros[name] } } | ||||
| 						;[itext, join, iargs] = state.macros[name] } } | ||||
| 
 | ||||
| 				// XXX is there a point in overloading text???
 | ||||
| 				text = text.length > 0 ?  | ||||
| 					text  | ||||
| 					: itext | ||||
| 				// inheritable args...
 | ||||
| 				var sort = (args.sort  | ||||
| 						?? iargs.sort  | ||||
| 						?? '') | ||||
| 					.split(/\s+/g) | ||||
| 					.filter(function(e){  | ||||
| 						return e != '' }) | ||||
| 				// default is false...
 | ||||
| 				var strict =  | ||||
| 					('strict' in args || 'nonstrict' in args) ? | ||||
| 						args.strict  | ||||
| 							&& !args.nonstrict  | ||||
| 						: iargs.strict  | ||||
| 							&& !iargs.nonstrict | ||||
| 				// default is true...
 | ||||
| 				var isolated =  | ||||
| 					('isolated' in args || 'unisolated' in args) ? | ||||
| 						args.isolated | ||||
| 						|| !args.unisolated | ||||
| 					: iargs.isolated | ||||
| 						|| !iargs.unisolated | ||||
| 
 | ||||
| 				if(src){ | ||||
| 					src = await base.parse(src, state) | ||||
|  | ||||
							
								
								
									
										10
									
								
								pwiki2.js
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								pwiki2.js
									
									
									
									
									
								
							| @ -18,11 +18,11 @@ | ||||
| * 		- CLI										-  | ||||
| * | ||||
| * | ||||
| * XXX MACRO: should <macro>'s isolated be on by default??? | ||||
| * 			...do we need to isolate named macros too??? | ||||
| * 			...should this isolation be one-directional??? | ||||
| * 				...i.e. iterations see/overload things defined above but  | ||||
| * 				can not affect the above context... | ||||
| * XXX macro: bug: see /NamedMacroTest... | ||||
| * XXX macro: should isolated and other args be inherited??? | ||||
| * XXX macro: should macro isolation be one-directional??? | ||||
| * 			...i.e. iterations see/overload things defined above but  | ||||
| * 			can not affect the above context... | ||||
| * XXX STYLE: should style loading be done via the event mechanics  | ||||
| * 		(see: pwiki2.html) or via the base templates (see: pwiki/page.js:_view  | ||||
| * 		template)??? | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user