HTML のコード ブロックを強調表示するために、highlight.js を使用しています。highlight.js はすべてのコード ブロックを見つけて言語を自動的に決定できますが、要素と言語の両方を手動で指定したいと思います。言語を指定することで、それがどの言語であるかを判断するオーバーヘッドを回避したいと考えています (highlight.js は高速ですが、言語の検出をスキップすると高速になる可能性があります)。
HTML では、言語をクラスとして指定します (コード ブロックのスタイリングにこれが必要です)。
<pre>
<code class="python">
print "Hello"
</code>
</pre>
JavaScript では、コード要素を反復処理します (何らかの理由で、これらの要素のリストを取得する必要があります)。コード要素を繰り返し処理するときは、hljs.highlightBlock
関数を呼び出します。私は (クラスとして保存されている) 言語を知っているので、強調表示する言語を実際に highlight.js に伝えると有利だと思います。
highlight.js Web サイトの使用例から、hljs.configure
関数を呼び出して、試す言語のリストを指定できると推測しました。
// ...
if (codeElement.hasClass('python'))
language = 'python';
else if (codeElement.hasClass('bash'))
language = 'bash';
hljs.configure({languages: [language]});
hljs.highlightBlock(codeElement[0]);
ただし、これが正しい方法であるかどうかはわかりません。まず、これが信頼できる公式の API であるかどうかが明確ではありません。次に、highlight.js は、コード ブロックが指定された言語であるかどうかを判断しようとしていると思います (これは、最初に避けたかったことです)。