Assysten

Форматы файлов

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