特定のテキストを強調表示するためにCodeMirrorを使用しようとしています。このプロジェクトで珍しいことは、強調表示する必要があるものが事前定義されていないことです。むしろ、Webサービスを呼び出すと、webseriviceの応答により、強調表示する必要があるもののインデックスが表示されます。これはNLPプロジェクトであり、Webサービスはコンテキスト固有の「知識」を提供してくれます。それが私が強調したいことです。
簡単に言えば、強調表示される文字の位置を示す開始属性と終了属性を持つJSONオブジェクトを取得しています
以下は、モード定義に関して私が持っているものです、私は「差分」モードを編集しました
CodeMirror.defineMode("diff", function() {
var i=-1;
return {
token: function(stream) {
i++;
// stream.skipToEnd();
var ch = stream.next();
if ( bufferedResponse != null && bufferedResponse != "" && bufferedResponse.allergies != null ){
$.each( bufferedResponse.allergies, function( key, value )
{
if ( key != null && value != null && value != "" )
{
if(i<value.start && i>value.end){
return "minus";
}
}
});
}
}
};
});
CodeMirror.defineMIME("text/x-diff", "diff");
私の質問は、文字列の先頭(行ではない)を基準にしてストリームの現在の値を取得するにはどうすればよいですか?ストリームが149番目の文字を読み取っている場合、この番号を取得するにはどうすればよいですか?「pos」、「start」、「columns」は、現在の行の位置のみを示します。
これはCodeMirrorを使用して可能ですか?