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();