USSRHTML - это компилятор для языка гипертекстовой разметки (ЯГТР), написанный на python.
Компилятор принимает код на языке ЯГТР и выдает файл с кодом на HTML.
ЯГТР - это фантазия на тему того, что было бы, если бы интернет придумали в СССР.
Особенность данного языка - все вводимые команды должны быть доступны на стандартной ЙЦУКЕН клавиатуре, т.е.
для ввода команд не нужно переключаться на английскую раскладку. Кроме того, вместо двойных тегов типа <body>...</body>
используются команды вида \тело(...)
, что упрощает набор текста.
Некоторые команды имеют "короткую" и "длинную" запись. Например, команды \абзац
и \а
фактически являются одной и той же командой и переводятся в тег <p>
.
Исходный код файла должен иметь следующую структуру:
\голова(...)
\тело(...)
Тег \голова()
является необязательным, \тело()
- обязательный.
Содержимое документа пишется внутри скобок "\тело(" и ")".
Для ввода служебных символов используется символ \
:
- % - введите
\%
- \ - введите
\\
- ( - введите
\(
(это связано с тем, что символ(
используется как левая граница команд) - ) - введите
\)
(это связано с тем, что символ)
используется как правая граница команд)
\стиль
- Стиль.
Команда \стиль
применяется для определения стилей элементов веб-страницы. \стиль
необходимо использовать внутри контейнера \голова
. Можно задавать более чем одну команду \стиль
.
\мета
- Мета-информация.
\мета
определяет метатеги, которые используются для хранения информации предназначенной для браузеров и поисковых систем. Например, механизмы поисковых систем обращаются к метатегам для получения описания сайта, ключевых слов и других данных. Разрешается использовать более чем один метатег, все они размещаются в контейнере \голова
. Как правило, атрибуты любого метатега сводятся к парам «имя=значение», которые определяются ключевыми словами content, name или http-equiv.
\титул
- Заголовок документа.
Определяет заголовок документа. Элемент \титул
не является частью документа и не показывается напрямую на веб-странице. Допускается использовать только один тег \титул
на документ и размещать его в контейнере \голова
.
\скрипт
- Скрипт.
Тег \скрипт
предназначен для описания скриптов, может содержать ссылку на программу или ее текст на определенном языке. Скрипты могут располагаться во внешнем файле и связываться с любым HTML-документом.
%
- Комментарий.
Комментарий начинается с символа %
и действует до конца строки
\абзац
- Абзац.
Абзац обозначается с помощью команды \пар(...какой-то текст...)
Короткая запись этой команды записывается так:
\а
\ж
- Полужирный текст.
Полужирный текст выделяется с помощью команды \ж(...какой-то текст...)
\к
- Курсив.
Текст выделяется курсивом с помощью команды \к(...какой-то текст...)
\ссылка
- Ссылка.
Команда предназначена для создания ссылок. \ссылка::href="адрес_страницы::(текст ссылки)
.
Короткая версия: \с
.
\пдч
- Подчеркнутый текст.
Добавляет подчеркивание к тексту. \пдч(...какой-то текст...)
\зч
- Зачеркнутый текст.
Отображает текст как перечеркнутый. \зч(...какой-то текст...)
\под
- Подстрочный текст.
Отображает шрифт в виде нижнего индекса. Текст при этом располагается ниже базовой линии остальных символов строки и уменьшенного размера. \под(...какой-то текст...)
\над
- Надстрочный текст.
Отображает шрифт в виде верхнего индекса. Шрифт при этом отображается выше базовой линии текста и уменьшенного размера. \над(...какой-то текст...)
\зг1
... \зг6
- Заголовки.
HTML предлагает шесть заголовков разного уровня, которые показывают относительную важность секции, расположенной после заголовка. Так, тег <h1>
представляет собой наиболее важный заголовок первого уровня, а тег <h6>
служит для обозначения заголовка шестого уровня и является наименее значительным. В ЯГТР для реализации заголовков также есть шесть комманд, которые соответствуют заголовкам HTML: \зг1
, \зг2
, \зг3
, \зг4
, \зг5
, \зг6
\рис
- Изображение.
Элемент рис
предназначен для отображения на веб-странице изображений в графическом формате GIF, JPEG, SVG или PNG. Адрес файла с картинкой задаётся через атрибут src.
\блок
- Блок-контейнер.
Элемент \блок
является универсальным блочным элементом и предназначен для группирования элементов документа с целью изменения вида содержимого через стили.
\мсп
- Маркированный список.
Тег \мсп
устанавливает маркированный список. Каждый элемент списка должен начинаться с тега \эл
.
\нсп
- Нумерованный список.
Тег \мсп
устанавливает нумерованный список. Каждый элемент списка должен начинаться с тега \эл
.
\эл
- Элемент списка.
Тег \эл
определяет отдельный элемент списка.
\связка
- Связь с внешними элементами.
Устанавливает связь с внешним документом вроде файла со стилями или со шрифтами.
\адрес
- Адрес.
Тег \адрес
предназначен для хранения информации об авторе и может включать в себя любые элементы ЯГТР вроде ссылок, текста, выделений и т.д.
\таблица
- Таблица.
Элемент \таблица
служит контейнером для элементов, определяющих содержимое таблицы. Любая таблица состоит из строк и ячеек, которые задаются с помощью тегов \строка
или \стр
и \стобец
или \стлб
. Короткая запись: \табл
.
\строка
- Строка.
Тег \строка
служит контейнером для создания строки таблицы. Короткая запись: \стр
.
\столбец
- Столбец.
Предназначен для создания одной ячейки таблицы. Короткая запись: \стлб
.
\нс
- Новая строка.
Тег \нс
устанавливает перевод строки в том месте, где этот тег находится.
\пре
- Преформатированный текст.
Элемент \пре
определяет блок предварительно форматированного текста. Такой текст отображается обычно моноширинным шрифтом и со всеми пробелами между словами. По умолчанию, любое количество пробелов идущих в коде подряд, на веб-странице показывается как один.
\код
- Код.
Тег \код
предназначен для отображения одной или нескольких строк текста, который представляет собой программный код. Сюда относятся имена переменных, ключевые слова, тексты функции и т.д. Браузеры обычно отображают содержимое контейнера \код
как моноширинный текст уменьшенного размера.
\цитата
- Цитата.
Тег \цитата
помечает текст как цитату или сноску на другой материал.
\заголовок
- Заголовок.
Тег \заголовок
задает «шапку» сайта или раздела, в которой обычно располагается заголовок.
\нав
- Навигация.
Тег \нав
задает навигацию по сайту.
\секция
- Секция.
Задаёт раздел документа, может применяться для блока новостей, контактной информации, глав текста, вкладок в диалоговом окне и др. Раздел обычно содержит заголовок.
\ремарка
- Ремарка.
Определяет блок сбоку от контента для размещения рубрик, ссылок на архив, меток и другой информации. Такой блок, как правило, называется «сайдбар» или «боковая панель».
\подвал
- Подвал.
Тег \подвал
задаёт «подвал» сайта или раздела, в нём может располагаться имя автора, дата документа, контактная и правовая информация.
\статья
- Статья.
Тег \статья
задает содержание сайта вроде новости, статьи, записи блога, форума или др.
\аббр
- Аббревиатура.
Тег \аббр
указывает, что последовательность символов является аббревиатурой. С помощью атрибута title дается расшифровка сокращения, что позволяет понимать аббревиатуру тем людям, которые с ней не знакомы.
\форма
- Форма.
Тег \форма
устанавливает форму на веб-странице. Форма предназначена для обмена данными между пользователем и сервером.
\ввод
- Ввод.
Тег \ввод
является одним из разносторонних элементов формы и позволяет создавать разные элементы интерфейса и обеспечить взаимодействие с пользователем. Главным образом \ввод
предназначен для создания текстовых полей, различных кнопок, переключателей и флажков.
\холст
- Холст.
Создает область, в которой при помощи JavaScript можно рисовать разные объекты, выводить изображения, трансформировать их и менять свойства.
\аудио
- Аудио.
Добавляет, воспроизводит и управляет настройками аудиозаписи на веб-странице.
\видео
- Видео.
Добавляет, воспроизводит и управляет настройками видеоролика на веб-странице.
Атрибуты команд можно ввести с помощью конструкции вида:
\команда::атрибуты_и_их_значения::(какой-то текст)
Атрибуты должны быть описаны в синтаксисе html.
Пример:
\пар::style="color: green; font-size: 2em"::(Этот текст будет зеленым)
Минимальный текст, который может быть скомпилирован, выглядит примерно так:
\тело(Привет, Мир!)
Выходной файл будет иметь вид:
<html>
<body>
Привет, Мир!
</body>
</html>
Для запуска из коммандной строки выполните:
$python <путь-к-файлу>/HTMLUSSR.py <путь-к-файлу-с-текстом-на-ЯГТР>/<имя-файла>.txt
В папке расположен файл YaGTR.pyw
, который является редактором кода с подсветкой синтаксиса и возможностью компиляции/запуска, написанный на python с использованием PyQt5. Для использования этого редактора необходимо, чтобы был установлен пакет PyQt5.
Файл YaGTREditor.exe
является ещё одним редактором кода с подсветкой синтаксиса для ЯГТР. Написан с использованием FastColoredTextBox.