mirror of
				https://github.com/flynx/pWiki.git
				synced 2025-10-31 02:50:08 +00:00 
			
		
		
		
	added dot-files, hidden by default and the :all arg to show them...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									e837b87663
								
							
						
					
					
						commit
						b406ed04e8
					
				| @ -424,7 +424,6 @@ object.Constructor('BasePage', { | |||||||
| 			[await this.find(path)] | 			[await this.find(path)] | ||||||
| 			: paths | 			: paths | ||||||
| 		//*/
 | 		//*/
 | ||||||
| 
 |  | ||||||
| 		for(var path of paths){ | 		for(var path of paths){ | ||||||
| 			yield this.get('/'+ path) } }, | 			yield this.get('/'+ path) } }, | ||||||
| 	[Symbol.asyncIterator]: async function*(){ | 	[Symbol.asyncIterator]: async function*(){ | ||||||
| @ -837,7 +836,8 @@ object.Constructor('Page', BasePage, { | |||||||
| 		// 		not 100% correct manner focusing on path depth and ignoring
 | 		// 		not 100% correct manner focusing on path depth and ignoring
 | ||||||
| 		// 		the context, this potentially can lead to false positives.
 | 		// 		the context, this potentially can lead to false positives.
 | ||||||
| 		include: Macro( | 		include: Macro( | ||||||
| 			['src', 'recursive', 'join', ['strict', 'nonstrict', 'isolated']], | 			['src', 'recursive', 'join',  | ||||||
|  | 				['strict', 'nonstrict', 'isolated', 'all']], | ||||||
| 			async function*(args, body, state, key='included', handler){ | 			async function*(args, body, state, key='included', handler){ | ||||||
| 				var macro = 'include' | 				var macro = 'include' | ||||||
| 				if(typeof(args) == 'string'){ | 				if(typeof(args) == 'string'){ | ||||||
| @ -924,7 +924,10 @@ object.Constructor('Page', BasePage, { | |||||||
| 		// 		include is rendered in the context of its page but with
 | 		// 		include is rendered in the context of its page but with
 | ||||||
| 		// 		the same state...
 | 		// 		the same state...
 | ||||||
| 		source: Macro( | 		source: Macro( | ||||||
| 			['src'], | 			// XXX should this have the same args as include???
 | ||||||
|  | 			['src', 'recursive', 'join',  | ||||||
|  | 				['strict', 'nonstrict', 'isolated', 'all']], | ||||||
|  | 			//['src'],
 | ||||||
| 			async function*(args, body, state){ | 			async function*(args, body, state){ | ||||||
| 				yield* this.macros.include.call(this,  | 				yield* this.macros.include.call(this,  | ||||||
| 					'source', | 					'source', | ||||||
| @ -952,7 +955,8 @@ object.Constructor('Page', BasePage, { | |||||||
| 		//
 | 		//
 | ||||||
| 		// XXX need a way to escape macros -- i.e. include </quote> in a quoted text...
 | 		// XXX need a way to escape macros -- i.e. include </quote> in a quoted text...
 | ||||||
| 		quote: Macro( | 		quote: Macro( | ||||||
| 			['src', 'filter', 'text', 'join', ['expandactions']], | 			['src', 'filter', 'text', 'join',  | ||||||
|  | 				['expandactions', 'all']], | ||||||
| 			async function*(args, body, state){ | 			async function*(args, body, state){ | ||||||
| 				var src = args.src //|| args[0]
 | 				var src = args.src //|| args[0]
 | ||||||
| 				var base = this.get(this.path.split(/\*/).shift()) | 				var base = this.get(this.path.split(/\*/).shift()) | ||||||
| @ -1157,11 +1161,13 @@ object.Constructor('Page', BasePage, { | |||||||
| 		//
 | 		//
 | ||||||
| 		// XXX SORT sorting not implemented yet....
 | 		// XXX SORT sorting not implemented yet....
 | ||||||
| 		macro: Macro( | 		macro: Macro( | ||||||
| 			['name', 'src', 'sort', 'text', 'join', 'else', ['strict', 'nonstrict']], | 			['name', 'src', 'sort', 'text', 'join', 'else',  | ||||||
|  | 				['strict', 'nonstrict', 'all']], | ||||||
| 			async function*(args, body, state){ | 			async function*(args, body, state){ | ||||||
| 				var that = this | 				var that = this | ||||||
| 				var name = args.name //?? args[0]
 | 				var name = args.name //?? args[0]
 | ||||||
| 				var src = args.src | 				var src = args.src | ||||||
|  | 				var all = args.all | ||||||
| 				var base = this.get(this.path.split(/\*/).shift()) | 				var base = this.get(this.path.split(/\*/).shift()) | ||||||
| 				var sort = (args.sort ?? '') | 				var sort = (args.sort ?? '') | ||||||
| 					.split(/\s+/g) | 					.split(/\s+/g) | ||||||
| @ -1819,7 +1825,7 @@ module.System = { | |||||||
| 				<a href="#@source(../../path)/list">⇑</a> | 				<a href="#@source(../../path)/list">⇑</a> | ||||||
| 				@source(../path) | 				@source(../path) | ||||||
| 			</slot> | 			</slot> | ||||||
| 			<macro src="../*" join="@source(line-separator)"> | 			<macro src="../*:@(all)" join="@source(line-separator)"> | ||||||
| 				<a href="#@source(./path)">@source(./name)</a> | 				<a href="#@source(./path)">@source(./name)</a> | ||||||
| 				<sup> | 				<sup> | ||||||
| 					<macro src="./isAction"> | 					<macro src="./isAction"> | ||||||
| @ -1836,7 +1842,7 @@ module.System = { | |||||||
| 	// XXX this is really slow...
 | 	// XXX this is really slow...
 | ||||||
| 	tree: { | 	tree: { | ||||||
| 		text: object.doc` | 		text: object.doc` | ||||||
| 			<macro src="../*"> | 			<macro src="../*:@(all)"> | ||||||
| 				<div> | 				<div> | ||||||
| 					<div class="item"> | 					<div class="item"> | ||||||
| 						<a href="#@source(./path)">@source(./name)</a> | 						<a href="#@source(./path)">@source(./name)</a> | ||||||
| @ -1844,12 +1850,12 @@ module.System = { | |||||||
| 						<a class="show-on-hover" href="#@source(./path)/delete">×</a> | 						<a class="show-on-hover" href="#@source(./path)/delete">×</a> | ||||||
| 					</div> | 					</div> | ||||||
| 					<div style="padding-left: 30px"> | 					<div style="padding-left: 30px"> | ||||||
| 						@source(./tree) | 						@source("./tree:@(all)") | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
| 			</macro>` }, | 			</macro>` }, | ||||||
| 	all: { | 	all: { | ||||||
| 		text: `@include(../**/path join="@source(line-separator)")`}, | 		text: `@include("../**/path:@(all)" join="@source(line-separator)")`}, | ||||||
| 	info: { | 	info: { | ||||||
| 		text: object.doc` | 		text: object.doc` | ||||||
| 			Path: @source(../path)  | 			Path: @source(../path)  | ||||||
| @ -2012,6 +2018,10 @@ module.Test = { | |||||||
| 	'list/static': { | 	'list/static': { | ||||||
| 		text: [...'abcdef'] }, | 		text: [...'abcdef'] }, | ||||||
| 
 | 
 | ||||||
|  | 	// this is shown by most listers by adding an :all argument to the url...
 | ||||||
|  | 	'.hidden': { | ||||||
|  | 		text: 'Hidden page...' }, | ||||||
|  | 
 | ||||||
| 	slots: { | 	slots: { | ||||||
| 		text: object.doc` | 		text: object.doc` | ||||||
| 			Sequential: | 			Sequential: | ||||||
|  | |||||||
| @ -324,6 +324,7 @@ module.BaseStore = { | |||||||
| 				|| path.includes('**')){ | 				|| path.includes('**')){ | ||||||
| 			var order = (this.metadata(path) ?? {}).order || [] | 			var order = (this.metadata(path) ?? {}).order || [] | ||||||
| 			var {path, args} = pwpath.splitArgs(path) | 			var {path, args} = pwpath.splitArgs(path) | ||||||
|  | 			var all = args.all | ||||||
| 			args = pwpath.joinArgs('', args) | 			args = pwpath.joinArgs('', args) | ||||||
| 			// NOTE: we are matching full paths only here so leading and 
 | 			// NOTE: we are matching full paths only here so leading and 
 | ||||||
| 			// 		trainling '/' are optional...
 | 			// 		trainling '/' are optional...
 | ||||||
| @ -351,6 +352,9 @@ module.BaseStore = { | |||||||
| 						// skip metadata paths...
 | 						// skip metadata paths...
 | ||||||
| 						if(p.includes('*')){ | 						if(p.includes('*')){ | ||||||
| 							return res } | 							return res } | ||||||
|  | 						if(pwpath.basename(p)[0] == '.'  | ||||||
|  | 								&& !all){ | ||||||
|  | 							return res } | ||||||
| 						var m = p.match(pattern) | 						var m = p.match(pattern) | ||||||
| 						m | 						m | ||||||
| 							&& (!strict  | 							&& (!strict  | ||||||
| @ -389,6 +393,7 @@ module.BaseStore = { | |||||||
| 		if(path.includes('*')  | 		if(path.includes('*')  | ||||||
| 				|| path.includes('**')){ | 				|| path.includes('**')){ | ||||||
| 			var p = pwpath.splitArgs(path) | 			var p = pwpath.splitArgs(path) | ||||||
|  | 			var all = p.args.all | ||||||
| 			var args = pwpath.joinArgs('', p.args) | 			var args = pwpath.joinArgs('', p.args) | ||||||
| 			p = pwpath.split(p.path) | 			p = pwpath.split(p.path) | ||||||
| 			var tail = [] | 			var tail = [] | ||||||
| @ -396,8 +401,12 @@ module.BaseStore = { | |||||||
| 				tail.unshift(p.pop()) } | 				tail.unshift(p.pop()) } | ||||||
| 			tail = tail.join('/') | 			tail = tail.join('/') | ||||||
| 			if(tail.length > 0){ | 			if(tail.length > 0){ | ||||||
| 				return (await this.match(p.join('/'), strict)) | 				return (await this.match( | ||||||
|  | 						p.join('/') + (all ? ':all' : ''),  | ||||||
|  | 						strict)) | ||||||
| 					.map(function(p){ | 					.map(function(p){ | ||||||
|  | 						all && | ||||||
|  | 							(p = p.replace(/:all/, '')) | ||||||
| 						return pwpath.join(p, tail) + args }) } } | 						return pwpath.join(p, tail) + args }) } } | ||||||
| 		// direct...
 | 		// direct...
 | ||||||
| 		return this.match(path, strict) }, | 		return this.match(path, strict) }, | ||||||
|  | |||||||
| @ -1,6 +1,8 @@ | |||||||
| /********************************************************************** | /********************************************************************** | ||||||
| *  | *  | ||||||
| * | * | ||||||
|  | * XXX BUG: '@include(@(arg))' does not parse correctly while @include("@(arg)") does... | ||||||
|  | * 		...likely due to the regexp not counting the brace balance... | ||||||
| * XXX BUG CHROME: can't .get(..) a generator... | * XXX BUG CHROME: can't .get(..) a generator... | ||||||
| * 			https://bugs.chromium.org/p/chromium/issues/detail?id=1361981
 | * 			https://bugs.chromium.org/p/chromium/issues/detail?id=1361981
 | ||||||
| * 		when done test: | * 		when done test: | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user