Skip to content
This repository was archived by the owner on Jul 16, 2019. It is now read-only.

Commit e001bb9

Browse files
committed
Merge branch 'release/1.0.1'
2 parents f99f055 + 6c52c39 commit e001bb9

34 files changed

+3309
-2
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
bdd-log.xml
2+
*.ospx
3+
*.orig
4+
exec.log
5+
ignore/**
6+
tests.xml

LICENSE

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
MIT License
1+
The MIT License (MIT)
22

3-
Copyright (c) 2019 orais / tools
3+
Copyright (c) 2016 Andrei Ovsiankin
4+
Copyright (c) 2019 BIA Technologies, LLC
45

56
Permission is hereby granted, free of charge, to any person obtaining a copy
67
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# Скрипт для работы с шаблонами кода
2+
3+
- [Скрипт для работы с шаблонами кода](#%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0%D0%BC%D0%B8-%D0%BA%D0%BE%D0%B4%D0%B0)
4+
- [Установить приложение, алгоритм установки стандартный](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8-%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B9)
5+
- [Использование](#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
6+
- [Конвертация шаблонов](#%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%86%D0%B8%D1%8F-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2)
7+
- [Объединение шаблонов](#%D0%BE%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2)
8+
- [Разделение шаблонов](#%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2)
9+
10+
## Установить приложение, алгоритм установки стандартный
11+
12+
- склонировать репозиторий или
13+
- распаковать в нужный каталог архив репозитория
14+
- для Windows запустить [installlocalhost.bat](/installlocalhost.bat)
15+
16+
## Использование
17+
18+
### Конвертация шаблонов
19+
20+
1. Шаблоны конфигуратора в шаблоны VS Code
21+
2. Шаблоны конфигуратора в шаблоны EDT
22+
3. Шаблоны EDT в шаблоны конфигуратора
23+
24+
Поддерживаемые расширения файлов
25+
26+
- ".st" - шаблон конфигуратора
27+
- ".json" - шаблон языка VSCode
28+
- ".code-snippets" - глобальный шаблон VSCode
29+
- ".xml" - шаблон EDT
30+
31+
Определение типа преобразования происходит на основании расширения файла.
32+
33+
Для запуска преобразования используется команда:
34+
35+
`snippet-transform convert Исходный-шаблон Новый-шаблон`
36+
37+
Примеры:
38+
39+
- `snippet-transform convert "Мой любимый шаблон.st" "bsl.code-snippets"`
40+
Команда выполнить преобразование шаблона конфигуратор в глобальный шаблон VSCode
41+
42+
- `snippet-transform convert "Мой любимый шаблон.xml" "bsl.st"`
43+
Команда выполнить преобразование шаблона EDT в шаблон конфигуратора
44+
45+
### Объединение шаблонов
46+
47+
`snippet-transform join-files Изменяемый-шаблон Добавляемый-шаблон`
48+
49+
- `Изменяемый-шаблон` - Имя файла шаблона, в который будут добавлены записи из второго файла
50+
- `Добавляемый-шаблон` - Имя файла, в котором содержатся добавляемые записи
51+
52+
`snippet-transform join-path Каталог-шаблонов Результирующий-шаблон`
53+
54+
- `Каталог-шаблонов` - Имя каталога, в котором лежат шаблоны, которые нужно соединить.
55+
- `Результирующий-шаблон` - Имя файла, в который будет сохранен результат
56+
57+
Примеры:
58+
59+
- `snippet-transform join-files "Мой любимый шаблон.xml" "Мой второй любимый шаблон.st"`
60+
Команда выполнить объединение шаблонов EDT и конфигуратора и запишет результат в шаблон EDT c именем "Мой любимый шаблон.xml"
61+
62+
- `snippet-transform join-path "Каталог любимый шаблонов" "Супер шаблон.code-snippets"`
63+
Команда выполнить объединение всех поддерживаемых шаблонов каталога и запишет результат в новый шаблон
64+
65+
### Разделение шаблонов
66+
67+
`snippet-transform apportion Изменяемый-шаблон Выражение-поиска [Новый-шаблон] [-r]`
68+
69+
Удаляет (переносит в новый файл) элементы шаблона, полное наименование которых совпадает с `Выражение-поиска`
70+
71+
- `Изменяемый-шаблон` - Имя файла шаблона, из которого будет вырезана часть
72+
- `Выражение-поиска` - Регулярное выражение для проверки наименования элемента шаблона. Если выражение совпадает с наименованием, то такой элемент переносится в новый файл.
73+
- `Новый-шаблон` - Имя файла шаблона, в который будут помещены исключенные записи
74+
- `-r` Переносить элементы, у которых наименование не совпадает с шаблоном
75+
76+
Примеры:
77+
78+
- `snippet-transform apportion "Мой любимый шаблон.st" "алгоритм"`
79+
Удалит из шаблона элементы, в наименовании которых есть слово "алгоритм"
80+
81+
- `snippet-transform apportion "Мой любимый шаблон.st" "алгоритм" Алгоритмы.st`
82+
Перенесет из шаблона "Мой любимый шаблон.st" в шаблон "Алгоритмы.st" элементы, в наименовании которых есть слово "алгоритм"
83+
84+
- `snippet-transform apportion "Мой любимый шаблон.st" "оставить" -r`
85+
Удалит из шаблона все элементы, в наименовании которых нет слова "оставить"
86+
87+
- `snippet-transform apportion "Мой любимый шаблон.st" "^Супер группа\." -r`
88+
Удалит из шаблона все элементы, кроме группы первого уровня "Супер группа"
89+
90+
- `snippet-transform apportion "Мой любимый шаблон.st" "Плохая группа\."`
91+
Удалит из шаблона группы "Плохая группа" и "очень плохая группа"
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
2+
3+
Перем БДД; //контекст фреймворка 1bdd
4+
5+
// Метод выдает список шагов, реализованных в данном файле-шагов
6+
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
7+
БДД = КонтекстФреймворкаBDD;
8+
9+
ВсеШаги = Новый Массив;
10+
11+
ВсеШаги.Добавить("ФайлВРабочемКаталогеСодержитСтроки");
12+
ВсеШаги.Добавить("ФайлВРабочемКаталогеНеСодержитСтроки");
13+
14+
Возврат ВсеШаги;
15+
КонецФункции
16+
17+
// Реализация шагов
18+
19+
// Процедура выполняется перед запуском каждого сценария
20+
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
21+
22+
КонецПроцедуры
23+
24+
// Процедура выполняется после завершения каждого сценария
25+
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
26+
27+
КонецПроцедуры
28+
29+
//Файл "result/vscode1.code-snippets" в рабочем каталоге содержит строки
30+
//| "scope": "bsl" |
31+
//| "prefix": "Общий модуль" |
32+
//| "prefix": "DEPRECATED" |
33+
//| "prefix": "Инкремент" |
34+
Процедура ФайлВРабочемКаталогеСодержитСтроки(Знач ФайлРабочегоКаталога, Знач ТаблицаСтрок) Экспорт
35+
36+
ФайлРабочегоКаталога = БДД.ПолучитьПутьФайлаСУчетомПеременныхКонтекста(ФайлРабочегоКаталога);
37+
38+
Чтение = Новый ЧтениеТекста(ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), ФайлРабочегоКаталога), КодировкаТекста.UTF8);
39+
СтрокаГдеИщем = Чтение.Прочитать();
40+
Чтение.Закрыть();
41+
42+
СтрокаРасхождений = "";
43+
Для Каждого СтрТаблицы Из ТаблицаСтрок Цикл
44+
45+
СтрокаЧтоИщем = СтрТаблицы[0];
46+
Если Найти(СтрокаГдеИщем, СтрокаЧтоИщем) = 0 Тогда
47+
СтрокаРасхождений = СтрШаблон(
48+
"%1
49+
| Не найдена подстрока <%2>", СтрокаРасхождений, СтрокаЧтоИщем);
50+
КонецЕсли;
51+
52+
КонецЦикла;
53+
Если Не ПустаяСтрока(СтрокаРасхождений) Тогда
54+
СтрокаРасхождений = СтрШаблон(
55+
"Не нашли одну из подстрок таблицы:
56+
|%2
57+
|в строке:
58+
|%1", СтрокаГдеИщем, СтрокаРасхождений);
59+
Ожидаем.Что(Истина, СтрокаРасхождений).ЭтоЛожь();
60+
КонецЕсли;
61+
62+
КонецПроцедуры
63+
64+
//Файл "result/vscode1.code-snippets" в рабочем каталоге не содержит строки
65+
//| "scope": "bsl" |
66+
//| "prefix": "Общий модуль" |
67+
//| "prefix": "DEPRECATED" |
68+
//| "prefix": "Инкремент" |
69+
Процедура ФайлВРабочемКаталогеНеСодержитСтроки(Знач ФайлРабочегоКаталога, Знач ТаблицаСтрок) Экспорт
70+
71+
ФайлРабочегоКаталога = БДД.ПолучитьПутьФайлаСУчетомПеременныхКонтекста(ФайлРабочегоКаталога);
72+
73+
Чтение = Новый ЧтениеТекста(ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), ФайлРабочегоКаталога), КодировкаТекста.UTF8);
74+
СтрокаГдеИщем = Чтение.Прочитать();
75+
Чтение.Закрыть();
76+
77+
СтрокаРасхождений = "";
78+
Для Каждого СтрТаблицы Из ТаблицаСтрок Цикл
79+
80+
СтрокаЧтоИщем = СтрТаблицы[0];
81+
Если Найти(СтрокаГдеИщем, СтрокаЧтоИщем) <> 0 Тогда
82+
СтрокаРасхождений = СтрШаблон(
83+
"%1
84+
| Найдена подстрока <%2>", СтрокаРасхождений, СтрокаЧтоИщем);
85+
КонецЕсли;
86+
87+
КонецЦикла;
88+
Если Не ПустаяСтрока(СтрокаРасхождений) Тогда
89+
СтрокаРасхождений = СтрШаблон(
90+
"Нашли одну из подстрок таблицы:
91+
|%2
92+
|в строке:
93+
|%1", СтрокаГдеИщем, СтрокаРасхождений);
94+
Ожидаем.Что(Истина, СтрокаРасхождений).ЭтоЛожь();
95+
КонецЕсли;
96+
97+
КонецПроцедуры
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#language: ru
2+
3+
Функциональность: Объединение шаблонов кода
4+
5+
Как разработчик
6+
Я хочу получить единый файл шаблона кода
7+
Чтоб проще распространять и подключать его
8+
9+
Контекст:
10+
Допустим Я очищаю параметры команды "oscript" в контексте
11+
И я включаю отладку лога с именем "oscript.app.snippet-transform"
12+
И я создаю временный каталог и сохраняю его в контекст
13+
И я устанавливаю временный каталог как рабочий каталог
14+
И я установил рабочий каталог как текущий каталог
15+
И я создаю каталог "snippets" в рабочем каталоге
16+
И я копирую файл "ШаблонКонфигуратора.st" из каталога "tests/fixtures//snippets" проекта в подкаталог "snippets" рабочего каталога
17+
И я копирую файл "ШаблонEDT.xml" из каталога "tests/fixtures//snippets" проекта в подкаталог "snippets" рабочего каталога
18+
19+
Сценарий: Объединение двух шаблонов
20+
Когда я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os join-files snippets/ШаблонКонфигуратора.st snippets/ШаблонEDT.xml"
21+
Тогда Код возврата равен 0
22+
И Файл "snippets/ШаблонКонфигуратора.st" в рабочем каталоге содержит
23+
"""
24+
{"Общий модуль",0,0,"Модуль[Общий]","//⇗ ⇘ ⇙ ⇚ ⇛ ⇜ ⇝ ⇞ ⇟ ⇠ ⇡ ⇢ ⇣ ⇤ ⇥ ⇦ ⇧ ⇨ ⇩ ⇪ ⇫ ⇬ ⇭ ⇮ ⇯ ⇰ ⇱ ⇲ ⇳ ⇴ ⇵ ⇶ ⇷ ⇸ ⇹ ⇺ //
25+
"""
26+
И Файл "snippets/ШаблонКонфигуратора.st" в рабочем каталоге содержит
27+
"""
28+
ТекущаяДата = '<?"n1", ДатаВремя, ""ДФ=dd.MM.yyyy"">'
29+
"""
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#language: ru
2+
3+
Функциональность: Объединение шаблонов кода
4+
5+
Как разработчик
6+
Я хочу получить единый файл шаблона кода
7+
Чтоб проще распространять и подключать его
8+
9+
Контекст:
10+
Допустим Я очищаю параметры команды "oscript" в контексте
11+
И я включаю отладку лога с именем "oscript.app.snippet-transform"
12+
И я создаю временный каталог и сохраняю его в контекст
13+
И я устанавливаю временный каталог как рабочий каталог
14+
И я установил рабочий каталог как текущий каталог
15+
И я создаю каталог "snippets" в рабочем каталоге
16+
И я копирую файл "ШаблонКонфигуратора.st" из каталога "tests/fixtures/snippets" проекта в подкаталог "snippets" рабочего каталога
17+
И я копирую файл "ШаблонEDT.xml" из каталога "tests/fixtures/snippets" проекта в подкаталог "snippets" рабочего каталога
18+
19+
Сценарий: Объединение шаблонов каталога
20+
Когда я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os join-path snippets result.st"
21+
Тогда Код возврата равен 0
22+
И Файл "result.st" в рабочем каталоге содержит
23+
"""
24+
{"Общий модуль",0,0,"Модуль[Общий]","//⇗ ⇘ ⇙ ⇚ ⇛ ⇜ ⇝ ⇞ ⇟ ⇠ ⇡ ⇢ ⇣ ⇤ ⇥ ⇦ ⇧ ⇨ ⇩ ⇪ ⇫ ⇬ ⇭ ⇮ ⇯ ⇰ ⇱ ⇲ ⇳ ⇴ ⇵ ⇶ ⇷ ⇸ ⇹ ⇺ //
25+
"""
26+
И Файл "result.st" в рабочем каталоге содержит
27+
"""
28+
ТекущаяДата = '<?"n1", ДатаВремя, ""ДФ=dd.MM.yyyy"">'
29+
"""

0 commit comments

Comments
 (0)