2010-12-06 12 views
1

ruby​​でブログアーカイブコンバータを作成しています。 Wordpressの投稿コンテンツをHTML形式に変換するには、wordpressのwpautop()関数を実装する必要があります。ruby​​1.8でregexp(?<!...)を書き換える方法(wpautop関数の再実装)

オリジナルwpautop()関数:http://pastebin.com/BzV8bXxQ

マイルビー実装:https://github.com/chloerei/blog_converter/blob/master/lib/blog_converter/adaptor/wordpress.rbを、1.8.7でBU、それはruby1.9.2で正常に動作Wordpress#wpautop_filter

を参照してください、それはエラーに

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」がないことが判明しました。新しい正規表現構文をサポートしていません。

だから私は、私は2つの方法があると思う:

  1. 古い構文に書き換え/(?<!<br \/>)\s*\n/

をルビー< 1.9.0

  • を使用する場合には優れている道 '鬼車' 依存に追加しますか?そして、この正規表現を書き直すには?あなたはこの(!注意 - テスト-iはありません1.8持っていないが)好きなことができ

  • 答えて

    3

    作品は先読みいない場合は、アサーション:

    string.gsub!(%r|(<br />)?\s*\n|, "<br />\n") 
    
    +0

    感謝を試してみて、私の簡単なユニットテストに合格。 – Rei

    3

    この.gsub!(%r|(<br />)?\s*\n|, "<br />\n")

    +0

    ありがとう、私の単純なユニットテストをパスします。 – Rei

    関連する問題