バグ内容
ブラシの指定時に次のように ブラシ名の次に ; が付くケースで、対応する JavaScript ファイルを読み込めないケースがありました。<pre class="brush: plain;">
バグ詳細
読み込む SyntaxHighlighter のブラシファイルを決定するために、ページ内の<pre>を検索し、class に指定されているブラシ名を正規表現により取得しています。いままでの正規表現は以下のとおりです。
いままでの正規表現:
var target = /(brush:\s*)([^\s]+)/; // ブラシを発見するための正規表現
(brush:\s*)の部分がブラシ名になります。
このブラシ名を使用して読み込む ブラシファイルを決定しています。
この正規表現の場合、たまにブラシ名に ; が付加された状態で、(brush:\s*)の部分の正規表現によるマッチング結果が返ってくることがありました。
例:ブラシ名=plain;
※取得結果として望ましいのは、ブラシ名=plain となること。
そのため、ブラシに対応するブラシファイルを読めずに、SyntaxHighlighter による装飾が行えないケースがありました。
そこで、正規表現を以下のように修正し、確実にブラシ名を取得できるようにしました。
修正後の正規表現:
var target = /(brush:\s*)([^\s;]+)(\s*;*)/; // ブラシを発見するための正規表現
この正規表現の場合、確実に ; はブラシ名として取得される対象外になるため、ブラシ名に ; が付くことによるブラシファイル取得失敗を防ぐことができます。
※なお、正規表現の最後の (\s*;*) は、ブラシ名取得のマッチングに使うのみの使用用途では不要のはずです。
コメントを投稿
コメント投稿機能について