EnglishРусский  

   hello

   square

   easymath

   runini

   easyhtml

   calendar

   samefiles

   Продолжение следует

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

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 содержащего цвет. Мы вставляем его в двух местах: как фон таблицы и для вывода его значения под ячейкой.

Упражнение 2

Создайте HTML файл с таблицей умножения.

Исходники

Редактировать