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

3.13.1. Проверка наличия 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("/(?<!a)b/")           # Новый синтаксис.
  return true                # Сработало: новая библиотека.
 rescue SyntaxError          # Не сработало: старая библиотека.
  return false
 end
puts oniguruma?

Оглавление книги


Генерация: 1.172. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз