HTTPS SSH

chgksuite

chgksuite — это набор скриптов, облегчающих редактирование пакетов ЧГК.

Функции

парсинг в формат микроразметки .4s:

  • из plain text (.txt)
  • из Word 2007+ (.docx)

  • экспорт из .4s:

  • в .docx для тестирования с возможностью автоматического забеления ответов, комментариев и источников;

  • в LaTeX (.tex.pdf) для красивой вёрстки и печати / чтения с планшета;
  • в ЖЖ (преамбула — в теле поста, вопросы — в комментариях, по одному в каждом) с возможностью автоматического скрытия ответов, комментариев и источников за спойлерами, а также автоматической загрузки изображений на хостинг imgur.
  • автоматическая расстановка «правильных» кавычек и тире, в LaTeX также малых прописных (small caps).
  • поддержка нулевых вопросов и вопросов с произвольными идентификаторами

Пока не сделано

  • экспорт в html
  • импорт из html/xml (из Базы)
  • streaming режим (поддержка pipe’ов)

Я не программист. Что мне делать?

Специально для вас есть инструкция с картинками. Читайте и пользуйтесь!

Как установить

Вы можете скачать последнюю версию репозитория. Если у вас есть Python, вы можете воспользоваться .py-скриптами из архива, удовлетворив все зависимости, перечисленные здесь, через pip install -r requirements. Если вы пользуетесь Mercurial, можете также клонировать репозиторий, скопировав ссылку из интерфейса Bitbucket.

Если у вас нет Python или просто лень возиться, качайте:

v0.3rc1

v0.2rc2

v0.2rc1

Этот архив самодостаточен: можно распаковать его в папку и пользоваться.

v0.1 (устарела, не рекомендуется к использованию)

Эти бинарные файлы не работают сами по себе. Дополнительно к ним нужно распаковать следующие файлы из репозитория:

  • template.docx
  • cheader.tex
  • fix-unnumbered-sections.sty

Как пользоваться

Это инструкция для версии 0.3 (в разработке), старые инструкции:

У chgksuite есть два режима работы — полностью консольный и консольный с элементами GUI. Вы можете просто запустить программу и использовать режим с элементами GUI, следуя инструкциям на экране. Если это для вас сложно — вам сюда.

Инструкция ниже относится к консольному режиму.

Парсинг в формат 4s

chgksuite parse [--defaultauthor] [--encoding ENCODING]
                [--parsedir]
                [filename]

Парсинг входного файла filename.docx или filename.txt в файл filename.4s. Тип файла (Word или plain text) определяется по расширению, поэтому убедитесь, что ваши файлы имеют корректные расширения.

При запуске с флагом --defaultauthor программа подставляет в поле «Автор» имя файла, если поле «Автор» отсутствует. Это удобно в случае, когда вам один человек прислал много вопросов, при этом не подписав каждый из них. После обработки вопросов вы сможете сделать массовую замену имени файла на имя и фамилию автора.

При запуске с флагом --parsedir аргументом вместо имени файла должно служить имя каталога. Все файлы подходящих форматов, находящихся в этом каталоге, будут распаршены и сохранены в этом же каталоге в формате 4s.

Если у вас имеется файл в экзотической кодировке, которую chgksuite не может понять самостоятельно, вы можете передать кодировку прямо при помощи флага --encoding.

Выгрузка из формата 4s

docx

chgksuite compose docx [-h] [--nospoilers] [--noanswers]
                       [--noparagraph] [--randomize]
                       [filename [filename ...]]

Создание из filename.4s файла filename.docx. Через пробел можно перечислить несколько входных файлов, все они будут обработаны по порядку.

Флаг --nospoilers отключает спойлеры.

Флаг --noanswers отключает ответы. Это полезно для случаев, когда вы распечатываете пакет для отыгрыша без ведущего.

Флаг --randomize перед созданием docx файла перемешивает вопросы в случайном порядке.

Флаг --noparagraph выключает перенос строки после начала вопроса (Вопрос 1.)

tex

chgksuite compose tex [-h] [--rawtex] [filename [filename ...]]

Создание из filename.4s файла filename.pdf. Через пробел можно перечислить несколько входных файлов, все они будут обработаны по порядку.

Если вы хотите вручную отредактировать tex файл после создания, используйте флаг --rawtex.

lj

chgksuite compose lj [-h] [--nospoilers] [--splittours] [--genimp]
                     [--login LOGIN] [--password PASSWORD]
                     [--community COMMUNITY]
                     [filename [filename ...]]

Загрузка файла filename.4s в ЖЖ. Через пробел можно перечислить несколько входных файлов, все они будут обработаны по порядку.

Флаги --login, --password и --community позволяют задать, соответственно, логин, пароль и сообщество для выкладки. Если сообщество не задано, выкладка будет произведена в личный ЖЖ, указанный в --login. Если логин и пароль не указаны, появится диалоговое окно, где можно будет их ввести.

Выкладка в личный ЖЖ происходит «под глаз», после неё вы сможете просмотреть посты на отсутствие ошибок и сделать их публичными. В сообществах такой опции нет, все посты в сообществе сразу же видны. Поэтому советую сначала выложить пакет в личный ЖЖ, проверить, поправить, и только после этого выкладывать в сообщество.

Учтите также, что из-за технических ограничений ЖЖ невозможно выложить более чем 20 комментариев к одному и тому же посту автоматически, поэтому если в вашем туре более 20 вопросов, какую-то их часть вам придётся выложить вручную.

Флаг --nospoilers отключает спойлеры.

Флаг --splittours включает разбиение пакета по турам: один тур — один пост. Этот флаг стоит применять, только когда пакет лежит в одном файле 4s. Если для каждого тура у вас свой файл, просто укажите их по порядку через пробел в строке запуска.

