Compare commits

...

18 Commits

Author SHA1 Message Date
IO-23 Andrii Bodnar ef0ebef4c3 Лаб №2: вступ 2024-04-14 19:07:41 +03:00
ІО-23 Шмуляр Олег 9f296dcccd Merge pull request 'додав скрипт форматування таблиць для лаб №2' (#23) from shmuliar-table-converter into master
Reviewed-on: #23
Reviewed-by: Misha1tigr <misha1tigr@gmail.com>
2024-03-24 17:14:12 +02:00
ІО-23 Шмуляр Олег e9d104f53a utils/table-generator/convert.py: додав захист від повторної обробки файлів таблиць та виправив декілька помилок 2024-03-24 16:35:21 +02:00
ІО-23 Шмуляр Олег b8f1e590e7 utils/table-generator/convert.py: додав автоматичне очищення поля ID use-case-ів від сторонніх шляхів 2024-03-24 15:11:53 +02:00
ІО-23 Шмуляр Олег 06b52b1efc utils/table-generator/convert.py: вказав кодування UTF-8 для роботи з файлами 2024-03-24 15:08:03 +02:00
ІО-23 Шмуляр Олег d67567d304 додав скрипт форматування таблиць для лаб №2 2024-03-24 14:19:31 +02:00
ІО-23 Шмуляр Олег 8b5812ac91 Merge pull request 'лаб2: додав файл шаблону для другої лаб роботи' (#22) from shmuliar into master
Reviewed-on: #22
2024-03-23 20:16:22 +02:00
ІО-23 Шмуляр Олег acada2851d лаб2: додав файл шаблону для другої лаб роботи 2024-03-23 20:13:51 +02:00
ІО-23 Шмуляр Олег 2332744679 Merge pull request 'Лаб №1: оптимізація структури тексту' (#20) from shmuliar into master
Reviewed-on: #20
Reviewed-by: Misha1tigr <misha1tigr@gmail.com>
Reviewed-by: IO-23 Andrii Bodnar <bodnarandrew123@gmail.com>
2024-03-16 10:25:27 +02:00
ІО-23 Шмуляр Олег 605b898358 лаб1: виправив пунктуаційну помилку 2024-03-15 10:06:06 +02:00
ІО-23 Шмуляр Олег dfa280a6b2 лаб1: скоротив опис наявних сервісів та перемістив їх у розділ порівняння наявних засобів із нашим 2024-03-15 10:02:48 +02:00
ІО-23 Шмуляр Олег e31c1eab09 Merge pull request 'лаб1: додав літературу' (#19) from shmuliar into master
Reviewed-on: #19
Reviewed-by: IO-23 Andrii Bodnar <bodnarandrew123@gmail.com>
Reviewed-by: Misha1tigr <misha1tigr@gmail.com>
2024-03-14 16:09:02 +02:00
ІО-23 Шмуляр Олег 35c3276a5c лаб1: додав літературу 2024-03-14 12:49:54 +02:00
ІО-23 Шмуляр Олег 0b2e555a36 Merge pull request 'Written a conclusion' (#18) from shved into master
Reviewed-on: #18
Reviewed-by: hasslesstech <user1@109.86.70.81>
Reviewed-by: Misha1tigr <misha1tigr@gmail.com>
Reviewed-by: IO-23 Andrii Bodnar <bodnarandrew123@gmail.com>
2024-03-14 12:46:42 +02:00
rhinemann bba0246d8d Written a conclusion 2024-03-14 12:33:38 +02:00
rhinemann 6dde82e6fb Revert "Written a conclusion"
This reverts commit 5d1eb939da.
2024-03-14 12:31:40 +02:00
rhinemann 5d1eb939da Written a conclusion 2024-03-14 12:14:25 +02:00
ІО-23 Шмуляр Олег b7d6da08d3 Merge pull request 'лаб1: прибрав повторюваний текст' (#16) from bodnar into master
Reviewed-on: #16
Reviewed-by: Misha1tigr <misha1tigr@gmail.com>
Reviewed-by: hasslesstech <user1@109.86.70.81>
2024-03-13 20:39:54 +02:00
3 changed files with 311 additions and 125 deletions

View File

@ -1,14 +1,13 @@
# Розроблення вимог до системи
## Вступ
У даному розділі проводиться аналіз предметної області, пов'язаної з системою організації та управління експертними опитуваннями.
Аналіз методів експертного опитування розкриє їхні переваги та недоліки.
У даному розділі проводиться аналіз предметної області, пов'язаної з системою організації та управління експертними опитуваннями. Представлені такі категорії:
Розпишемо підходи та методи організації систем організації та опитування експертів.
Ми визначимо доцільність розробки нового проєкту шляхом аналізу переваг та недоліків наявних інструментів, а також їх зіставлення з нашим майбутнім.
В глосарії опишемо основні терміни та поняття, котрі можна зустріти в сфері експертних опитувань.
У висновку сформуємо ключові аспекти, на які слід звертати увагу, щоб забезпечити успішну та ефективну реалізацію проєкту.
- [Основні визначення](#основні-визначення), котрі можна зустріти в сфері експертних опитувань
- [Підходи та способи вирішення завдання](#підходи-та-способи-вирішення-завдання) опитування експертів
- [Порівняльна характеристика наявних засобів вирішення завдання](#порівняльна-характеристика-існуючих-засобів-вирішення-завдання) опитування експертів
- [Висновки](#висновки) щодо доцільності розробки нової системи
- [Література](#література), де наведені посилання на джерела інформації
## Основні визначення
### Технічні визначення
@ -102,7 +101,9 @@ SQL (англ. Structured query language — мова структуровани
Мінуси: відсутність структури; можливість домінування деяких учасників.
Тепер давайте розглянемо найпопулярніші інструменти для проведення анкетувань.
## Порівняльна характеристика існуючих засобів вирішення завдання
Розглядатимемо такі найпопулярніші інструменти для проведення анкетувань:
[Google Forms](https://uk.wikipedia.org/wiki/Google_Форми)
@ -115,26 +116,6 @@ Google Slides, Google Drawings, Google Sites і Google Keep. Google Форми
в режимі реального часу. Зібрану інформацію можна автоматично внести в
електронну таблицю.
Цілком можливо, що Google Forms є одним із найпоширеніших конструкторів
форм, доступних сьогодні. Враховуючи численні переваги Google Forms,
величезна популярність програми не повинна бути несподіванкою.
Однак, як будь-яка інша програма, Google Forms також має деякі помітні
недоліки.
Переваги Google Forms:
- Зручність
- Простота використання
- Це безкоштовно
- Співпраця з колегами
- Необмежена кількість форм
- Потужні функції (кілька типів запитань, поле завантаження файлу, умовна
логіка)
- Кілька варіантів розповсюдження
- Частина екосистеми Google
![GoogleForms](http://139.162.162.130:16660/img/img-1.1.jpg)
[SurveyMonkey](https://en.wikipedia.org/wiki/SurveyMonkey)
SurveyMonkey - це служба як для створення простих і невеликих опитувань,
@ -145,32 +126,6 @@ SurveyMonkey - це служба як для створення простих
та наочні звіти, захищати дані та інтегрувати засоби з MailChimp,
GroSocial та іншими сервісами.
Функції, які може запропонувати сервіс:
- 51 шаблон опитувань та 15 типів питань.
- Підтримка всіх мов (Unicode).
- Логіка сторінок та питань.
- Випадковий розкид питань та конвеєрна організація.
- Користувальницькі готові теми та звіти.
- Сортування варіантів відповідей та випадковий розкид.
- Індикатор пройдених питань.
- Автонумерація сторінок та питань.
- Переадресація після завершення та сторінка подяк.
- Версія PDF для друку.
- Можливість надіслати опитування за веб-посиланням, поштою, у Twitter
або Facebook.
- Настроювана URL-адреса.
- Можливість вставити опитування на веб-сторінку або на спливаюче вікно.
- Розсилання опитувань диспетчером.
- Підвищена безпека (SSL).
- Підсумки в режимі реального часу.
- Аналітика тексту.
- Інтеграція SPSS(пакету програм, який використовується для аналізу
статистичних даних).
- Фільтри та перехресні таблиці відповідей за критеріями.
- Загальний доступ до відповідей.
![SurveyMonkey](http://139.162.162.130:16660/img/img-1.2.jpg)
[Responsly](https://www.responsly.com)
Responsly - платформа, яка дозволяє створювати онлайн-опитування та
@ -179,18 +134,6 @@ Responsly - платформа, яка дозволяє створювати о
надає широкий вибір типів питань для опитувань, вибраних спеціально для
певної аудиторії.
Функції, які може запропонувати сервіс:
- 25+ типів питань
- Автоматизація та інтеграція - планування надсилань опитувань і
створення власних сповіщення.
- Калькулятор - можливість обчислення балів, цін та інших змінних на
основі відповідей людей. Створення різних кінцевих сторінок на основі
балів.
- Багатомовні опитування.
- Безпека корпоративного рівня.
![Responsly](http://139.162.162.130:16660/img/img-1.3.jpg)
[Jotform](https://en.wikipedia.org/wiki/Jotform)
Jotform — це потужна онлайн програма, яка дозволяє будь-кому швидко
@ -202,19 +145,6 @@ Jotform — це потужна онлайн програма, яка дозво
відповіді безпосередньо в електронних листах та створювати PDF форми для
заповнення.
Функції, які може запропонувати сервіс:
- Тисячі готових до використання безкоштовних шаблонів, які допоможуть
користувачу створювати форми.
- Вбудований інструмент умовної логіки, який може показувати або
приховувати будь-які вибрані користувачем поля форми, залежно від того,
як люди відповідають на запитання.
- Не потрібний досвід програмування.
- Jotform дуже серйозно ставиться до безпеки даних користувачів.
- Легка інтеграція платежів.
- Інтеграція віджетів.
![Jotform](http://139.162.162.130:16660/img/img-1.4.jpg)
[QuestionPro](https://questionpro.com/)
QuestionPro — це програмне забезпечення для створення та розповсюдження
@ -223,33 +153,6 @@ QuestionPro — це програмне забезпечення для ство
електронною поштою або на веб-сайті та інструментів для аналізу та
перегляду результатів.
Достатньо просто створити опитування та надіслати його електронною поштою
потенційним респондентам. QuestionPro подбає про збір і запис відповідей,
а результати будуть доступні в реальному часі.
Функції, які може запропонувати сервіс:
- Необмежена кількість опитувань.
- Необмежена кількість відповідей.
- 20+ професійних тем опитування.
- Додавання свого логотипу.
- Експорт необроблених даних.
- Цілодобова підтримка електронною поштою.
- Індекс підтримки споживача (NPS).
- Багатомовні опитування.
- Розширена логіка розгалуження.
- Мобільний додаток QuestionPro.
- Експорт SPSS (пакету програм, який використовується для аналізу
статистичних даних).
- Цілодобовий чат і телефонна підтримка.
- Аналіз тональності тексту (клас методів контент-аналізу в комп'ютерній
лінгвістиці, призначений для автоматизованого виявлення в текстах
емоційно забарвленої лексики).
- Функції інтеграції опитувань.
- Функції автоматизації опитувань.
- Адміністрування опитування та функції безпеки.
![QuestionPro](http://139.162.162.130:16660/img/img-1.5.jpg)
[Fillout](https://www.fillout.com/)
Fillout — це платформа для створення форм, опитувань і тестів. Fillout
@ -260,23 +163,7 @@ Fillout. Для компаній із суворими вимогами щодо
іншими вимогами Fillout пропонує корпоративне рішення для безпечного
отримання даних у будь-якому масштабі.
Функції може запропонувати сервіс:
- Fillout пропонує широкий вибір шаблонів опитувань, придатних для різних
цілей, включаючи відгуки клієнтів, дослідження ринку, задоволеність
працівників тощо. Кожен шаблон розроблено, щоб допомогти отримати
користувачу цінну інформацію, і його легко налаштувати відповідно до
потреб.
- Fillout забезпечує легку інтеграцію з різними платформами, забезпечуючи
безпроблемну передачу та аналіз даних, які збирає користувач під час
своїх опитувань.
- Функція масового імпорту питань.
- Потужна інтуїтивна логіка.
![Fillout](http://139.162.162.130:16660/img/img-1.6.jpg)
## Порівняльна характеристика існуючих засобів вирішення завдання
Серед наявних наразі сервісів порівняймо ті, що були описані вище, із нашим проєктом.
Порівняймо наведені вище сервіси із нашим проєктом.
Умовні позначення в таблиці порівняння:
- 🔴 засіб не відповідає критерію
@ -315,5 +202,20 @@ Fillout. Для компаній із суворими вимогами щодо
|Онлайн-підтримка| 🟢 | $72/рік | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
## Висновки
Завдяки проведеному дослідженню ринку бачимо, що більшість сучасних платформ не надають безкоштовної можливості налаштовувати умовні переходи між сторінками опитування, а також значно обмежують максимальну кількість зібраних відповідей. Комбінація цих функцій у безкоштовній версії нашого сервісу може стати вагомою перевагою для певних груп користувачів.
*[Робляться висновки щодо доцільності розробки нової або модифікації існуючої інформаційної системи, необхідності та способів інтеграції з системами(сервісами) третіх сторін, тощо.]*
Також додаткові функції (такі як квоти відповідей або перегляд недозаповнених форм), що наявні в безкоштовній версії продукту, можуть привабити додаткових користувачів, що бажають отримати такі інструменти, проте не хочуть віддавати чималі гроші за коштовні сервіси. З огляду на це вважаємо, що розробка такого проєкту має сенс.
## Література
1. [https://uk.wikipedia.org/wiki/Базааних](https://uk.wikipedia.org/wiki/Базааних)
2. [https://uk.wikipedia.org/wiki/SQL](https://uk.wikipedia.org/wiki/SQL)
3. [https://uk.wikipedia.org/wiki/Опитування](https://uk.wikipedia.org/wiki/Опитування)
4. [https://ela.kpi.ua/server/api/core/bitstreams/8a8030cf-bfc1-4586-b197-1c7e3bf02700/content](https://ela.kpi.ua/server/api/core/bitstreams/8a8030cf-bfc1-4586-b197-1c7e3bf02700/content)
5. [http://elbib.in.ua/vidi-ekspertnogo-opituvannya-metodologiya-ta-metodi-sotsiologichnih-doslidjen.html](http://elbib.in.ua/vidi-ekspertnogo-opituvannya-metodologiya-ta-metodi-sotsiologichnih-doslidjen.html)
6. [https://uk.wikipedia.org/wiki/Google_Форми](https://uk.wikipedia.org/wiki/Google_Форми)
7. [https://en.wikipedia.org/wiki/SurveyMonkey](https://en.wikipedia.org/wiki/SurveyMonkey)
8. [https://www.responsly.com](https://www.responsly.com)
9. [https://en.wikipedia.org/wiki/Jotform](https://en.wikipedia.org/wiki/Jotform)
10. [https://questionpro.com/](https://questionpro.com/)
11. [https://www.fillout.com/](https://www.fillout.com/)

View File

@ -0,0 +1,124 @@
# Запити зацікавлених осіб
## Вступ
У даному розділі розкриваються ключові терміни та процеси, пов'язані з розробкою високоякісного програмного забезпечення. Ці матеріали надаються для зацікавлених користувачів, які прагнуть отримати глибше розуміння суті проекту та його основних завдань. Представлені такі категорії:
- [Короткий зміст](#короткии-зміст)
- [Характеристика ділових процесів](#характеристика-ділових-процесів)
- [Короткий огляд продукту](#короткии-огляд-продукту)
- [Функціональність](#функціональність)
- [Практичність](#практичність)
- [Надійність](#надіиність)
- [Продуктивність](#продуктивність)
- [Експлуатаційна придатність](#експлуатаціина-придатність)
### Мета
Метою є формування стратегії подальшого розвитку проекту на основі аналізу запитів цільової аудиторії, функціональних потреб та досягнення оптимальної продуктивності для створення якісного програмного забезпечення.
### Контекст
Даний документ містить теоретичні відомості, визначення та загальний огляд функціональності, які допоможуть розробникам розуміти напрямок роботи над програмним продуктом, а клієнтам - зрозуміти очікування від нього.
### Основні визначення та скорочення
[Зацікавлені сторони(особи)](https://uk.wikipedia.org/wiki/Зацікавлені_сторони) - фізичні та юридичні особи, які мають легітимний інтерес у діяльності організації, тобто певною мірою залежать від неї або можуть впливати на її діяльність.
[FURPS](https://en.wikipedia.org/wiki/FURPS) - абревіатура, що репрезентує модель класифікації якостей програмного забезпечення (функціональні і нефункціональні вимоги):
- *Functionality* (Функціональність) - можливості (розмір та загальний набір функцій), повторне використання (сумісність, інтероперабельність, портативність), безпека (безпека та можливість експлуатації);
- *Usability* (Використовуваність) (UX) - людський фактор, естетика, узгодженість, документація, швидкість реагування;
- *Reliability* (Надійність) - доступність (частота відмов (надійність/довговічність/стійкість), ступінь і тривалість відмов (відновлюваність/живучість)), передбачуваність (стабільність), точність (частота/серйозність помилок);
- *Perfomance* (Продуктивність) - швидкість, ефективність, споживання ресурсів (живлення, оперативна пам'ять, кеш і т.д.), пропускна здатність, ємність, масштабованість;
- *Supportability* (Підтримка) (ремонтопридатність, підтримуваність, стійкість, швидкість відновлення) - тестуємість, гнучкість (модифікованість, конфігурованість, адаптованість, розширюваність, модульність), встановлюваність, локалізованість.
[API](https://uk.wikipedia.org/wiki/Прикладний_програмний_інтерфейс) (з англ. application programming interface “прикладни́й програ́мний інтерфе́йс”) - підхід до архітектури мережевих протоколів, які надають доступ до інформаційних ресурсів.
[REST](https://uk.wikipedia.org/wiki/REST) (з англ. Representational State Transfer, «передача репрезентативного стану») — підхід до архітектури мережевих протоколів, які надають доступ до інформаційних ресурсів.
[MVC](https://en.wikipedia.org/wiki/Modelviewcontroller#Components) (з англ. Model-view-controller) - це патерн проектування програмного забезпечення, який зазвичай використовується для розробки користувацьких інтерфейсів, що розділяє відповідну програмну логіку на три взаємопов'язані елементи. Це робиться для того, щоб відокремити внутрішнє представлення інформації від способів її представлення користувачеві та отримання від нього.
[SOLID](https://en.wikipedia.org/wiki/SOLID) - це мнемонічна абревіатура для п'яти принципів проектування, призначених для того, щоб зробити об'єктно-орієнтовані проекти більш зрозумілими, гнучкими та зручними в обслуговуванні.
- *Принцип єдиної відповідальності*: "Ніколи не повинно бути більше однієї причини для зміни класу”. Іншими словами, кожен клас повинен мати лише одну відповідальність.
- *Принцип відкритості-закритості*: "Сутності програмного забезпечення ... повинні бути відкритими для розширення, але закритими для модифікації.
- *Принцип заміщення Ліскова*: "Функції, які використовують вказівники або посилання на базові класи, повинні мати можливість використовувати об'єкти похідних класів, не знаючи про це.
- *Принцип розділення інтерфейсів*: "Клієнти не повинні бути змушені залежати від інтерфейсів, якими вони не користуються".
- *Принцип інверсії залежності*: "Покладайтеся на абстракції, а не на конкретику".
[DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)(з англ. dont repeat yourself - “не повторюйся”) - це принцип розробки програмного забезпечення, спрямований на зменшення повторення інформації, яка може змінитися, заміну її абстракціями, які менш схильні до змін, або використання нормалізації даних, яка дозволяє уникнути надмірності в першу чергу.
[ORM](https://uk.wikipedia.org/wiki/Об%27єктно-реляційнеідображення) - (англ. Object-relational mapping, Об'єктно-реляційна проекція) — технологія програмування, яка зв'язує бази даних з концепціями об'єктно-орієнтованих мов програмування, створюючи «віртуальну об'єктну базу даних».
### Посилання
1. [https://uk.wikipedia.org/wiki/Зацікавлені_сторони](https://uk.wikipedia.org/wiki/Зацікавлені_сторони)
2. [https://en.wikipedia.org/wiki/FURPS](https://en.wikipedia.org/wiki/FURPS)
3. [https://uk.wikipedia.org/wiki/Прикладний_програмний_інтерфейс](https://uk.wikipedia.org/wiki/Прикладний_програмний_інтерфейс)
4. [https://uk.wikipedia.org/wiki/REST](https://uk.wikipedia.org/wiki/REST)
5. [https://en.wikipedia.org/wiki/Modelviewcontroller#Components](https://en.wikipedia.org/wiki/Modelviewcontroller#Components)
6. [https://en.wikipedia.org/wiki/SOLID](https://en.wikipedia.org/wiki/SOLID)
7. [https://en.wikipedia.org/wiki/Don%27t_repeat_yourself](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)
8. [https://uk.wikipedia.org/wiki/Об%27єктно-реляційнеідображення](https://uk.wikipedia.org/wiki/Об%27єктно-реляційнеідображення)
## Короткий зміст
*[Розділ містить опис того, про що йдеться в еій частині цього документу, що залишилася.
Також тут описана структура документу.]*
## Характеристика ділових процесів
*[В цьому розділі визначаються зовнішні фактори, що впливають на бізнес (бізнес-актори),
та внутрішні фактори (робітники), дається загальна характеристика діяльності бізнес-акторів
та робітників, яка здійснюється за допомогою бізнесу.*
*Дається опис бізнес-сценаріїв взаємодії бізнес-акторів, робітників і, можливо, інформаційної системи за допомогою наступної
специфікації:*
***ID:***
***НАЗВА:***
***УЧАСНИКИ:***
***ПЕРЕДУМОВИ:***
***РЕЗУЛЬТАТ:***
***ВИКЛЮЧНІ СИТУАЦІЇ:***
***ОСНОВНИЙ СЦЕНАРІЙ:***
*Кількість сценаріїв визначається у відповідності до специфіки завдання та необхідного
рівня деталізації (зазвичай, 5-6 сценаріїв).*
## Короткий огляд продукту
*[Визначається границя системи та категорії її користувачів. Дається загальна характеристика категорій користувачів
системи]*
*[Нижче йде опис FURPS:]*
## Функціональність
*[Functionality (функциональні вимоги)]*
## Практичність
*[Usability (вимоги до зручності роботи)]*
## Надійність
*[Reliability (вимоги до надійності)]*
## Продуктивність
*[Performance (вимоги до продуктивності)]*
## Експлуатаційна придатність
*[Supportability (вимоги до підтримки)]*

160
utils/table-generator/convert.py Executable file
View File

@ -0,0 +1,160 @@
#!/bin/python3
import sys
# magic values
NO = 0
AUTO = 1
YES = 2
def convert_generic_v1(data):
split_raw_lines = [i.strip().split("|") for i in data.split("\n") if i]
return generate_table(split_raw_lines)
def convert_usecase_v1(filename, data):
split_raw_lines_from_file = [i.split(" | ") for i in data.split("\n") if i]
if '/' in filename:
use_case_name = filename.rsplit("/", 1)[1].upper()
elif '\\' in filename:
use_case_name = filename.rsplit("\\", 1)[1].upper()
else:
use_case_name = filename.upper()
split_raw_lines = [["ID", use_case_name]] + split_raw_lines_from_file
merged_lines = []
for i in split_raw_lines:
if i[0] == "":
merged_lines[-1][1] += "<br>" + i[1]
else:
merged_lines.append(i)
return generate_table(merged_lines)
def generate_table(raw_table_data):
table_lines = raw_table_data
transposed_table = list(zip(*table_lines))
field_sizes = [max([max([len(k)+2 for k in j.split("\n")]) for j in i]) for i in transposed_table]
formatted_table_lines = []
l = "|"
for i, field in enumerate(table_lines[0]):
l += field.center(field_sizes[i])
l += "|"
formatted_table_lines.append(l)
formatted_table_lines.append(f"|{'|'.join([':'+'-'*(i-2)+':' for i in field_sizes])}|")
for line in table_lines[1:]:
l = "|"
for i, field in enumerate(line):
l += field.center(field_sizes[i])
l += "|"
formatted_table_lines.append(l)
return "\n".join(formatted_table_lines)
if __name__=="__main__":
# parse args
files = []
write_to_file = AUTO
write_to_stdout = AUTO
usecase_formatting = AUTO
verbose = AUTO
process_table_files = AUTO
# 1 pass (argument harvest)
for i in sys.argv[1:]:
if i.startswith("-"):
# записувати таблицю в файл
if i in ["-f", "--file"]:
write_to_file = YES
elif i in ["-nf", "--no-file"]:
write_to_file = NO
# виводити таблицю у стандартний вивід
elif i in ["-o", "--stdout"]:
write_to_stdout = YES
elif i in ["-no", "--no-stdout"]:
write_to_stdout = NO
# форматувати таблицю як use-case
elif i in ["-u", "--usecase", "--use-case"]:
usecase_formatting = YES
elif i in ["-nu", "--no-usecase", "--no-use-case"]:
usecase_formatting = NO
# виводити на екран додаткову інформацію
elif i in ["-v", "--verbose"]:
verbose = YES
elif i in ["-nv", "--no-verbose"]:
verbose = NO
elif i in ["-t", "--process-table"]:
process_table_files = YES
elif i in ["-nt", "--no-process-table"]:
process_table_files = NO
# 2 pass (filename harvest)
for i in sys.argv[1:]:
if not i.startswith("-"):
if i.endswith(".table") and process_table_files <= AUTO:
print(f"[Warning]: Excluding {i} to prevent processing of an already processed file (pass --process-table to override this behaviour)")
else:
files.append(i)
if len(files) < 1:
print("You need to pass at least one file as CLI argument", file=sys.stderr)
print("Exiting...", file=sys.stderr)
exit(1)
if len(files) == 1:
name = files[0]
data = open(name, encoding = "utf-8").read()
if usecase_formatting == YES:
if verbose == YES:
print(f"Force-formatting {name} as a use-case\n")
formatted_table_data = convert_usecase_v1(name.rsplit(".", 1)[0], data)
elif (name.endswith(".usecase") or name.endswith(".uc")) and usecase_formatting >= AUTO:
if verbose == YES:
print(f"Auto-detected use-case in file {name}\n")
formatted_table_data = convert_usecase_v1(name.rsplit(".", 1)[0], data)
else:
formatted_table_data = convert_generic_v1(data)
if write_to_stdout >= AUTO:
print(formatted_table_data)
if write_to_file > AUTO:
open(name + ".table", 'w', encoding = "utf-8").write(formatted_table_data+"\n")
exit(0)
for no, name in enumerate(files):
print(f"Converting {no+1}/{len(files)}")
data = open(name, encoding = "utf-8").read()
if usecase_formatting == YES:
if verbose >= AUTO:
print(f"Force-formatting {name} as a use-case")
formatted_table_data = convert_usecase_v1(name.rsplit(".", 1)[0], data)
elif (name.endswith(".usecase") or name.endswith(".uc")) and usecase_formatting >= AUTO:
if verbose >= AUTO:
print(f"Auto-detected use-case in file {name}")
formatted_table_data = convert_usecase_v1(name.rsplit(".", 1)[0], data)
else:
formatted_table_data = convert_generic_v1(data)
if write_to_stdout > AUTO:
print(formatted_table_data)
if write_to_file >= AUTO:
open(name + ".table", 'w', encoding = "utf-8").write(formatted_table_data+"\n")