1
0
mirror of https://github.com/salexdv/bsl_console.git synced 2025-02-15 13:53:04 +02:00

Доработка функций форматирования с учетом следующих конструкций:

Попытка
Исключение
КонецПопытки
Иначе
ИначеЕсли
This commit is contained in:
salexdv 2020-10-24 11:46:41 +03:00
parent f9155be657
commit 9177ce69a5
2 changed files with 38 additions and 5 deletions

View File

@ -2503,13 +2503,18 @@ class bslHelper {
let result = '';
const startWords = [
'если', 'для', 'пока', 'функция', 'процедура',
'if', 'for', 'while', 'function', 'procedure'
'если', 'для', 'пока', 'функция', 'процедура', 'попытка',
'if', 'for', 'while', 'function', 'procedure', 'try'
];
const stopWords = [
'конецесли', 'конеццикла', 'конецфункции', 'конецпроцедуры',
'endif', 'enddo', 'endfunction', 'endprocedure'
'конецесли', 'конеццикла', 'конецфункции', 'конецпроцедуры', 'конецпопытки',
'endif', 'enddo', 'endfunction', 'endprocedure', 'endtry'
];
const complexWords = [
'исключение', 'иначе', 'иначеесли',
'except', 'else', 'elseif'
];
const strings = model.getValue().split('\n');
@ -2540,7 +2545,10 @@ class bslHelper {
if (startWords.includes(word))
offset++;
if (stopWords.includes(word))
if (stopWords.includes(word))
offset = Math.max(0, offset - 1);
if (complexWords.includes(word))
offset = Math.max(0, offset - 1);
word_i++;
@ -2550,6 +2558,8 @@ class bslHelper {
let strOffset = 0 < delta ? offset - 1 : offset;
result = result + '\t'.repeat(strOffset) + original.trim() + '\n';
if (words.length && complexWords.includes(words[0].toLowerCase()))
offset++;
});

View File

@ -85,6 +85,29 @@
'\t',
'\tРезультат = Запрос.',
'\t',
'',
'// Начало проверки форматирования для попытки и условия',
'Попытка',
' Док = Документы.АвансовыйОтчет.НайтиПоНомеру(1);',
'Исключение',
'Сообщить("Ошибка");',
'КонецПопытки;',
'',
'Если Истина Тогда',
'Если Истина Тогда',
' Док = Документы.АвансовыйОтчет.НайтиПоНомеру(1);',
'ИначеЕсли Ложь Тогда',
'Док = Документы.РасходнаяНакладная.НайтиПоНомеру(1);',
'КонецЕсли;',
'Иначе',
'Если Истина Тогда',
'Док = Документы.РасходнаяНакладная.НайтиПоНомеру(1);',
'Иначе',
'Док = Документы.ПриходнаяНакладная.НайтиПоНомеру(1);',
'КонецЕсли;',
'КонецЕсли;',
'// Конец проверки форматирования для попытки и условия',
'',
'КонецФункции',
].join('\n');;
}