mirror of
https://github.com/salexdv/bsl_console.git
synced 2024-11-24 08:33:29 +02:00
Функция для определения текущего текста запроса, его положения, а также для его замены
This commit is contained in:
parent
c1da6111bb
commit
41a4d395b9
11
CHANGELOG.md
Normal file
11
CHANGELOG.md
Normal file
@ -0,0 +1,11 @@
|
||||
## 0.1.1 (19.07.2020)
|
||||
Новое:
|
||||
* Доработана глобальная функция вставки текста, чтобы можно было вставлять не только в конкретную позицию, но в область (range)
|
||||
* Добавлена глобальная функция для определения текущего текста запроса и его положения
|
||||
* Добавлена глобальная функция для очистки всего текста
|
||||
|
||||
Исправления:
|
||||
* Исправлен сниппет для выборки из регистра накопления
|
||||
|
||||
## 0.1.0 (16.07.2020)
|
||||
* первый релиз
|
@ -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' });
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
<script>
|
||||
function getCode() {
|
||||
return [].join('\n');;
|
||||
return '';
|
||||
}
|
||||
</script>
|
||||
<script src="./vs/loader.js"></script>
|
||||
|
@ -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": "Выборка записей регистра накопления (по регистратору)"
|
||||
},
|
||||
"Открыть форму регистра бухгалтерии": {
|
||||
|
26
src/test.js
26
src/test.js
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user