mirror of
				https://github.com/flynx/pWiki.git
				synced 2025-11-04 04:50:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
/**********************************************************************
 | 
						|
* 
 | 
						|
*
 | 
						|
*
 | 
						|
**********************************************************************/
 | 
						|
((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define)
 | 
						|
(function(require){ var module={} // make module AMD/node compatible...
 | 
						|
/*********************************************************************/
 | 
						|
 | 
						|
 | 
						|
 | 
						|
//---------------------------------------------------------------------
 | 
						|
// XXX revise...
 | 
						|
var Filter = 
 | 
						|
module.Filter =
 | 
						|
function(...args){
 | 
						|
	var func = args.pop()
 | 
						|
	args.length > 0
 | 
						|
		&& Object.assign(func, args.pop())
 | 
						|
	return func }
 | 
						|
 | 
						|
 | 
						|
//---------------------------------------------------------------------
 | 
						|
 | 
						|
var WIKIWORD_PATTERN =
 | 
						|
	RegExp('('+[
 | 
						|
		//'\\\\?(\\/|\\./|\\.\\./|>>|[A-Z][_a-z0-9]+[A-Z/])[_a-zA-Z0-9/]*',
 | 
						|
		'\\\\?\\/?(\\./|\\.\\./|>>|[A-Z][_a-z0-9]+[A-Z/])[_a-zA-Z0-9/]*',
 | 
						|
		'\\\\?\\[[^\\]]+\\]',
 | 
						|
	].join('|') +')', 'g')
 | 
						|
 | 
						|
// XXX REVISE...
 | 
						|
var setWikiWords = 
 | 
						|
module.setWikiWords =
 | 
						|
function(text, show_brackets=true, skip){
 | 
						|
	skip = skip ?? []
 | 
						|
	skip = skip instanceof Array ? 
 | 
						|
		skip 
 | 
						|
		: [skip]
 | 
						|
	return text 
 | 
						|
		// set new...
 | 
						|
		.replace(
 | 
						|
			WIKIWORD_PATTERN,
 | 
						|
			function(l){
 | 
						|
				// check if WikiWord is escaped...
 | 
						|
				if(l[0] == '\\'){
 | 
						|
					return l.slice(1) }
 | 
						|
 | 
						|
				var path = l[0] == '[' ? 
 | 
						|
					l.slice(1, -1) 
 | 
						|
					: l
 | 
						|
				var i = [].slice.call(arguments).slice(-2)[0]
 | 
						|
 | 
						|
				// XXX HACK check if we are inside a tag...
 | 
						|
				var rest = text.slice(i+1)
 | 
						|
				if(rest.indexOf('>') < rest.indexOf('<')){
 | 
						|
					return l }
 | 
						|
 | 
						|
				return skip.indexOf(l) < 0 ? 
 | 
						|
					('<a '
 | 
						|
						+'class="wikiword" '
 | 
						|
						+'href="#'+ path +'" '
 | 
						|
						+'bracketed="'+ (show_brackets && l[0] == '[' ? 'yes' : 'no') +'" '
 | 
						|
						//+'onclick="event.preventDefault(); go($(this).attr(\'href\').slice(1))" '
 | 
						|
						+'>'
 | 
						|
							+ (!!show_brackets ? path : l) 
 | 
						|
						+'</a>')
 | 
						|
					: l })}
 | 
						|
 | 
						|
module.wikiWord = 
 | 
						|
Filter(
 | 
						|
	{quote: 'quote-wikiword'},
 | 
						|
	function(source){
 | 
						|
		return setWikiWords(source) })
 | 
						|
module.quoteWikiWord = 
 | 
						|
function(source){
 | 
						|
	// XXX
 | 
						|
	return source }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**********************************************************************
 | 
						|
* vim:set ts=4 sw=4 :                               */ return module })
 |