日々のコンピュータ情報の集積と整理

Dr.ウーパのコンピュータ備忘録

2014年5月1日木曜日

バグフィックス(1):SyntaxHighlighter使用箇所があれば読み込む(完成スクリプトの配布)

記事「ページ表示速度改善:SyntaxHighlighter使用箇所があれば読み込む(完成スクリプトの配布)」にて公開したスクリプトの一部にバグがあったため修正を行いました。



バグ内容

ブラシの指定時に次のように ブラシ名の次に ; が付くケースで、対応する 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*;*) は、ブラシ名取得のマッチングに使うのみの使用用途では不要のはずです。











関連記事

関連記事を読み込み中...

同じラベルの記事を読み込み中...