以下の内容はhttps://unageanu.hatenablog.com/entry/20080106/1199600414より取得しました。


JavaScriptのコメントを抜き出す

JavaScriptのコメントを抜き出すプログラムを書いてみました。strscanを使うとさくっとできます。

require 'strscan'
require 'kconv'

class Tokenizer 
  def tokenize(str)
    tokens = []
    s = StringScanner.new( str )
    while ( !s.eos? ) 
      if ( s.scan( /\/\*((.|\n)*?)\*\// ) != nil )
        # /* ... */ 形式のコメント
        comment = []
        s[1].split("\n").each {|l|
          tmp = l.gsub(/^\s*\*/, "").strip
          comment << tmp if tmp.length > 0
        }
        tokens << comment.join("\n").tosjis
      elsif ( s.scan( /\/\/(.*)/ ) != nil )
        # // ... 形式のコメント
        tokens << s[1].strip.tosjis
      elsif ( s.scan( /\s+/ ) != nil )
        # 空白
      elsif ( s.scan( /[^\s]+/ ) != nil )
        # その他
      end
    end
    return tokens
  end
end

サンプル。container.jsのコメントを抜き出してみます。

str = IO.read( "./container.js" )
puts Tokenizer.new.tokenize(str)

実行結果です。長いので途中まで。

ネームスペース
コンテナ
@param {Function} module コンポーネント定義を行う関数。
循環生成防止用のフィールド。作成中のモジュールの一覧が入る。
名前でキャッシュを作っておく。
EagerSingletonなオブジェクトがあれば生成。
名前でキャッシュ
コンポーネント名またはcontainer.Typeに対応するオブジェクトを取得します。
@param {String or container.Type} nameOrType コンポーネント名またはcontainer.Type
@return 対応するオブジェクト。複数のコンポーネントがマッチした場合、最初の1つを返します。
キャッシュがなければスキャン
...

まぁ、コメントだけ抜き出してもAPIドキュメントにはならないんだけどね。




以上の内容はhttps://unageanu.hatenablog.com/entry/20080106/1199600414より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14