1
0
mirror of https://github.com/salexdv/bsl_console.git synced 2024-11-24 08:33:29 +02:00

Функция для определения текущего текста запроса, его положения, а также для его замены

This commit is contained in:
salexdv 2020-07-19 13:47:03 +03:00
parent c1da6111bb
commit 41a4d395b9
5 changed files with 71 additions and 9 deletions

11
CHANGELOG.md Normal file
View File

@ -0,0 +1,11 @@
## 0.1.1 (19.07.2020)
Новое:
* Доработана глобальная функция вставки текста, чтобы можно было вставлять не только в конкретную позицию, но в область (range)
* Добавлена глобальная функция для определения текущего текста запроса и его положения
* Добавлена глобальная функция для очистки всего текста
Исправления:
* Исправлен сниппет для выборки из регистра накопления
## 0.1.0 (16.07.2020)
* первый релиз

View File

@ -1,20 +1,51 @@
define(['vs/editor/editor.main'], function () {
setText = function setTextToCurrentPosition(txt) {
setText = function(txt, range) {
editor.getModel().applyEdits([{
range: monaco.Range.fromPositions(editor.getPosition()),
range: range ? range : monaco.Range.fromPositions(editor.getPosition()),
text: txt
}]);
}
getText = function getFullText(txt) {
eraseText = function () {
setText('', editor.getModel().getFullModelRange());
}
getText = function(txt) {
return editor.getValue();
}
getQuery = function () {
let position = editor.getPosition();
const matches = editor.getModel().findMatches("\"(?:\\n|\\r|\\|)*(?:выбрать|select)(?:(?:.|\\n|\\r)*?)?\"", false, true, false, null, true)
const lineNumber = position.lineNumber;
let idx = 0;
let match = null;
let queryFound = false;
if (matches) {
while (idx < matches.length && !queryFound) {
match = matches[idx];
queryFound = (match.range.startLineNumber <= lineNumber && lineNumber <= match.range.endLineNumber);
idx++;
}
}
return queryFound ? { text: match.matches[0], range: match.range } : null;
}
// Register a new language
monaco.languages.register({ id: 'bsl' });

View File

@ -24,7 +24,7 @@
<script>
function getCode() {
return [].join('\n');;
return '';
}
</script>
<script src="./vs/loader.js"></script>

View File

@ -431,12 +431,12 @@
},
"Выборка записей регистра накопления": {
"prefix": "РегистрНакопленияВыбрать",
"body": "Выборка = РегистрНакопления.${1:ВыберитеРегистрНакопления}.Выбрать();\nПока Выборка.Следующий() Цикл\n\t$0\nКонецЦикла;",
"body": "Выборка = РегистрыНакопления.${1:ВыберитеРегистрНакопления}.Выбрать();\nПока Выборка.Следующий() Цикл\n\t$0\nКонецЦикла;",
"description": "Выборка записей регистра накопления"
},
"Выборка записей регистра накопления (по регистратору)": {
"prefix": "РегистрНакопленияВыбратьПоРегистратору",
"body": "Выборка = РегистрНакопления.${1:ВыберитеРегистрНакопления}.ВыбратьПоРегистратору($0);\nПока Выборка.Следующий() Цикл\nКонецЦикла;",
"body": "Выборка = РегистрыНакопления.${1:ВыберитеРегистрНакопления}.ВыбратьПоРегистратору($0);\nПока Выборка.Следующий() Цикл\nКонецЦикла;",
"description": "Выборка записей регистра накопления (по регистратору)"
},
"Открыть форму регистра бухгалтерии": {

View File

@ -3,8 +3,6 @@ describe("Проверка автокомлита и подсказок реда
require(['editor'], function () {
console.log(bslGlobals);
var assert = chai.assert;
var expect = chai.expect;
chai.should();
@ -37,10 +35,14 @@ describe("Проверка автокомлита и подсказок реда
if (bslLoaded) {
it("проверка существования глобальной переменной editor", function () {
assert.notEqual(editor, undefined);
});
it("проверка определения русского языка", function () {
assert.equal(bsl.hasRu('тест'), true);
});
it("проверка автокомплита для глобальной функции Найти", function () {
bsl = helper('най');
let suggestions = [];
@ -198,6 +200,24 @@ describe("Проверка автокомлита и подсказок реда
expect(help).to.have.property('activeParameter');
});
it("проверка получения существующего текста запроса", function () {
editor.setPosition(new monaco.Position(10, 1));
assert.notEqual(getQuery(), null);
});
it("проверка получения несуществующего текста запроса", function () {
editor.setPosition(new monaco.Position(1, 1));
assert.equal(getQuery(), null);
});
it("проверка очистки всего текста", function () {
let text = editor.getValue();
eraseText();
assert.equal(editor.getValue(), getText());
editor.setValue(text);
assert.equal(text, getText());
});
}
mocha.run();