2 * Copyright (C) 2013 FooProject
\r
3 * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
\r
4 * the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
\r
6 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
7 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
\r
9 You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
\r
13 namespace FooEditEngine
\r
18 public enum TokenType
\r
21 /// どのカテゴリーにも属さないトークンを表す
\r
25 /// キーワード1として表示するトークンを表す
\r
29 /// キーワード2として表示するトークンを表す
\r
33 /// コメントとして表示するトークンを表す
\r
37 /// 文字リテラルとして表示するトークンを表す
\r
41 /// コントロールとして表示するトークンを表す
\r
49 public class TokenSpilitEventArgs
\r
58 public TokenType type;
\r
60 /// トークンの切り出しをやめるなら真をセットし、そうでないなら偽をセットする(規定値は偽)
\r
62 public bool breaked;
\r
71 public TokenSpilitEventArgs()
\r
78 /// <param name="index">開始インデックス</param>
\r
79 /// <param name="length">長さ</param>
\r
80 /// <param name="type">トークンタイプ</param>
\r
81 public TokenSpilitEventArgs(int index,int length, TokenType type)
\r
83 this.length = length;
\r
86 this.breaked = false;
\r
91 /// トークンが切り出された時に呼ばれるイベント
\r
93 /// <param name="state">イベントデータ</param>
\r
94 /// <returns></returns>
\r
95 public delegate void TokenSpilitHandeler(TokenSpilitEventArgs state);
\r
98 /// シンタックスハイライトを行うためのインターフェイス
\r
100 public interface IHilighter
\r
110 /// <param name="text">対象となる文字列</param>
\r
111 /// <param name="length">文字列の長さ</param>
\r
112 /// <param name="action">トークンが切り出されたときに呼び出されるデリゲート</param>
\r
113 /// <returns>エンクロージャーレベル。開始エンクロージャーだけを検出した場合は1以上の値を返し、
\r
114 /// 終了エンクロージャーだけを検出した場合を-1以下の値を返すようにします。
\r
115 /// 何も検出しなかった場合、開始エンクロージャーと終了エンクロージャーが対になっている場合、
\r
116 /// エンクロージャー内で開始エンクロージャーを検出した場合は0を返します
\r
117 /// なお、開始エンクロージャーがすでに検出されている状態で検出したことを返した場合、その結果は無視されます
\r
120 /// int DoHilight(string text,int length, TokenSpilitHandeler action)
\r
122 /// if(length > 3 && text == "foo")
\r
123 /// action(new TokenSpilitEventArgs(0,3,TokenType.Keyword1);
\r
127 int DoHilight(string text,int length, TokenSpilitHandeler action);
\r