// Brush for the TypeScript language
// Based on the JavaScript brush - shBrushJScript.js - with some minor alterations

; (function ()
{
	// CommonJS
	SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);

	function Brush()
	{
		var keywords =	'break case catch class continue ' +
				'default delete do else enum export extends false  ' +
				'for function if implements import in instanceof ' +
				'interface let new null package private protected ' +
				'static return super switch ' +
				'this throw true try typeof var while with yield' +
		    ' any bool declare get module number public set string';   // TypeScript-specific, everything above is common with JavaScript

		var r = SyntaxHighlighter.regexLib;
		
		this.regexList = [
			{ regex: r.multiLineDoubleQuotedString,					css: 'string' },			// double quoted strings
			{ regex: r.multiLineSingleQuotedString,					css: 'string' },			// single quoted strings
			{ regex: r.singleLineCComments,							css: 'comments' },			// one line comments
			{ regex: r.multiLineCComments,							css: 'comments' },			// multiline comments
			{ regex: new RegExp(this.getKeywords(keywords), 'gm'),	css: 'keyword' }			// keywords
			];
	
		this.forHtmlScript(r.scriptScriptTags);
	};

	Brush.prototype	= new SyntaxHighlighter.Highlighter();
	Brush.aliases	= ['ts', 'typescript'];

	SyntaxHighlighter.brushes.TypeScript = Brush;

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