Newer
Older
pushpullRefactoringExperiments / syntaxhighlighter-3.0.83 / scripts / shBrushPerl.js
;(function()
{
	// CommonJS
	typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;

	function Brush()
	{
		// Contributed by David Simmons-Duffin and Marty Kube

		var funcs =
			'abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr ' +
			'chroot close closedir connect cos crypt defined delete each endgrent ' +
			'endhostent endnetent endprotoent endpwent endservent eof exec exists ' +
			'exp fcntl fileno flock fork format formline getc getgrent getgrgid ' +
			'getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr ' +
			'getnetbyname getnetent getpeername getpgrp getppid getpriority ' +
			'getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid ' +
			'getservbyname getservbyport getservent getsockname getsockopt glob ' +
			'gmtime grep hex index int ioctl join keys kill lc lcfirst length link ' +
			'listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd ' +
			'oct open opendir ord pack pipe pop pos print printf prototype push ' +
			'quotemeta rand read readdir readline readlink readpipe recv rename ' +
			'reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl ' +
			'semget semop send setgrent sethostent setnetent setpgrp setpriority ' +
			'setprotoent setpwent setservent setsockopt shift shmctl shmget shmread ' +
			'shmwrite shutdown sin sleep socket socketpair sort splice split sprintf ' +
			'sqrt srand stat study substr symlink syscall sysopen sysread sysseek ' +
			'system syswrite tell telldir time times tr truncate uc ucfirst umask ' +
			'undef unlink unpack unshift utime values vec wait waitpid warn write';

		var keywords =
			'bless caller continue dbmclose dbmopen die do dump else elsif eval exit ' +
			'for foreach goto if import last local my next no our package redo ref ' +
			'require return sub tie tied unless untie until use wantarray while';

		this.regexList = [
			{ regex: new RegExp('#[^!].*$', 'gm'),					css: 'comments' },
			{ regex: new RegExp('^\\s*#!.*$', 'gm'),				css: 'preprocessor' }, // shebang
			{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,	css: 'string' },
			{ regex: SyntaxHighlighter.regexLib.singleQuotedString,	css: 'string' },
			{ regex: new RegExp('(\\$|@|%)\\w+', 'g'),				css: 'variable' },
			{ regex: new RegExp(this.getKeywords(funcs), 'gmi'),	css: 'functions' },
			{ regex: new RegExp(this.getKeywords(keywords), 'gm'),	css: 'keyword' }
		    ];

		this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
	}

	Brush.prototype	= new SyntaxHighlighter.Highlighter();
	Brush.aliases		= ['perl', 'Perl', 'pl'];

	SyntaxHighlighter.brushes.Perl = Brush;

	// CommonJS
	typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
})();