/* beta version of 1C module for SyntaxHighliter */
/* created by Konstantin aka c0nst */
/* http://www.javenue.info */

dp.sh.Brushes.OneC = function()
{
	var keywords = 'СоздатьОбъект Пока Цикл Сообщить КонецЦикла Для По Симв Дата Мин Число ' + 
    'ТипЗначения Новый Функция Возврат КонецФункции Или Перем Экспорт Процедура ' + 
    'КонецПроцедуры Если Тогда КонецЕсли Из Не';
			
    var punctuations = '\\+|\\)|\\(|\\.|\\\\|\\*|=|\\:|;|\\&lt;|\\&gt;';

    var token1 = '(?:([\\s]+|' + punctuations + '))';
//    var token2 = '(?<=([\\s]+|' + punctuations + '))';
    var token = '(?=([\\s]+|' + punctuations + '))';

    dp.sh.Brushes.OneC.findKeywords = function(str) {
        //return '(' + token + str.replace(/ /g, token + ')|(' + token) + token + ')';
        return '(' + token1 + str.replace(/ /g, token + ')|(' + token1) + token + ')';
    }

	this.regexList = [
		{ regex: dp.sh.RegexLib.DoubleQuotedString,								css: 'string' },		// strings
		{ regex: dp.sh.RegexLib.SingleQuotedString,								css: 'string' },		// strings
		{ regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'),	css: 'number' },		// numbers
		{ regex: new RegExp(dp.sh.Brushes.OneC.findKeywords(keywords), 'g'),	css: 'keyword' },		// keywords
		{ regex: new RegExp(punctuations, 'g'),					                css: 'punctuation' }	// punctuation
		];

	this.CssClass = 'dp-1c';
	this.Style =	'body .dp-highlighter ol li span { color: blue; }' +
                    '.dp-highlighter .dp-1c .string { color: black; }' +
	                '.dp-highlighter .dp-1c .keyword { color: red; }' +
	                '.dp-highlighter .dp-1c .punctuation { color: red; }' +
					'.dp-highlighter .dp-1c .number { color: black; }';
}

dp.sh.Brushes.OneC.prototype = new dp.sh.Highlighter();
dp.sh.Brushes.OneC.Aliases = ['one-c'];
