最終更新: 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!!!