Хэл Фултон - Программирование на языке Ruby

Тут можно читать онлайн Хэл Фултон - Программирование на языке Ruby - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство ДМК Пресс, год 2007. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование на языке Ruby
  • Автор:
  • Жанр:
  • Издательство:
    ДМК Пресс
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    5-94074-357-9
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Хэл Фултон - Программирование на языке Ruby краткое содержание

Программирование на языке Ruby - описание и краткое содержание, автор Хэл Фултон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов.

Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии.

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

Программирование на языке Ruby - читать онлайн бесплатно ознакомительный отрывок

Программирование на языке Ruby - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Хэл Фултон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

В следующем разделе мы расскажем, как определить, присутствует ли библиотека Oniguruma. А затем покажем, как можно ее собрать, если она не включена в дистрибутив.

3.13.1. Проверка наличия Oniguruma

Если вас интересует библиотека Oniguruma, то первым делом нужно выяснить, есть ли она в вашем экземпляре Ruby. В версиях 1.8.4 и младше ее, скорее всего, нет. Стандартно она включается в дистрибутив версии 1.9.

Вот как можно без труда выяснить, присутствует ли Oniguruma, проверив три условия. Во-первых, как я сказал, она стандартно поставляется в версии 1.9 и старше. В последних версиях обеих библиотек для работы с регулярными выражениями определена строковая константа Regexp::ENGINE. Если она содержит подстроку Oniguruma, то у вас новая библиотека. И последний шаг: если вы все еще не знаете, с какой библиотекой работаете, можно попытаться вычислить регулярное выражение, записанное в «новом» синтаксисе. Если при этом возникнет исключение SyntaxError, значит, у вас старая библиотека; в противном случае — новая.

def oniguruma?

return true if RUBY_VERSION >= "1.9.0"

if defined?(Regexp::ENGINE) # Константа ENGINE определена?

if Regexp::ENGINE.include?('Oniguruma')

return true # Какая-то версия Oniguruma.

else

return false # Старая библиотека,

end

end

eval("/(?

return true # Сработало: новая библиотека.

rescue SyntaxError # Не сработало: старая библиотека.

return false

end

puts oniguruma?

3.13.2. Сборка Oniguruma

Если в вашу версию библиотека Oniguruma не включена, можете самостоятельно откомпилировать Ruby и скомпоновать с недостающей библиотекой. Ниже приведены соответствующие инструкции. Эта процедура должна работать начиная с версии 1.6.8 (хотя она уже совсем старенькая).

Получить исходный текст Oniguruma можно из архива приложений Ruby RAA (http://raa.ruby-lang.org/) или найти в другом месте. Исходные тексты Ruby, естественно, находятся на официальном сайте.

Если вы работаете на платформе UNIX (в том числе в среде Cygwin в Windows или Mac OS/X), выполните следующие действия:

1. gunzip oniguruma.tar.gz

2. tar xvf oniguruma.tar

3. cd oniguruma

4. ./configure with-rubydir=

5. Одно из следующих:

make 16 # Для Ruby 1.6.8

make 18 # Для Ruby 1.8.0/1.8.1

6. cd ruby-source-dir

7. ./configure

8. make clean

9. make

10. make test # Простой тест интерпретатора Ruby.

11. cd ../oniguruma # Укажите путь к библиотеке.

12. make rtest

Или:

make rtest RUBYDIR=ruby-install-dir

Если же вы работаете на платформе Win32, скажем в Windows XP, то потребуются Visual C++ и исполняемый файл patch.exe. Выполните следующие действия:

1. Распакуйте архив любой имеющейся у вас программой.

2. copy win32\Makefile Makefile

3. Одно из следующих:

nmake 16 RUBYDIR=ruby-source-dir # для Ruby 1.6.8

nmake 18 RUBYDIR=ruby-source-dir # для Ruby 1.8.0/1.8.1

4. Следуйте инструкции в файле ruby-source-dir\win32\README.win32.

При возникновении ошибок обратитесь в список рассылки или конференцию.

3.13.3. Некоторые новые возможности Oniguruma

Oniguruma добавляет много новых возможностей к механизму работы с регулярными выражениями в Ruby. Из самых простых отметим дополнительную управляющую последовательность для указания класса символов. Если \dи \Dсоответствуют десятичным цифрам и не цифрам, то \hи \Hявляются аналогами для шестнадцатеричных цифр:

"abc" =~ /\h+/ #0

"DEF" =~ /\h+/ # 0

"abc" =~ /\Н+/ # nil

Добавилось возможностей у классов символов в квадратных скобках. Для организации вложенных классов можно применять оператор &&. Вот как можно записать регулярное выражение, соответствующее любой букве, кроме гласных а, е, i, о, u:

reg1 = /[a-z&&[^aeiou]]/ # Задает пересечение.

А следующее выражение соответствует всему алфавиту, кроме букв от m до p:

reg2 = /[a-z&&[^m-р]]/

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

Другие возможности Oniguruma, например оглядывание назад и именованные соответствия, будут рассмотрены ниже. Все связанное с интернационализацией отложим до главы 4.

3.13.4 Позитивное и негативное оглядывание назад

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

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

Предположим, что вам нужно проанализировать некоторую генетическую последовательность (молекула ДНК состоит из четырех основных белков, которые обозначаются А, С, G и T.) Допустим, что мы ищем все неперекрывающиеся цепочки нуклеотидов (длины 4), следующие за T. Нельзя просто попытаться найти T и взять следующие четыре символа, поскольку T может быть последним символом в предыдущем соответствии.

gene = 'GATTACAAACTGCCTGACATACGAA'

seqs = gene.scan(/T(\w{4})/)

# seqs равно: [["TACA"], ["GCCT"], ["ACGA"]]

Ho в этом коде мы пропустили цепочку GACA, которая следует за GCCT. Позитивное оглядывание назад позволит найти все нужные цепочки:

gene = 'GATTACAAACTGCCTGACATACGAA'

seqs = gene.scan(/(?<=T)(\w{4})/)

# seqs равно: [["TACA"], ["GCCT"], ["GACA"], ["ACGA"]]

Следующий пример - небольшая модификация примера, предложенного К. Косако (К. Kosako). Предположим, что есть текст в формате XML (или HTML), и мы хотим перевести в верхний регистр весь текст вне тегов (то есть cdata) Вот как можно сделать это с помощью оглядывания назад:

text =<<-EOF

This is a heading

This is a paragraph with some

italics and some boldface

in it...

EOF

pattern = /(?:^| # Начало или...

(?<=>) # текст после '>'

)

([^<]*) # И все символы, кроме '<' (запомнены).

/x

puts text.gsub(pattern) {|s| s.upcase }

# Вывод:

#

THIS IS A HEADING

#

THIS IS A PARAGRAPH WITH SOME

# ITALICS AND SOME BOLDFACE

# IN IT...

#

3.13.5. Еще о кванторах

Мы уже встречались с атомарными подвыражениями в «классической» библиотеке регулярных выражений в Ruby. Они выделяются с помощью нотации ( ?>...) и являются «собственническими» в том смысле, что жадные и не допускают возврата внутрь подвыражения.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Хэл Фултон читать все книги автора по порядку

Хэл Фултон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование на языке Ruby отзывы


Отзывы читателей о книге Программирование на языке Ruby, автор: Хэл Фултон. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x