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

Commit

Permalink
Merge branch 'release/1.0.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
theshadowco committed Apr 5, 2019
2 parents f99f055 + 6c52c39 commit e001bb9
Show file tree
Hide file tree
Showing 34 changed files with 3,309 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
bdd-log.xml
*.ospx
*.orig
exec.log
ignore/**
tests.xml
5 changes: 3 additions & 2 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
MIT License
The MIT License (MIT)

Copyright (c) 2019 orais / tools
Copyright (c) 2016 Andrei Ovsiankin
Copyright (c) 2019 BIA Technologies, LLC

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
91 changes: 91 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# Скрипт для работы с шаблонами кода

- [Скрипт для работы с шаблонами кода](#%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)
- [Установить приложение, алгоритм установки стандартный](#%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)
- [Использование](#%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)
- [Конвертация шаблонов](#%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)
- [Объединение шаблонов](#%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)
- [Разделение шаблонов](#%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)

## Установить приложение, алгоритм установки стандартный

- склонировать репозиторий или
- распаковать в нужный каталог архив репозитория
- для Windows запустить [installlocalhost.bat](/installlocalhost.bat)

## Использование

### Конвертация шаблонов

1. Шаблоны конфигуратора в шаблоны VS Code
2. Шаблоны конфигуратора в шаблоны EDT
3. Шаблоны EDT в шаблоны конфигуратора

Поддерживаемые расширения файлов

- ".st" - шаблон конфигуратора
- ".json" - шаблон языка VSCode
- ".code-snippets" - глобальный шаблон VSCode
- ".xml" - шаблон EDT

Определение типа преобразования происходит на основании расширения файла.

Для запуска преобразования используется команда:

`snippet-transform convert Исходный-шаблон Новый-шаблон`

Примеры:

- `snippet-transform convert "Мой любимый шаблон.st" "bsl.code-snippets"`
Команда выполнить преобразование шаблона конфигуратор в глобальный шаблон VSCode

- `snippet-transform convert "Мой любимый шаблон.xml" "bsl.st"`
Команда выполнить преобразование шаблона EDT в шаблон конфигуратора

### Объединение шаблонов

`snippet-transform join-files Изменяемый-шаблон Добавляемый-шаблон`

- `Изменяемый-шаблон` - Имя файла шаблона, в который будут добавлены записи из второго файла
- `Добавляемый-шаблон` - Имя файла, в котором содержатся добавляемые записи

`snippet-transform join-path Каталог-шаблонов Результирующий-шаблон`

- `Каталог-шаблонов` - Имя каталога, в котором лежат шаблоны, которые нужно соединить.
- `Результирующий-шаблон` - Имя файла, в который будет сохранен результат

Примеры:

- `snippet-transform join-files "Мой любимый шаблон.xml" "Мой второй любимый шаблон.st"`
Команда выполнить объединение шаблонов EDT и конфигуратора и запишет результат в шаблон EDT c именем "Мой любимый шаблон.xml"

- `snippet-transform join-path "Каталог любимый шаблонов" "Супер шаблон.code-snippets"`
Команда выполнить объединение всех поддерживаемых шаблонов каталога и запишет результат в новый шаблон

### Разделение шаблонов

`snippet-transform apportion Изменяемый-шаблон Выражение-поиска [Новый-шаблон] [-r]`

Удаляет (переносит в новый файл) элементы шаблона, полное наименование которых совпадает с `Выражение-поиска`

- `Изменяемый-шаблон` - Имя файла шаблона, из которого будет вырезана часть
- `Выражение-поиска` - Регулярное выражение для проверки наименования элемента шаблона. Если выражение совпадает с наименованием, то такой элемент переносится в новый файл.
- `Новый-шаблон` - Имя файла шаблона, в который будут помещены исключенные записи
- `-r` Переносить элементы, у которых наименование не совпадает с шаблоном

Примеры:

- `snippet-transform apportion "Мой любимый шаблон.st" "алгоритм"`
Удалит из шаблона элементы, в наименовании которых есть слово "алгоритм"

- `snippet-transform apportion "Мой любимый шаблон.st" "алгоритм" Алгоритмы.st`
Перенесет из шаблона "Мой любимый шаблон.st" в шаблон "Алгоритмы.st" элементы, в наименовании которых есть слово "алгоритм"

- `snippet-transform apportion "Мой любимый шаблон.st" "оставить" -r`
Удалит из шаблона все элементы, в наименовании которых нет слова "оставить"

- `snippet-transform apportion "Мой любимый шаблон.st" "^Супер группа\." -r`
Удалит из шаблона все элементы, кроме группы первого уровня "Супер группа"

- `snippet-transform apportion "Мой любимый шаблон.st" "Плохая группа\."`
Удалит из шаблона группы "Плохая группа" и "очень плохая группа"
97 changes: 97 additions & 0 deletions features/step_definitions/АнализШаблонов.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

Перем БДД; //контекст фреймворка 1bdd

// Метод выдает список шагов, реализованных в данном файле-шагов
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
БДД = КонтекстФреймворкаBDD;

ВсеШаги = Новый Массив;

ВсеШаги.Добавить("ФайлВРабочемКаталогеСодержитСтроки");
ВсеШаги.Добавить("ФайлВРабочемКаталогеНеСодержитСтроки");

Возврат ВсеШаги;
КонецФункции

// Реализация шагов

// Процедура выполняется перед запуском каждого сценария
Процедура ПередЗапускомСценария(Знач Узел) Экспорт

КонецПроцедуры

// Процедура выполняется после завершения каждого сценария
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт

КонецПроцедуры

//Файл "result/vscode1.code-snippets" в рабочем каталоге содержит строки
//| "scope": "bsl" |
//| "prefix": "Общий модуль" |
//| "prefix": "DEPRECATED" |
//| "prefix": "Инкремент" |
Процедура ФайлВРабочемКаталогеСодержитСтроки(Знач ФайлРабочегоКаталога, Знач ТаблицаСтрок) Экспорт

ФайлРабочегоКаталога = БДД.ПолучитьПутьФайлаСУчетомПеременныхКонтекста(ФайлРабочегоКаталога);

Чтение = Новый ЧтениеТекста(ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), ФайлРабочегоКаталога), КодировкаТекста.UTF8);
СтрокаГдеИщем = Чтение.Прочитать();
Чтение.Закрыть();

СтрокаРасхождений = "";
Для Каждого СтрТаблицы Из ТаблицаСтрок Цикл

СтрокаЧтоИщем = СтрТаблицы[0];
Если Найти(СтрокаГдеИщем, СтрокаЧтоИщем) = 0 Тогда
СтрокаРасхождений = СтрШаблон(
"%1
| Не найдена подстрока <%2>", СтрокаРасхождений, СтрокаЧтоИщем);
КонецЕсли;

КонецЦикла;
Если Не ПустаяСтрока(СтрокаРасхождений) Тогда
СтрокаРасхождений = СтрШаблон(
"Не нашли одну из подстрок таблицы:
|%2
|в строке:
|%1", СтрокаГдеИщем, СтрокаРасхождений);
Ожидаем.Что(Истина, СтрокаРасхождений).ЭтоЛожь();
КонецЕсли;

КонецПроцедуры

//Файл "result/vscode1.code-snippets" в рабочем каталоге не содержит строки
//| "scope": "bsl" |
//| "prefix": "Общий модуль" |
//| "prefix": "DEPRECATED" |
//| "prefix": "Инкремент" |
Процедура ФайлВРабочемКаталогеНеСодержитСтроки(Знач ФайлРабочегоКаталога, Знач ТаблицаСтрок) Экспорт

ФайлРабочегоКаталога = БДД.ПолучитьПутьФайлаСУчетомПеременныхКонтекста(ФайлРабочегоКаталога);

Чтение = Новый ЧтениеТекста(ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), ФайлРабочегоКаталога), КодировкаТекста.UTF8);
СтрокаГдеИщем = Чтение.Прочитать();
Чтение.Закрыть();

СтрокаРасхождений = "";
Для Каждого СтрТаблицы Из ТаблицаСтрок Цикл

СтрокаЧтоИщем = СтрТаблицы[0];
Если Найти(СтрокаГдеИщем, СтрокаЧтоИщем) <> 0 Тогда
СтрокаРасхождений = СтрШаблон(
"%1
| Найдена подстрока <%2>", СтрокаРасхождений, СтрокаЧтоИщем);
КонецЕсли;

КонецЦикла;
Если Не ПустаяСтрока(СтрокаРасхождений) Тогда
СтрокаРасхождений = СтрШаблон(
"Нашли одну из подстрок таблицы:
|%2
|в строке:
|%1", СтрокаГдеИщем, СтрокаРасхождений);
Ожидаем.Что(Истина, СтрокаРасхождений).ЭтоЛожь();
КонецЕсли;

КонецПроцедуры
29 changes: 29 additions & 0 deletions features/Объединить-два-шаблона.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#language: ru

Функциональность: Объединение шаблонов кода

Как разработчик
Я хочу получить единый файл шаблона кода
Чтоб проще распространять и подключать его

Контекст:
Допустим Я очищаю параметры команды "oscript" в контексте
И я включаю отладку лога с именем "oscript.app.snippet-transform"
И я создаю временный каталог и сохраняю его в контекст
И я устанавливаю временный каталог как рабочий каталог
И я установил рабочий каталог как текущий каталог
И я создаю каталог "snippets" в рабочем каталоге
И я копирую файл "ШаблонКонфигуратора.st" из каталога "tests/fixtures//snippets" проекта в подкаталог "snippets" рабочего каталога
И я копирую файл "ШаблонEDT.xml" из каталога "tests/fixtures//snippets" проекта в подкаталог "snippets" рабочего каталога

Сценарий: Объединение двух шаблонов
Когда я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os join-files snippets/ШаблонКонфигуратора.st snippets/ШаблонEDT.xml"
Тогда Код возврата равен 0
И Файл "snippets/ШаблонКонфигуратора.st" в рабочем каталоге содержит
"""
{"Общий модуль",0,0,"Модуль[Общий]","//⇗ ⇘ ⇙ ⇚ ⇛ ⇜ ⇝ ⇞ ⇟ ⇠ ⇡ ⇢ ⇣ ⇤ ⇥ ⇦ ⇧ ⇨ ⇩ ⇪ ⇫ ⇬ ⇭ ⇮ ⇯ ⇰ ⇱ ⇲ ⇳ ⇴ ⇵ ⇶ ⇷ ⇸ ⇹ ⇺ //
"""
И Файл "snippets/ШаблонКонфигуратора.st" в рабочем каталоге содержит
"""
ТекущаяДата = '<?"n1", ДатаВремя, ""ДФ=dd.MM.yyyy"">'
"""
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#language: ru

Функциональность: Объединение шаблонов кода

Как разработчик
Я хочу получить единый файл шаблона кода
Чтоб проще распространять и подключать его

Контекст:
Допустим Я очищаю параметры команды "oscript" в контексте
И я включаю отладку лога с именем "oscript.app.snippet-transform"
И я создаю временный каталог и сохраняю его в контекст
И я устанавливаю временный каталог как рабочий каталог
И я установил рабочий каталог как текущий каталог
И я создаю каталог "snippets" в рабочем каталоге
И я копирую файл "ШаблонКонфигуратора.st" из каталога "tests/fixtures/snippets" проекта в подкаталог "snippets" рабочего каталога
И я копирую файл "ШаблонEDT.xml" из каталога "tests/fixtures/snippets" проекта в подкаталог "snippets" рабочего каталога

Сценарий: Объединение шаблонов каталога
Когда я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os join-path snippets result.st"
Тогда Код возврата равен 0
И Файл "result.st" в рабочем каталоге содержит
"""
{"Общий модуль",0,0,"Модуль[Общий]","//⇗ ⇘ ⇙ ⇚ ⇛ ⇜ ⇝ ⇞ ⇟ ⇠ ⇡ ⇢ ⇣ ⇤ ⇥ ⇦ ⇧ ⇨ ⇩ ⇪ ⇫ ⇬ ⇭ ⇮ ⇯ ⇰ ⇱ ⇲ ⇳ ⇴ ⇵ ⇶ ⇷ ⇸ ⇹ ⇺ //
"""
И Файл "result.st" в рабочем каталоге содержит
"""
ТекущаяДата = '<?"n1", ДатаВремя, ""ДФ=dd.MM.yyyy"">'
"""
Loading

0 comments on commit e001bb9

Please sign in to comment.