Skip to content

Commit

Permalink
Merge pull request #157 from alei1180/feat/connector
Browse files Browse the repository at this point in the history
feat/connector
  • Loading branch information
alei1180 authored Jan 21, 2025
2 parents bc591c0 + a1df2e4 commit 5745244
Show file tree
Hide file tree
Showing 28 changed files with 4,708 additions and 1,435 deletions.
64 changes: 52 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ opm install curlone

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

### web приложение
## web приложение

Запуск приложения:

Expand Down Expand Up @@ -58,12 +58,27 @@ curlone web -o -p 3333
>
>HTTPОтвет = Соединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
>```
>
>Код Connector
>
>```bsl
>Заголовки = Новый Соответствие();
>Заголовки.Вставить("X-Header", "value");
>
>Данные = Новый Соответствие();
>Данные.Вставить("key", "value");
>
>ДополнительныеПараметры = Новый Структура();
>ДополнительныеПараметры.Вставить("Заголовки", Заголовки);
>
>Результат = КоннекторHTTP.Post("https://httpbin.org/post", Данные, ДополнительныеПараметры);
>```
Горячие клавиши:
* `ctrl + enter` - вызов команды `Конвертировать`
### cli приложение
## cli приложение
Синтаксис команды:
Expand All @@ -81,22 +96,47 @@ curlone convert <команда>
>
>Команда curlone
>
>Код 1C
>
>```shell
>curlone convert 1c https://httpbin.org/post --request POST -d "key=value" -H "X-Header: value"
>```
>
>Код Connector
>
>```shell
>curlone convert https://httpbin.org/post --request POST -d "key=value" -H "X-Header: value"
>curlone convert connector https://httpbin.org/post --request POST -d "key=value" -H "X-Header: value"
>```
### библиотека
## библиотека
Пример использования:
```bsl
#Использовать curlone
КонсольнаяКоманда = "curl https://httpbin.org/post --request POST -d ""key=value"" -H ""X-Header: value""";
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда);
```
>Код 1C
>
>```bsl
>#Использовать curlone
>
>КонсольнаяКоманда = "curl https://httpbin.org/post --request POST -d ""key=value"" -H ""X-Header: value""";
>
>Генератор = Новый ГенераторПрограммногоКода1С();
>
>КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
>Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда, Генератор);
>```
>
>Код Connector
>
>```bsl
>#Использовать curlone
>
>КонсольнаяКоманда = "curl https://httpbin.org/post --request POST -d ""key=value"" -H ""X-Header: value""";
>
>Генератор = Новый ГенераторПрограммногоКодаКоннекторHTTP();
>
>КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
>Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда, Генератор);
>```
## Особенности использования
Expand Down
2 changes: 1 addition & 1 deletion autumn-properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@
"cli": {
"ИмяПриложения": "curlone",
"ПолноеИмяПриложения": "Конвертер команды curl в код на языке 1С",
"ВерсияПриложения": "1.0.0"
"ВерсияПриложения": "1.1.0"
}
}
5 changes: 3 additions & 2 deletions lib.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<package-def>
<class name="ГенераторПрограммногоКода1С" file="src/core/Классы/ГенераторПрограммногоКода1С.os"/>
<class name="ПарсерКонсольнойКоманды" file="src/core/Классы/ПарсерКонсольнойКоманды.os"/>
<class name="КонвертерКомандыCURL" file="src/core/Классы/КонвертерКомандыCURL.os"/>
<class name="ПарсерКонсольнойКоманды" file="src/core/Классы/ПарсерКонсольнойКоманды.os"/>
<class name="ГенераторПрограммногоКода1С" file="src/core/Классы/ГенераторПрограммногоКода1С.os"/>
<class name="ГенераторПрограммногоКодаКоннекторHTTP" file="src/core/Классы/ГенераторПрограммногоКодаКоннекторHTTP.os"/>
</package-def>
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Описание.Имя("curlone")
.Версия("1.0.0")
.Версия("1.1.0")
.Автор("Alexander Osadchy, Dmitry Ivanov, Gleb Bogachev")
.АдресАвтора("https://github.com/alei1180, https://github.com/Stivo182, https://github.com/pinkycat")
.Описание("Конвертер команды curl в код на языке 1С")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
#Использовать coloratos
#Использовать "../../core"
#Использовать "../../internal"

Перем ВходящиеАргументы; // Массив из Строка
Перем Генератор; // Объект генератора программного кода
Перем РезультатКонвертации; // Строка

#Область ПрограммныйИнтерфейс

Процедура Конвертировать() Экспорт

Генератор = Неопределено;

Если Не НайденаКоманда() Тогда
ВызватьИсключение "Не найдена команда convert";
КонецЕсли;

ПодготовленныеАргументы = ПодготовитьАргументы();

Ошибки = Новый Массив();
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();

Попытка
РезультатКонвертации = КонвертерКомандыCURL.Конвертировать(ПодготовленныеАргументы, Генератор, Ошибки);
Исключение
РезультатКонвертации = "";
Ошибки.Добавить(ОбщегоНазначения.НоваяКритичнаяОшибка(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;

Для Каждого Ошибка Из Ошибки Цикл
Цвет = ?(Ошибка.Критичная, "Красный", "Желтый");
ЦветнойВывод.Вывести("// ");
ЦветнойВывод.ВывестиСтроку(Ошибка.Текст, Цвет);
КонецЦикла;

Если ЗначениеЗаполнено(РезультатКонвертации) Тогда
Если Ошибки.Количество() Тогда
Консоль.Вывести(Символы.ПС);
КонецЕсли;

Консоль.Вывести(РезультатКонвертации);
КонецЕсли;

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

Функция НайденаКоманда() Экспорт
Возврат ВходящиеАргументы.Количество() И НРег(ВходящиеАргументы[0]) = "convert";
КонецФункции

#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс

Функция ПолучитьРезультат() Экспорт
Возврат РезультатКонвертации;
КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Процедура ПриСозданииОбъекта(Аргументы)
ВходящиеАргументы = Аргументы;
РезультатКонвертации = "";
КонецПроцедуры

Функция ПодготовитьАргументы()

ПодготовленныеАргументы = Новый Массив();
ОбщегоНазначения.ДополнитьМассив(ПодготовленныеАргументы, ВходящиеАргументы);

ПодготовленныеАргументы[0] = "curl";

ПрочитатьАргументГенератора(ПодготовленныеАргументы);
УдалитьПовторяющийАргументCurl(ПодготовленныеАргументы);

Возврат ПодготовленныеАргументы;

КонецФункции

Процедура УдалитьПовторяющийАргументCurl(Аргументы)

Если Аргументы.Количество() > 1 И НРег(Аргументы[1]) = "curl" Тогда
Аргументы.Удалить(1);
КонецЕсли;

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

Процедура ПрочитатьАргументГенератора(Аргументы)

ИндексАргумента = 1;

Если Аргументы.Количество() > ИндексАргумента Тогда
Аргумент = НРег(Аргументы[ИндексАргумента]);
Генератор = ПолучитьГенераторПоАргументу(Аргумент);
КонецЕсли;

Если Генератор = Неопределено Тогда
Генератор = ГенераторПоУмолчанию();
Иначе
Аргументы.Удалить(ИндексАргумента);
КонецЕсли;

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

Функция ПолучитьГенераторПоАргументу(Аргумент)
Если Аргумент = "connector" Тогда
Возврат Новый ГенераторПрограммногоКодаКоннекторHTTP();
ИначеЕсли Аргумент = "1c" Тогда
Возврат Новый ГенераторПрограммногоКода1С();
КонецЕсли;
КонецФункции

Функция ГенераторПоУмолчанию()
Возврат Новый ГенераторПрограммногоКода1С();
КонецФункции

#КонецОбласти
Loading

0 comments on commit 5745244

Please sign in to comment.