最終更新: 2015-03-31T20:06+0900
この日記ではバグを再現できないので tdiary/wiki_style.rbの該当部を見てみた。
hikihtml = HikiDoc::HTMLOutput.new html.gsub!( %r!<a href="(.*?)">(.*?)</a>! ) do k, u = hikihtml.unescape_html($2), hikihtml.unescape_html($1) if /^(\d{4}|\d{6}|\d{8}|\d{8}-\d+)\D*([pctf]\d+(?:[-.]\d+)*)?$/ =~ u then %Q[<%=my '#{$1}#{$2}', '#{escape_quote CGI.escapeHTML k}' %>] elsif /:/ =~ u scheme, path = u.split( /:/, 2 ) if /\A(?:https?|ftp|mailto|javascript)\z/ =~ scheme u.sub!( %r@\A(?!mailto|javascript)\w+:(?!//)@, '' ) %Q[<a href="#{CGI.escapeHTML u}">#{CGI.escapeHTML k}</a>] elsif ( k == u ) %Q[<%=kw '#{escape_quote u}'%>] else %Q[<%=kw '#{escape_quote u}', '#{escape_quote k}'%>] end elsif k.empty? %Q[<a href="#{CGI.escapeHTML u}">#{CGI.escapeHTML u}</a>] elsif u.empty? %Q[<%=kw '#{escape_quote k}'%>] elsif k == u %Q[<%=kw '#{escape_quote u}', '#{escape_quote k}'%>] else %Q[<a href="#{CGI.escapeHTML u}">#{CGI.escapeHTML k}</a>] end end html end
154行目の正規表現は同じ問題を含んでるけど、ざっと見ただけで
あたりが違う感じ。どれが影響してエラーにならないんだろ。
……ならないんだけど、自分が正しいと信じる解決策を下のように適用しておいた(量指定子はこの日記のもともとの仕様に従って +? ではなく *? を使うように変更してある)。
html.gsub!( %r!<a href="([^"\n]*?)">(.*?)</a>! ) do
* メンバ変数に依存しないメンバ関数って……。まったく無駄な new!!!