Направете gem за Ruby, който да съхранява и управлява въпроси за тестове (със затворени отговори). На базата на тези въпроси, библиотеката трябва да може да генерира тестове в удобен за разпечатване формат.
Долуописаните функционалности трябва да са достъпни както чрез изпълнима команда към gem-a, така и чрез програмен интерфейс (директно използване на класовете на библиотеката ви).
- Съхранение на въпроси в различни категории. Как ще става сърханението решавате вие - например,
две възможни опции са файлове или база от данни.
- Ако ще използвате файлове - съдържанието им трябва да е във формат, лесен за "ръчна" модификация от човек (например markdown, html, yaml или нещо подобно).
- Ако ще използвате база от данни, за улеснение, можете да ползвате ORM като ActiveRecord
- Промяна и изтриване на въпроси.
- Търсене на въпроси по категория и по описание.
- Всеки въпрос може да има произволен брой възможни отговори.
- Генериране на тестове със следните параметри:
- Общ брой въпроси
- Брой въпроси от всяка категория
- Брой варианти
- Генериране на различни варианти на един и същ тест. За всеки вариант въпросите, както и отговорите им се разбъркват.
- Тестовете се генерират като PDF файлове - по един за всеки вариант.
Може да използвате библиотека за работа с PDF-и.
- За да е полезен теста - на първата страница трябва да има името на дисциплината, дата, на която ще се проведе теста, както и полета за факултетен номер и имена. Направете възможност за лесно разширение на тези заглавия. Тоест, трябва да може без да се променя кода на библиотеката да се задава какво да има в заглавието. Например, за някои тестове може да няма поле за факултетен номер, или пък да има подзаглавие. Направете го възможно най-разширяемо.
- Към всеки вариант трябва да има и "ключ" - отделен PDF, в който са написани верните отговори.
- Въпросите (и отговорите) трябва да поддържат форматиране - като минимум bold, italic, блокове за код (с monospaced шрифт и индентация). Всеки въпрос трябва да може да съдържа и картинка.
- Имплементацията на форматът, чрез който се задават форматиранията на въпросите и отговорите от потребителя, трябва да е изцяло ваша. Тоест, можете да задавате въпросите като markdown, но без да използвате библиотеки за работа с markdown.