Я пишу конвертер архива блога в ruby. Чтобы преобразовать содержимое записей WordPress в формат HTML, я должен реализовать функцию WordPress wpautop ().
Оригинальная функция wpautop (): http://pastebin.com/BzV8bXxQ
Мой рубиновый агрегат: https://github.com/chloerei/blog_converter/blob/master/lib/blog_converter/adaptor/wordpress.rb, см. Wordpress#wpautop_filter
Отлично работает в ruby1.9.2, bu в 1.8.7, выдает ошибку
blog_converter/lib/blog_converter/adaptor/wordpress.rb:147: undefined (?...) sequence: /(?<!<br \/>)\s*\n/
Источники
// In php
$pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
# In ruby
string.gsub!(%r|(?<!<br />)\s*\n|, "<br />\n") # optionally make line breaks
После некоторого поиска я обнаружил, что ruby1.8.7 не имеет нового движка регулярных выражений 'Oniguruma', он не поддерживает новый синтаксис регулярных выражений.
Так что я думаю, что у меня есть два пути:
- Добавить зависимую 'oniguruma' при использовании ruby <1.9.0 </li>
- Переписать
/(?<!<br \/>)\s*\n/
в старом синтаксисе
Какой путь лучше? А как переписать это регулярное выражение?