Site Creator

by exos group.

1. Общие положения

Site Creator - Content Managment System (CMS) с прекомпиляцией.

1.1. Введение

Site Creator предназначен для автоматизации разработки сайтов. Может применяться как для разработки полностью статических сайтов, так и для динамических с прекомпиляцией.

Оригинальная технология генерирования веб-страниц и простота скриптового языка упрощают разработку и сопровождение сайтов среднего класса до всех мыслимых пределов.

Site Creator − это инструмент для профессионального веб-программиста при разработке сайта. Последующую поддержку сайта может осуществлять работник с минимальными навыками владения html и текстового редактора.

1.2. Как это работает

Основой функционирования Site Creator являются макросы. Макрос продставляет из себя правило трансляции с несколькоми параметрами.

Макросы составляются в библиотеки макросов, которые физически предствалены в виде текстовых файлов.

Имеется ряд предопределённых макросов для служебных нужд.

Макросы обявляются в файле "macro" (по умолчанию) или ином, определённом пользователем.

При запуске трансляции Site Creator обходит файлы сайта в соответствии с их списком и транслирует каждую страницу.

2. Синтаксис

2.1. Алфавит

Алфавит названий макросов включает в себя большие и маленькие буквы латинского алфавита, арабские цифры и знак подчёркивания. Имя макроса не может начинаться с цифры, оно обязательно должно начинаться с буквы или знака подчеркивания.

2.2. Определение макросов

Большие и маленькие символы (лат) в именах макросов эквивалентны.
При использовании макросов его имя должно следовать непосредственно за "@@".
При использовании макросов имя аргумента должно следовать непосредственно за "%%".
Если аргументов передано меньше, чем использовано в определении, то неиспользованные не изменяются.

2.3. В файле макросов

2.3.1. Вложение файла

include имя_файла

2.3.2. Обявление макроса

    macro имя_макроса
    {{
    тело макроса
    %%1
    тело макроса
    %%2
    тело макроса
    }}
  

2.3.3. Комментарий

строка_комментария

Строка комментария не должна входить в тело объявления макроса

2.4. В обрабатываемом файле

2.4.1. Использование макроса

@@имя_макроса

@@имя_макроса{{значение1}{значение2}{значение3}}

2.4.2. Предопределенные макросы

@@year
текущий год
@@month
текущий месяц
@@day
текущий день
@@root
путь до корневой директории проекта от текущей страницы
@@self
имя текущей страницы (в том виде, в котором она в списке файлов)
@@generator
имя и версия программы-генератора
@@data
работа с данными (см. раздел 2.4.3)
@@table
работа с данными (см. раздел 2.4.5)
@@eval
вычисление математического выражения (см. раздел 2.4.4)
@@if{{Параметр1}{Параметр2}{Значение}}
вставка по условию (если Параметр1==Параметр2 то вставляется Значение1, иначе Значение2) допускается применение в виде @@if{{Параметр1}{Параметр2}{Значение1}} макросы @@if обрабатываются в последнюю очередь

2.4.3. Работа с данными

Файл с данными представляет собой текстовый файл, разделителем элементов в котором является символы TAB, CR+LF, CR (в простейшем случае отдельные строки). Пустые элементы не считаются значимыми. В образцах строки можно использовать параметры %%cell − следующее значение данных и %%line − значение образца строки предыдущего уровня. Первыми заполняются значения нижнего уровня, заполнение производится в порядке появления.

При обработке списка так же можно использовать параметры %%count − счетчик строк верхнего уровня и %%eof − признак конца потока данных.

Примеры использования:

2.4.3.1. Простой список

<ul>
@@data{{data.txt}{<li>%%cell}}
</ul>

2.4.3.2. Простая таблица

<table>
@@data{{table.txt}{<td>%%cell</td><td>%%cell</td>}{<tr>%%line</tr>}}
</table>

2.4.3.3. Таблица c выделением строк по условию

<table>
@@data{{table.txt}{<td>%%cell</td><td>%%cell}{<tr @@if{{%%cell}{0}{bgcolor=red}}>%%line</tr>}}
</table>

2.4.3.3. Таблица c использованием счетчика и условия конца потока данных

     <table>
     @@data{{table.txt}{
       <td>%%cell</td>
       <td>%%cell</td>
       <td>%%cell</td>
       }{
       @@if{{%%count}{1}{
         <th>%%line</th>        // заголовок таблицы (1я строка)
         }{
         @@if{{eof}{1}{
           <tf>%%line</tf>     // футер таблицы (последняя строка)
           }{
           <tr>%%line</tr>     // тело таблицы
           }}
         }}
       }}
     </table>
     

