Прожка для генерации карточек Категория - это множество карточек одного формата. Формат карточек категории example определяется следующими файлами: templates/example.txt templates/example_front.html templates/example_back.html styles/example.css Первый файл определяет потенциальное содержимое карточки, остальные три - её вид. В файле templates/example.txt вводятся конструкции вида {field}, отвечающие определённым элементам карточки, а в файлах templates/example_front.html и templates/example_back.html они могут использоваться. Файл карточки - это файл, повторяющий структуру шаблона категории templates/example.txt, однако на месте соответствующих полей содержащий конкретный текст карточки. В файле карточки допустимы особые конструкции вида {вариант 1|вариант 2|вариант 3}. При генерации карточек каждый экземпляр будет содержать один из указанных вариантов. Какой - выбирается случайным, но воспроизводимым образом (при перегенерации того же файла заказов результат будет тем же). Заказ - это набор карточек из одной категории с указанием их количеств. Карточки из заказа подлежат печати за один раз. Заказ задаётся текстовым файлом, содержащим в первой строчке - количество карточек, помещающихся на листе, и название категории, в каждой последующей строчке - путь к файлу карточки и требуемое количество экземпляров. Разделяется пробелами. Заметим, что количество карточек, помещающихся на листе, избыточно, т.к. определяется размерами карточки и листа, однако для упрощения реализации его требуется задавать явно. Для работы программы требуется python 2.7.*. Использование программы: python gen.py order.txt где order.txt - файл заказа. Если файлы заказа и карточек не содержали ошибок, будут созданы два файла results/order_front.html и results/order_back.html, содержащие лицевые и обратные стороны экземпляров карточек из заказа, сгруппированные по листам. Их и нужно печатать. Примечания. 1) Если были ошибки, в results останутся старые файлы. Смотрите за сообщениями об ошибках. 2) Шаблон и текст карточки должны соответствовать друг другу с точностью до пробелов. Например, если шаблон имеет вид --- 8< ------------ {field1} --- {field2} ------------ >8 ---, а файл карточки - вид --- 8< ------------ Конкретное содержимое первого поля ---<лишний пробел> Конкретное содержимое второго поля ------------ >8 ---, то генерация не пройдёт. 3) Если требуется портретная ориентация, надо поменять местами высоту и ширину для классов front и back в styles/example.css. Если нужны односторонние карточки, файл templates/example_back.html можно оставить пустым. 4) Если элемент карточки вылазит за отведённое ему место, при просмотре результата в браузере он будет подсвечен красным. При печати не будет. 5) gen.bat генерирует карточки по всем файлам вида *order*.txt в корневом каталоге. 6) Файлы шаблонов и стилей новой категории должен создавать человек, разбирающийся в вёрстке вёб-страниц. Прилагающийся в качестве примера файл стилей довольно грязный. Файлы карточек и заказов может писать любой. 7) Инструкции по форматированию (например, центрировать ли такой-то текст) могут находиться в одном из трёх мест: в тексте карточек, в шаблонах или в стилях. Если инструкция является общей для всех карточек в данной категории, подойдёт второй или третий вариант (какой именно - на усмотрение верстальщика); первый вариант рекомендуется только если инструкция специфична для данной конкретной карточки. В идеале должен выдерживаться принцип разделения формы и содержания. Это позволит менять дизайн всех карточек в категории разом, редактируя только шаблоны и стили. 8) Перед массовым написанием текстов карточек следует убедиться, что шаблоны свёрстаны верно. Для этого нужно попробовать напечатать пару листов пробных карточек в каждой категории. Чтобы карточки поместились на листы, может потребоваться поиграться с размерами полей в настройках печати. При финальной печати рекомендуется пользоваться тем же браузером и тем же набором настроек, что и при пробной. 9) Для предварительного просмотра карточек удобно использовать ключ --once: python gen.py order.txt --once Каждая карточка из заказа будет сгенерирована в одном экземпляре, вне зависимости от указанного количества. 10) Редактирование автоматически генерируемых файлов (в данном случае - тех, что лежат в каталоге results) приводит к страданиям. 11) Рекомендуемая структура каталогов: my_game/ gen.py metalang.py unformat.py checkOverflow.js replacements.txt order1.txt order2.txt ... styles/ category1.css category2.css ... templates/ category1.txt category1_front.html category1_back.html category2.txt category2_front.html category2_back.html ... images/ ... some_cards/ card1.txt card2.txt ... some_other_cards/ whatever_card.txt ... results/ order1_front.html order1_back.html ... ... (разумеется, названия order1, category1, card1 и т.п. условные - содержательные названия не возбраняются!) 12) Если вы используете мой инструмент и вам он нравится, напишите об этом маленькими буквами где-нибудь в правилах.