2010-12-06 1 views
1

ruby에 블로그 아카이브 변환기를 쓰고 있습니다. WordPress의 게시물 내용을 HTML 형식으로 변환하려면 WordPress의 wpautop() 함수를 구현해야합니다.ruby1.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에서, ruby1.9.2에 BU를 잘 작동 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'가 없다는 것을 알았습니다. 새로운 정규식 구문을 지원하지 않습니다.

  1. 는 이전 구문에 루비 < 1.9.0
  2. 재 작성 /(?<!<br \/>)\s*\n/를 사용하는 경우

더 나은 어떤 방법입니다 'oniguruma'따라 추가

그래서 나는 두 가지 방법이 생각? 그리고이 정규 표현식을 다시 쓰는 방법? 작품 주장 미리 보지 않으면

답변

3

이 (주의 - 테스트 - 내가하지 1.8을하지 않은!)처럼 할 수

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

감사를 시도 내 간단한 단위 테스트를 통과. – Rei

3

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

+0

감사합니다. 간단한 단위 테스트를 통과하십시오. – Rei

관련 문제