« サンプルプラグインのインストール方法 | トップページ | 空のアウトラインページの作成 »

2004.01.14

ドキュメントを区画分けするスキャナの作成

そういえばドキュメントを区画(パーティション)分けするためのスキャナクラスの作成方法を書き残していなかった気がするので,ここに記しておこう。

ドキュメントを区画分けするためのクラスは,IDocumentPartitionerインタフェースの実装クラスである。これは,多くの場合はDefaultPartitionerクラスで事足りるだろう。このDefaultPartitionerクラスでは,実際にどのようにドキュメントを区画分けするかはIDocumentTokenScannerインタフェースの実装クラスに委ねられる

IDocumentTokenScannerインタフェースの場合も例に漏れず,しっかりと便利な実装クラスをEclipseが用意してくれている。それがRuleBasedPartitionScannerクラスだ。基本的な使い方は簡単で,区画を決めるルールオブジェクトの配列をsetPredicateRulesメソッドにセットするだけ

  class MyPartitionScanner extends RuleBasedPartitionScanner {
    static final String JAVA_DOC = "__my_javadoc";
    static final String JAVA_COMMENT = "__my_comment";
    MyPartitionScanner() {
      IToken javaDoc = new Token(JAVA_DOC);
      IToken javaComment = new Token(JAVA_COMMENT);
      IPredicateRule[] rules = new IPredicateRule[2];
      rules[0] = new MultiLineRule("/**", "*/", javaDoc, (char)0, true);
      rules[1] = new MultiLineRule("/*", "*/", javaComment, (char)0, true);
      setPredicateRules(rules);
    }
  }

上記のコードでは,Javaのソースコードを,
  (1) Javadocコメントの部分(JAVA_DOCコンテントタイプ)
  (2) 複数行コメントの部分(JAVA_COMMENTコンテントタイプ)
  (3) それ以外(IDocument.DEFAULT_CONTENT_TYPEコンテントタイプ)
というように区画分けしています。(char)0っていう引数は,エスケープしなくちゃいけない文字は特にないので,とりあえずnullの代わりって感じのものです。

このクラスは,RuleBasedPartitionScannerはIRuleじゃだめ!でも登場したクラスで,そのときに書いた内容は,ここでセットできるルールオブジェクトはIRuleインタフェースの実装じゃダメで,IPredicateRuleインタフェースの実装が必要なんだよってことを書いています。

|

« サンプルプラグインのインストール方法 | トップページ | 空のアウトラインページの作成 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/12631/101235

この記事へのトラックバック一覧です: ドキュメントを区画分けするスキャナの作成:

« サンプルプラグインのインストール方法 | トップページ | 空のアウトラインページの作成 »