easyhtml
В этом уроке мы познакомимся с одним интересным классом функций. Это text функции. Как видно из названия, эти функции ориентированы на работу с текстом. В отличии от обычных функций основу их составляет текст в который может быть встроен код.
Пример 1
Выведем палитру цветов, которые наиболее часто используются при создании html страниц. Результат работы сохраним в виде html файла.Для начала определим количество выводимых цветов в одной строке с помощью команды define.
define {
lcount = 12
}
Такие константные величины называются макросами и при обращении к ним впереди имени должен стоять знак '$'. Разбор кода начнем с конца
func color< main >
{
str out
out @ colorhtm()
out.write( "color.htm" )
shell( "color.htm" )
}
out @ colorhtm()
Здесь мы осуществляем вызов text функции colorhtm с записью результата в строку out. Следующими командами мы записываем полученную строку в файл и открываем его в браузере.
text colorhtm
...
\{
int vrgb i j k
uint cur
subfunc outitem
{
str rgb
rgb.out4( "%06X", vrgb )
@ item( rgb )
if ++cur == $lcount
{
@"</TR><TR>"
cur = 0
}
}
for i = 0xFF, i >= 0, i -= 0x33
{
for j = 0xFF, j >= 0, j -= 0x33
{
for k = 0xFF, k >= 0, k -= 0x33
{
vrgb = ( i << 16 ) + ( j << 8 ) + k
outitem()
}
}
}
for vrgb = 0xFFFFFF, vrgb >= 0, vrgb -= 0x111111 : outitem()
for vrgb = 0xFF0000, vrgb > 0, vrgb -= 0x110000 : outitem()
for vrgb = 0x00FF00, vrgb > 0, vrgb -= 0x001100 : outitem()
for vrgb = 0x0000FF, vrgb > 0, vrgb -= 0x000011 : outitem()
}
...
\!
Я заменил многоточием вывод заголовка и окончания html файла. Для вставки кода в текст используется команда \{...}. Ниже мы определяем подфункцию outitem.
rgb.out4( "%06X", vrgb )
@ item( rgb )
Здесь на основе локальной переменной vrgb создается строка в 16-ом представлении и вызывается другая text функция item для вывода ячейки с указанным цветом. Унарная операция @ осуществляет вывод в текущую строку вывода или на консоль, если такая строка отсутствует. Далее проверяем количество выведенных ячеек в строке и если необходимо начинаем новую строку в в нашей таблице.
Для перебора возможных значений используем три вложенных цикла. Каждый цикл отвечает за изменение красной, зеленой или синей составляющей. Компонуем эти составляющие в переменной vrgb и вызываем описанную выше подфункцию.
Четыре следующих цикла выводят дополнительные палитры для серого, красного, зеленого и синего цветов.
Команда \! указывает на окончание text функции. По умолчанию, text функция может идти до конца файла.
Рассмотрим text функцию вывода ячейки.
text item( str rgb )
<TD ALIGN=CENTER><TABLE BGCOLOR=#\(rgb) WIDTH=60><TR><TD> </TD></TR></TABLE>
<FONT FACE="Courier">\(rgb)</FONT>
</TD>
\!
Как видите это текст на языке HTML с выводом параметра rgb содержащего цвет. Мы вставляем его в двух местах: как фон таблицы и для вывода его значения под ячейкой.