diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..22f4500 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,11 @@ +## 0.1.1 (19.07.2020) +Новое: +* Доработана глобальная функция вставки текста, чтобы можно было вставлять не только в конкретную позицию, но в область (range) +* Добавлена глобальная функция для определения текущего текста запроса и его положения +* Добавлена глобальная функция для очистки всего текста + +Исправления: +* Исправлен сниппет для выборки из регистра накопления + +## 0.1.0 (16.07.2020) +* первый релиз \ No newline at end of file diff --git a/src/editor.js b/src/editor.js index 289ba89..975f786 100644 --- a/src/editor.js +++ b/src/editor.js @@ -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' }); diff --git a/src/index.html b/src/index.html index fa9d062..2206700 100644 --- a/src/index.html +++ b/src/index.html @@ -24,7 +24,7 @@ diff --git a/src/snippets.json b/src/snippets.json index 9fc7b57..6d50995 100644 --- a/src/snippets.json +++ b/src/snippets.json @@ -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": "Выборка записей регистра накопления (по регистратору)" }, "Открыть форму регистра бухгалтерии": { diff --git a/src/test.js b/src/test.js index 69f38ec..e65f58a 100644 --- a/src/test.js +++ b/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();