mirror of
				https://github.com/flynx/pWiki.git
				synced 2025-10-29 01:50:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			316 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			316 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| /**********************************************************************
 | |
| * 
 | |
| *
 | |
| *
 | |
| **********************************************************************/
 | |
| ((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define)
 | |
| (function(require){ var module={} // make module AMD/node compatible...
 | |
| /*********************************************************************/
 | |
| 
 | |
| var object = require('ig-object')
 | |
| 
 | |
| var pwiki = require('./pwiki2')
 | |
| module.path = pwiki.path
 | |
| 
 | |
| // XXX for some reason this does not run quietly in browser
 | |
| var pouchdbstore = require('./pwiki/store/pouchdb')
 | |
| // XXX need to prevent this from breaking in browser...
 | |
| var filestore = require('./pwiki/store/file')
 | |
| 
 | |
| // XXX this fails silently in browser...
 | |
| //var bootstrap = require('./bootstrap')
 | |
| 
 | |
| 
 | |
| //---------------------------------------------------------------------
 | |
| 
 | |
| /*/ // XXX chained system store...
 | |
| store.next.load(
 | |
| 	// Create a new system action-set with paths starting with 'System/'
 | |
| 	Object.entries(System)
 | |
| 		.reduce(function(res, [key, func]){
 | |
| 			res[pwpath.join('System', key)] = func
 | |
| 			return res }, {}))
 | |
| //*/
 | |
| 
 | |
| module.setup = 
 | |
| Promise.all([
 | |
| 	pwiki.store.update('@file-ro', {
 | |
| 		__proto__: filestore.FileStoreRO,
 | |
| 		__path__: 'bootstrap',
 | |
| 	}),
 | |
| 	pwiki.store.update('@file', {
 | |
| 		__proto__: filestore.FileStore,
 | |
| 		__path__: 'data/fs',
 | |
| 	}),
 | |
| 	pwiki.store.update('@pouch', {
 | |
| 		__proto__: pouchdbstore.PouchDBStore,
 | |
| 		__path__: 'data/pouch',
 | |
| 	}),
 | |
| ])
 | |
| 
 | |
| 
 | |
| //---------------------------------------------------------------------
 | |
| // XXX experiments and testing...
 | |
| 
 | |
| // XXX for persistent stores test if the data is already loaded here...
 | |
| //pwiki.store.load(bootstrap)
 | |
| 
 | |
| 
 | |
| // XXX TEST...
 | |
| // XXX add filter tests...
 | |
| pwiki.pwiki
 | |
| 	.update({
 | |
| 		location: '/test/markdown',
 | |
| 		text: object.doc`
 | |
| 		some text with inline @source(./path) macros...
 | |
| 
 | |
| 		@filter(markdown)` })
 | |
| 	.update({
 | |
| 		location: '/test/recursion',
 | |
| 		text: object.doc` @include(.) ` })
 | |
| 	.update({
 | |
| 		location: '/test/recursionA',
 | |
| 		text: object.doc` @include(../recursionB) ` })
 | |
| 	.update({
 | |
| 		location: '/test/recursionB',
 | |
| 		text: object.doc` @include(../recursionA) ` })
 | |
| 	.update({
 | |
| 		location: '/test/recursionC',
 | |
| 		text: object.doc` @include(recursionC) ` })
 | |
| 	.update({
 | |
| 		location: '/test/sort/*',
 | |
| 		order: ['a', 'c', 'b'], })
 | |
| 	.update({
 | |
| 		location: '/test/sort/a',
 | |
| 		text: 'a', })
 | |
| 	.update({
 | |
| 		location: '/test/sort/b',
 | |
| 		text: 'b', })
 | |
| 	.update({
 | |
| 		location: '/test/sort/c',
 | |
| 		text: 'c', })
 | |
| 	.update({
 | |
| 		location: '/test/comments',
 | |
| 		text: object.doc`
 | |
| 		<!--[pWiki[ This text should be visible... ]]-->
 | |
| 
 | |
| 		<!--[pWiki[
 | |
| 			This text should be visible too... 
 | |
| 		]]-->
 | |
| 
 | |
| 		<pwiki-comment>
 | |
| 			And this should not be visible...
 | |
| 		</pwiki-comment>
 | |
| 		`,
 | |
| 	})
 | |
| 	.update({
 | |
| 		location: '/test/test',
 | |
| 		text: 'test', })
 | |
| 	.update({
 | |
| 		location: '/test/filter',
 | |
| 		text: object.doc`
 | |
| 		Should be: AAAAaaaaAAAAaaaa : test<filter -test>test</filter>@include(../test)@include(../test isolated)
 | |
| 		@filter(test)
 | |
| 		`, })
 | |
| 	.update({
 | |
| 		location: '/test/filter-local',
 | |
| 		text: object.doc`
 | |
| 		Should be: aaaaAAAAaaaa : test<filter test>test</filter>test
 | |
| 		`, })
 | |
| 	.update({
 | |
| 		location: '/test/filter-isolated',
 | |
| 		text: object.doc`
 | |
| 		Should be: AAAAaaaaAAAA : test<filter isolated>test</filter>test
 | |
| 		@filter(test)
 | |
| 		`, })
 | |
| 	.update({
 | |
| 		location: '/test/quote',
 | |
| 		text: object.doc`
 | |
| 			Inline quoted text:
 | |
| 			---
 | |
| 			<quote>
 | |
| 				this test should not get expanded: @now()
 | |
| 			</quote>
 | |
| 			---
 | |
| 
 | |
| 			Included quoted text:
 | |
| 			---
 | |
| 			<quote src="/test/slots"/>
 | |
| 			---
 | |
| 
 | |
| 			Quote filters:
 | |
| 			---
 | |
| 			<quote filter="quote-tags test">
 | |
| 				test <now />...
 | |
| 			</quote>
 | |
| 			---
 | |
| 		`, })
 | |
| 	// XXX BUG: this prints '' for each <quote>
 | |
| 	.update({
 | |
| 		location: '/test/macro-quote',
 | |
| 		text: object.doc`
 | |
| 		Outside of macro:
 | |
| 		<quote src="/test/a"/>
 | |
| 
 | |
| 		In macro:
 | |
| 		<macro src="/test/*/path" join="\n">-- <quote src="/test/a"/></macro>
 | |
| 		`, })
 | |
| 	.update({
 | |
| 		location: '/test/wikiword',
 | |
| 		text: object.doc`
 | |
| 			This is a basic WikiWord test, all  
 | |
| 			the [basic] forms and Versions of  
 | |
| 			/inline/links.
 | |
| 
 | |
| 			@filter(wikiword markdown) `, })
 | |
| 	.update({
 | |
| 		location: '/test/slot',
 | |
| 		text: object.doc`
 | |
| 			Testing slot mechanics...
 | |
| 
 | |
| 			This slot is (<slot name="empty">unfilled</slot>)
 | |
| 
 | |
| 			...while this (<slot name="non-empty">text should be replaced...</slot>)
 | |
| 
 | |
| 			<slot name="non-empty">text is filling a slot</slot>
 | |
| 		`, })
 | |
| 	.update({
 | |
| 		location: '/test/slots',
 | |
| 		text: object.doc`
 | |
| 			Sequential:
 | |
| 			<slot name="sequential">unfilled</slot>
 | |
| 			<slot name="sequential">filled</slot>
 | |
| 			<slot name="sequential">refilled</slot> 
 | |
| 			<br><br>
 | |
| 			Nested:
 | |
| 			<slot name="nested">
 | |
| 				unfilled
 | |
| 				<slot name="nested">
 | |
| 					filled
 | |
| 					<slot name="nested">
 | |
| 						refilled
 | |
| 					</slot>
 | |
| 				</slot>
 | |
| 			</slot> 
 | |
| 			<br><br>
 | |
| 			Content: A B C:
 | |
| 			<slot name="slot-content">A</slot>
 | |
| 			<slot name="slot-content"><content/> B</slot>
 | |
| 			<slot name="slot-conten"><content/> C</slot>
 | |
| 			<br><br>
 | |
| 			Nested content: A B C:
 | |
| 			<slot name="nested-slot-content">
 | |
| 				A
 | |
| 				<slot name="nested-slot-content">
 | |
| 					<content/> B
 | |
| 					<slot name="nested-slot-content">
 | |
| 						<content/> C
 | |
| 					</slot>
 | |
| 				</slot>
 | |
| 			</slot>
 | |
| 			<br><br>
 | |
| 			Mixed content: X A B C Z:
 | |
| 			<slot name="mixed-slot-content">
 | |
| 				X
 | |
| 			</slot>
 | |
| 			<slot name="mixed-slot-content">
 | |
| 				<content/> A
 | |
| 				<slot name="mixed-slot-content">
 | |
| 					<content/> B
 | |
| 					<slot name="mixed-slot-content">
 | |
| 						<content/> C
 | |
| 					</slot>
 | |
| 				</slot>
 | |
| 			</slot> 
 | |
| 			<slot name="mixed-slot-content">
 | |
| 				<content/> Z
 | |
| 			</slot> `, })
 | |
| 	.update({
 | |
| 		location: '/test/nesting',
 | |
| 		text: object.doc`
 | |
| 			Quote in macro:
 | |
| 			<macro src=".">
 | |
| 				<quote src="./path"/>
 | |
| 			</macro>
 | |
| 			<hr>
 | |
| 			Quote in slot:
 | |
| 			<slot name="moo">
 | |
| 				<quote src="./path"/>
 | |
| 			</slot>` })
 | |
| 	.update({
 | |
| 		location: '/test/a',
 | |
| 		text: 'a',
 | |
| 	})
 | |
| 	.update({
 | |
| 		location: '/test/b',
 | |
| 		text: 'b',
 | |
| 	})
 | |
| 	.update({
 | |
| 		location: '/test/c',
 | |
| 		text: 'c',
 | |
| 	})
 | |
| 	.update({
 | |
| 		location: '/test/c/x',
 | |
| 		text: 'x',
 | |
| 	})
 | |
| 	.update({
 | |
| 		location: '/test/c/y',
 | |
| 		text: 'y',
 | |
| 	})
 | |
| 	.update({
 | |
| 		location: '/test/d/z',
 | |
| 		text: 'z',
 | |
| 	})
 | |
| 	.update({
 | |
| 		location: '/page',
 | |
| 		text: '>>> PAGE\n'
 | |
| 			+'\n'
 | |
| 			+'@include(/test recursive="Recursion type 2 (<now/>)")\n'
 | |
| 			+'\n'
 | |
| 			+'@slot(name=b text="filled slot")\n'
 | |
| 			+ '<<< PAGE\n',
 | |
| 	})
 | |
| 	.update({
 | |
| 		location: '/other',
 | |
| 		text: 'OTHER',
 | |
| 	})
 | |
| 	.update({
 | |
| 		location: '/test',
 | |
| 		text: 'TEST\n'
 | |
| 			+'\n'
 | |
| 			+'globally filtered test text...\n'
 | |
| 			+'\n'
 | |
| 			// XXX this does not seem to work...
 | |
| 			+'<filter -test>...unfiltered test text</filter>\n'
 | |
| 			+'\n'
 | |
| 			//+'<filter test>locally filtered test text</filter>\n'
 | |
| 			+'\n'
 | |
| 			// XXX slots do not seem to work...
 | |
| 			+'@slot(name=a text="non-filled slot a")\n'
 | |
| 			+'\n'
 | |
| 			+'@slot(name=b text="non-filled slot b")\n'
 | |
| 			+'\n'
 | |
| 			+'Including /other #1: @include(/other)\n'
 | |
| 			+'Including /other #2: @include(/other)\n'
 | |
| 			+'\n'
 | |
| 			+'Including /test: @include(/test recursive="Recursion type 1 (<now/>)")\n'
 | |
| 			+'\n'
 | |
| 			+'Including /page: @include(/page recursive="...")\n'
 | |
| 			+'\n'
 | |
| 			+'Sourceing /: \\@include(/)\n'
 | |
| 			+'\n'
 | |
| 			// XXX slots do not seem to work...
 | |
| 			+'<slot name="a">filled slot a</slot>\n'
 | |
| 			+'\n'
 | |
| 			+'@filter(test)',
 | |
| 	})
 | |
| //*/
 | |
| 
 | |
| 
 | |
| module.pwiki = pwiki.pwiki
 | |
| 
 | |
| 
 | |
| 
 | |
| /**********************************************************************
 | |
| * vim:set ts=4 sw=4 :                               */ return module })
 |