Также для всех режимов работает опция --debug для вывода отладочной информации. Если у вас что-то не работает или работает не так, как нужно, запустите chgksuite с этим ключом, а затем создайте тикет и пришлите туда файлы composer.log, parser.log (лежат в папке с chgksuite) и debug*.json (лежат в папке с docx или 4s файлами).

Примеры:

  • chgksuite compose docx paket.4s — создаст файл paket.docx с забелёнными ответами и комментариями.
  • chgksuite compose docx paket.4s --nospoilers — создаст файл paket.docx без забелённых ответов.
  • chgksuite compose tex paket.4s — создаст файл paket.pdf, если у вас установлен LaTeX (используется движок xelatex, который есть во всех современных дистрибуциях LaTeX). Обратите внимание, что PDF-файлы предназначены для того, чтобы их читал ведущий на игре с распечатки или экрана планшета. Спойлеры в них не предусмотрены.
  • chgksuite compose lj -l pecheny paket.4s — выложит пакет со спойлерами в ЖЖ pecheny. Запись будет видна только пользователю pecheny.
  • chgksuite compose lj paket.4s -l pecheny -c ru_chgk --nospoilers — выложит пакет без спойлеров в сообщество ru_chgk от лица пользователя pecheny. Запись будет видна всем.

Микроформат .4s

Микроформат 4s вдохновлён существующими микроформатами типа Markdown и reStructuredText, однако отличается от них в силу специфики структуры пакетов ЧГК. Пакет в формате 4s состоит из последовательности элементов, принадлежащих к одному из типов.

Существуют следующие типы элементов: тур, вопрос, заголовок, заголовок для ЖЖ, редактор, дата, номер вопроса, счётчик номеров и метакомментарий (всё остальное, например, список тестеров). Внутри вопроса существуют следующие подтипы: текст вопроса, ответ, зачёт, незачёт, комментарий, источник(и), автор(ы). Подробно эти типы элементов рассмотрены ниже.

В начале строки записывается идентификатор типа элемента, а затем через 1 или более пробелов — его значение. Строчка без идентификатора типа в начале считается продолжением предыдущего элемента (внутри элемента разрешены одинарные переносы строк). Разные вопросы отделяются двойными переносами строки.

Идентификаторы типа элемента записываются следующим образом:

  • ###: заголовок.
  • ###LJ: заголовок для поста в ЖЖ, если вы хотите, чтобы он не совпадал с заголовком в теле поста (например, если последний — слишком длинный).
  • #EDITOR: редактор.
  • #DATE: дата/место турнира (отображающаяся в начале документа)
  • #: любой метакомментарий, например, благодарности тестерам в преамбуле.
  • ?: текст вопроса.
  • : номер вопроса, если вы предпочитаете ручную нумерацию автоматической. Его следует использовать для ввода нулевых вопросов. Это поле строковое, так что возможны вопросы с номерами 000, 3.14, 14a, мой любимый etc.
  • №№ — установка счётчика номеров вопросов. При использовании номер изменится только у данного вопроса, а при использовании №№ — у данного вопроса и всех последующих с шагом в единицу, как обычно и нужно в пакете. В отличие от поля , у поля №№ допускаются только числовые значения.
  • !: ответ.
  • =: зачёт.
  • !=: незачёт.
  • /: комментарий.
  • ^: источник(и).
  • @: автор(ы).

Из них элементы «вопрос» (?) и «ответ» (!) являются обязательными, прочие — опциональны.

Внутри элементов также возможно следующее дополнительное форматирование:

  • удар`ение: ударе́ние
  • _курсив_: курсив
  • (img w=20px h=40px kotik.jpg): вставка локального изображения kotik.jpg шириной 20 пикселей и высотой 40 пикселей. Показатели ширины и высоты опциональны; более того, их чаще всего не нужно использовать, так как программа автоматически проставляет размер.
  • -: маркер элемента списка. Списки удобны для оформления нескольких источников, а также дуплетов и блицев.

Таким образом, начало пакета в формате 4s может выглядеть так:

### XIII Кубок Ленинского района, организованный А. А. Петровым, милостивым и милосердным, на деньги холдинга «Вектор»
###LJ Кубок Ленинского района
#EDITOR Редактор — С. Каценеленбоген
#DATE 30 февраля 2014

# Редактор благодарит тестеров и свою маму.

? [Раздаточный материал: (img test.jpg)]
Уважаемые знатоки! Что вы видите на этой розданном вам изображении?
№ 0
! гиппопотам.
= бегемот.
/ изображение напоминает бегемота в солнечный день, если его перевернуть.
^ 
- З. Фрейд. Психопатология обыденной жизни
- Г. Роршах. Психодиагностика
@ С. Каценеленбоген

? Блиц. 
По мнению Анатолия Коломейского, если бы персонажи его миниатюр могли говорить, они сказали бы следующее: 
- «Мне все говорят: „Дура, дура!..“. А я не обижаюсь. Потому что я — ОНА». Назовите ЕЁ.
- «Мне завидуют, мол, медовый месяц — круглый год. Но это нормально, потому что я — ОНА». Назовите ЕЁ.
- «Популярность утомляет. Открытие кинофестиваля в Каннах — я в кадре! Приём у президента — я в зале! Встреча делегации — без меня ни шагу. Потому что я — ОНА». Назовите ЕЁ двумя словами.
!
- пуля.
- пчела.
- ковровая дорожка.
= 3. красная дорожка.
^ «Вокруг смеха», 2010, N 3.
@ Ольга Неумывакина (Харьков)