読者です 読者をやめる 読者になる 読者になる

@kotyのブログ

.NETとかJavaとかPythonとか勉強会のこととかを、田舎者SEがつづります。記事のライセンスは"CC BY"でお願いします。

JavaDoc内に記述したコードを強調表示する方法

メモ。.NETならこんな面倒なことせんでもいいのになぁ。

あらかじめ、http://shjs.sourceforge.net/ より強調表示のためのファイル群をダウンロードしサーバー(Jenkinsサーバが適当だと思う)に配置しておく。ここでは、/shjs-0.6 ディレクトリに配置したものとする。

pom.xmlに下記を記述。configurationタグ内がミソ。CDATA内に記述したコードが、生成されたJavaDoc htmlのbodyの最初と最後に付加されてしまうが、うまく動いているのでとりあえずこれで良しとしとく。。。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
        <header><![CDATA[
<link type="text/css" rel="stylesheet" href="/shjs-0.6/sh_style.css" />
<script type="text/javascript" src="/shjs-0.6/sh_main.min.js"></script>
<script type="text/javascript" src="/shjs-0.6/lang/sh_java.min.js"></script>
<script type="text/javascript" src="/shjs-0.6/enable_sh.js"></script>
]]>
        </header>
        <links>
            <link>http://docs.oracle.com/javase/jp/7/api/</link>
        </links>
    </configuration>
</plugin>

上記scriptタグの3つ目、enable_sh.jsは後から独自に作成し配置したスクリプトファイルだ。内容は下記とした。

window.addEventListener("load", function() {
    var tlist = document.getElementsByTagName("pre");
    for(var i = 0 ; i < tlist.length ; i++) {
        tlist[i].setAttribute("class", "sh_java");
    }
    sh_highlightDocument();
});

ソースコードJavaDocのpreタグ内にコードを書く。

/**
 * ・・・中略・・・
 * <pre>
 * //あーするこーする
 * HogeClass c = new HogeClass();
 * c.piyoMethod();
 * </pre>
 * ・・・中略・・・
 */

以上で、preタグで囲ったコードがJavaコードとして強調表示される。もっとイケてる方法があれば教えてください。