0

CodeRayでルビーコードを強調表示しましたが、ユーザーがクリックした行番号を知りたいと思います。この行番号は、ソースコードの行番号に対応している必要があります。これを行うための最良の方法はどれですか?

4

1 に答える 1

0

これが私がこの質問を解決した方法です。CodeRayで数字を使ってhtmlを生成しました。しかし、CodeRayは公式サイトに正確なドキュメントを持っていないので、CodeRayのコードを調べた後、次のように作成しました。

content = CodeRay.scan(file.read, :ruby).div(:css => :class, 
                                                 :line_numbers => :inline)

:line_numbers => :table私の場合、モードは正しく機能しません:inline。モードを使用する必要があります。HTMLページの数字が気に入らない場合は、cssまたはjavascriptで削除できると思います。それから私は小さなjavascript関数を書きました:

$('span').not('.no').click(function(e) {
    var target = $(e.target);
    target.effect('highlight', {}, 'slow');
    var i = 0;
    var prev_element = target.prev();
    var element;
    while (i++ < 10) {
        element = $(prev_element[0]).context;
        if (element.className == "no") break;
        prev_element = prev_element.prev();
    }
    if (i > 9) {
        alert("Some problem with the finding number line");
    }
    else {
        var line_number;
        if (element.children.length > 0) line_number = element.children[0].innerHTML;
        else                             line_number = element.innerHTML;
        alert(line_number);
    }
    e.stopPropagation();
})

任意の提案や改善をいただければ幸いです。

于 2011-05-23T20:15:14.547 に答える