2.4.4. Вычисление математических выражений

Начиная с версии 2.7.0 в SC имеется вычислитель математических выражений. Вычислитель используется вызовом макроса @@eval{{}}. Пример @@eval{{2*(4+3)}}, макрос вернет значение 14. В выражениях можно подставлять значения %%count или данные из внешних файлов.

Список основных поддерживаемых операций

Операция                      Формула(ы)      Пример использования
-----------------------------------------------------------------------
Больше                        >               a > b
Больше или равно              >=              a >= b
Меньше                        <               a < b
Меньше или равно              <=              a <= b
Не равно                      <> != #         a <> b
Равно                         =               a = b
-----------------------------------------------------------------------
Сложение                      +               a + b
Вычитание                     -               a - b
Логическое ИЛИ                or || |         a or b
Логическое ТОЛЬКО ИЛИ         xor \           a xor b
Умножение                     mul *           a mul b
Деление                       div /           a div b
Остаток от деления            mod %           a mod b
Логическое И                  and && &        a and b
Поразрядный сдвиг вправо      shr >>          a shr b
Поразрядный сдвиг влево       shl <<          a shl b
-----------------------------------------------------------------------
Возведение в степень          ^               a ^ b
Факториал                     !               a!
-----------------------------------------------------------------------
Модуль                        ABS             abs(a)
Квадрат                       SQR             sqr(a)
Корень квадратный  a>0        SQRT            sqrt(a)
Числа в десятичном (DEC) виде набираются обычным образом, в шестнадцатеричном (HEX) имеют следующий вид: $<ЧИСЛО> или 0<ЧИСЛО>h, в двоичном (BIN): <ЧИСЛО>b, в восьмеричном (OCT): <ЧИСЛО>o, в экспоненциальном виде (EXP): <ЧИСЛО>e<СТЕПЕНЬ>, где степень может быть как положительная, так и отрицательная.

2.4.5. Работа с таблицами (альтернативная работа с данными)

@@table{{FileName}{LineLimit}{Rec1}{Rec2}...}

Адресация колонок таблицы ##1, ##2, ##3, ...
FileName - имя файла с данными
LineLimit - число строк, требующихся для вывода (если не задано, то выводятся все)

Пример:
@@table{{data.txt}{}{<tr><td>##1</td><td>##2</td></tr>}}

Допускается вложенный вызов @@table при обращении к разным файлам данных.

3. Работа программы

3.1. Консольная версия

При запуске программы без параметров предполагаются следующие умолчания:
Файл с именами обрабатываемых файлов: files
Корневой файл с определениями макросов: macros
Директория готового проекта: ready

Формат запуска:

Без параметров эквивалентно:

Ключ -d запускает оптимизацию размера html файла (удаление лишних пробелов и переводов строк), что уменьшает размер выходного html файла и делает его нечитаемым.

3.2. Интерфейсная версия

Интерфейсная версия отличается от консольной возможностью генерировать страницы сайта "на лету", то есть по мере написания макросов и содержимого страниц.

Это значительно упрощает первоначалные стадии разработки сайта (процесс написания и отладки макросов, а так же при последующей выверке и правке содержимого сайта).

При запуске программы появляется значок в трее. При вызове контекстного меню на нём можно открыть окно проектов, либо окно сообщений. Информация, выводимая в окне сообщений эквивалентна информации, выводимой в консольной версии.

В окне проектов содержатся все рабочие проекты. Свойства проекта вызываются посредством двойного нажатия левой клавиши мыши на проекте. У каждого проекта определяется список обрабатываемых файлов, библиотеки макросов и каталог вывода соответственно. Так же возможна установка флажка оптимимзации HTML и флажка автоматической сборки сайта по мере измененния исходных страниц или библиотек макросов.

4. Список сообщений программы

File not found
Файл не найден
Unable write to
Не могу записать
Recursive including
Рекурсивное обращение к макросу
Invalid include syntax
Неправильный синтаксис включения
Invalid macros definition
Неправильное объявление макроса
Macros redeclared
Макрос уже объявлен
Too many macroses
Слишком много макросов
Undeclared identifier
Необъявленный идентификатор
Invalid macros name in
Неверное имя макроса
Invalid argument in
Неверный аргумент
Invalid argument for @@data in
Неверный аргумент в данных
Keyword %%cell not found in
Не найдено вхождение указания столбца
Invalid expression in @@eval
Ошибка при вычислении математического выражения макросом @@eval
ok
Обработка завершена

5. Контактная информация

WWW: http://exos.org.ru
e-mail: exos@inbox.ru