Litvek - онлайн библиотека >> Александр Неткачев >> Самиздат, сетевая литература и др. >> Быстрый курс Ruby >> страница 3
finaly {

//…

}

Получить Exception объект в секции rescure

$!

Вызывать исключение

raise

Повторно вызвать begin.. end блок

retry

Прерывание выполнения

catch (:exit) do

 1..10.each do |i|

  1..10.each do |j|

   throw: exit if a[i, j] = 0

  end

 end

end

Модули

Определить модуль

module MyFunctions

 def…

end

Добавить описания из модуля в класс

class MyClass

 include MyFunctions

end

Прочее

Взаимодействие с shell

`date`

Альясы операторов

class Fixnum

 alias oldPlus +

 def +(value)

  oldPlus(value)

  puts 'Plus called'

 end

end

Параллельное присвоение

a, b = b, a

Небольшой пример программы на Ruby

Написав этот мини курс я попробовал составить к нему оглавление. Примерно оценив количество заголовков я пришел к выводу, что вручную это будет очень непродуктивно — проще написать небольшую программу на Ruby, которая составляет оглавление из заголовков и заменяет строку CREATE_TOC на созданное оглавление

File: createToc.rb

#!/usr/bin/ruby — w


# createToc.rb

# Программа составляет оглавление, выводит его вместо CREATE_TOC

# и добавляет якоря вида <a name="sN"></a> к заголовкам


# задаем строковую переменную — идентификатор оглавления

tocToken = 'CREATE_TOC'


# определяем массив, в котором будет строиться оглавление

toc = []


# результат

output = ''


# для всех строк входного потока

ARGF.each do |line|


 # если строка содержит заголовок 3го, 4го или 5го уровня

 if line =~ %r{<h([3–5])>([^<]+)</h[3–5]>}


  # определить номер якоря

  anchorId = toc.length.to_s


  # и добавить в массив toc пункт оглавления

  toc << (' ' * ($1.to_i - 3) * 2) + "<a href=\"#a#{anchorId}\">#{$2}</a><br>\n"


  # к строке output добавить заголовок с добавленым якорем

  output << line.sub('>', "><a name=\"a#{anchorId}\"></a>")

 else

  output << line

 end

end


# выводим результат, в котором tocToken заменяется на оглавление

puts output.sub(tocToken, '<div class="TOC">' + toc.join + '</div>')

К сожалению, эта программа не учитывает, что оглавление и якоря могут уже быть добавлены. Если добавите такую возможность к программе, присылайте патч.

Использование программы:

$ createToc.rb < article.html > new_article.html

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

В продолжении планируется:

● Ruby и XML (готово)

● многопоточность Ruby

● сравнение скорости программ на Ruby и PHP

● Ruby и MySQL

Статья взята с сайта OpenNet.

10.05.2004

Litvek: лучшие книги месяца
Топ книга - Атаман Ермак со товарищи [Борис Александрович Алмазов] - читаем полностью в LitvekТоп книга - Физика невозможного [Мичио Каку] - читаем полностью в LitvekТоп книга - Пробуждение Левиафана [Джеймс С. А. Кори] - читаем полностью в Litvek