org.opengion.fukurou.util

## クラス CommentLineParser

- java.lang.Object
- - org.opengion.fukurou.util.CommentLineParser

-     public class CommentLineParser
      extends java.lang.Object

       CommentLineParser.java は、ファイルを行単位に処理して、コメントを除去するクラスです。
       １行分の文字列を読み取って、コメント部分を削除した文字列を返します。

       ブロックコメントの状態や、コメント除外の状態を管理しています。
       オブジェクト作成後、line( String ) メソッドに、ファイルから読み取った１行分の文字列を渡せば、
       コメントが除外された形で返されます。

       コメントが除去された行は、rTrim しますが、行の削除は行いません。
       これは、Grep等で、文字列を発見した場合に、ファイルの行番号がずれるのを防ぐためです。
       逆に、Diff等で、複数のコメント行は、１行の空行にしたい場合や、空行自体をなくして
       比較したい場合は、戻ってきた行が、空行かどうかで判定して呼び出し元で処理してください。

       引数の行文字列が、null の場合は、null を返します。(読み取り行がなくなった場合)

       文字列くくり指定 は、例えば、ラインコメント(//) が、文字列指定("//") や、"http://xxxx" などの
       プログラム本文で使用する場合のエスケープ処理になります。
       つまり、文字列くくり指定についても、IN-OUT があり、その範囲内は、コメント判定外になります。

       ※ 6.3.1.1 (2015/07/10)
          コメントセットを、add で、追加していく機能を用意します。
          現状では、Java,ORACLE,HTML のコメントを意識せず処理したいので、すべてを
          処理することを前提に考えておきます。

       ※ 6.4.0.2 (2015/12/11)
          行コメントが先頭行のみだったのを修正します。
          og:comment タグを除外できるようにします。そのため、
          終了タグに、OR 条件を加味する必要があるため、CommentSet クラスを見直します。
          可変長配列を使うため、文字列くくり指定を前に持ってきます。

  変更履歴:

    5.7.4.0 (2014/03/07) 新規追加
    6.3.1.1 (2015/07/10) 内部構造大幅変更

  機能分類
    ユーティリティ
  バージョン
    6.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK7.0,

- - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `CommentLineParser(java.lang.String sufix)` 処理するコメントの種類を拡張子で指定するコンストラクターです。

  - ### メソッドのサマリー

    すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `java.lang.String` | `line(java.lang.String inLine)` １行分の文字列を読み取って、コメント部分を削除した文字列を返します。
    `static void` | `main(java.lang.String[] args)` このクラスの動作確認用の、main メソッドです。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### コンストラクタの詳細

    - #### CommentLineParser

          public CommentLineParser(java.lang.String sufix)

      処理するコメントの種類を拡張子で指定するコンストラクターです。 これは、ORACLE系のラインコメント(--)が、Java系の演算子(i--;など)と 判定されるため、ひとまとめに処理できません。 ここで指定する拡張子に応じて、CommentSet を割り当てます。 ・sql , tri , spc は、ORACLE系を使用。 ・xml , htm , html , は、Java,C,JavaScript系 ＋ HTML,XML系を使用。 ・jsp は、 Java,C,JavaScript系 ＋ HTML,XML系 ＋ ORACLE系 ＋ openGion JSP系 を使用。 ・それ以外は、Java,C,JavaScript系を使用。 css は、それ以外になりますが、//（ラインコメント）はありませんが、コメントアウトされます。
      パラメータ:
        `sufix` - 拡張子
      変更履歴:

        6.4.0.2 (2015/12/11) sufix によるコメント処理方法の変更。
        6.4.1.0 (2016/01/09) comment="***"のコメント処理方法の追加。
        6.4.1.1 (2016/01/16) sufixを小文字化。
        6.8.1.7 (2017/10/13) COMMENT ON で始まる行(大文字限定)は、コメントとして扱う

  - ### メソッドの詳細

    - #### line

          public java.lang.String line(java.lang.String inLine)

      １行分の文字列を読み取って、コメント部分を削除した文字列を返します。 行として存在しない場合は、null を返します。
      パラメータ:
        `inLine` - １行の文字列
      戻り値:
        コメント削除後の１行の文字列
      変更履歴:

        5.7.4.0 (2014/03/07) 新規追加
        6.3.1.1 (2015/07/10) CommentSet で管理します。

    - #### main

          public static void main(java.lang.String[] args)

      このクラスの動作確認用の、main メソッドです。 Usage: java org.opengion.fukurou.util.CommentLineParser inFile outFile [encode] [-rowTrim] -rowTrim を指定すると、空行も削除します。これは、コメントの増減は、ソースレベルで比較する場合に 関係ないためです。デフォルトは、空行は削除しません。grep 等で検索した場合、オリジナルの ソースの行数と一致させるためです。
      パラメータ:
        `args` - コマンド引数配列
      変更履歴:

        6.3.1.0 (2015/06/28) nioを使用すると UTF-8とShuft-JISで、エラーになる。
        6.5.0.1 (2016/10/21) CharacterCodingException は、OgCharacterException に変換する。

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.