Форматы файлов
Assyst читает текстовый и бинарный форматы Windows-программы Assist и пишет собственный формат .qsze без потерь.
QST / TXT
Простой текст. Строка, начинающаяся с ?, начинает вопрос, + отмечает правильный ответ, - неправильный. Многострочный текст допустим. Один + даёт вопрос с одним ответом, несколько — с несколькими. При импорте определяются UTF-8 (с BOM и без), UTF-16 и Windows-1251.
Вопросы с пропусками хранят недостающие слова прямо в тексте как ***[ответ]***, поэтому даже экспорт в .qst остаётся читаемым.
?Question text (may span several lines) +Correct answer -Incorrect answer -Incorrect answer +Another correct answer ?Capital of Kazakhstan is ***[Astana]*** +Astana
QSZ
Старый бинарный формат: поток zlib, в котором каждый вопрос хранится как длина int32 и текст, число ответов и для каждого ответа текст с флагом (−1 верный, 0 неверный). Представимы только вопросы с выбором.
zlib stream, repeated per question:
int32 question length L
bytes question text (L)
int32 answers count N
× N:
int32 answer length
bytes answer text
int32 flag (-1 correct, 0 incorrect)QSZE
Собственный формат: zlib, числа int32 little-endian, строки UTF-8. Хранит название теста, автора, версию, даты, группы вопросов, все шесть типов вопросов, подсказки и встроенные изображения для вопросов и ответов. Используйте его, когда ничего нельзя потерять.
zlib stream, int32 little-endian, str = int32 len + UTF-8
Header
int32 format_version (= 1)
str test_name
str author
int32 test_version
int32 created_at (unix seconds)
int32 updated_at (unix seconds, 0 if never)
Groups
int32 groups_count
str[] group_name
Questions
int32 questions_count
× questions_count:
int32 group_id (0 = no group, else 1-based)
int32 type (0 test, 1 order, 2 fill_text,
3 fill_number, 4 misses_type, 5 misses_select)
str text
str prompt
int32 images_count, blob[] image
int32 answers_count
× answers_count:
int32 is_correct (only when type == 0)
str text
int32 images_count, blob[] image