syntaxファイル

TJS2用GeSHiファイル

GeSHiとはPHPで書かれたコードの色付け機械です。GeSHi - Generic Syntax Highlighterで入手できます。現在私が利用しているDokuWikiは最初から組み込まれています。

そういうわけで、あまり需要はないでしょうが作ったので公開いたします。tjs2.php.txtをtjs2.phpにリネームしてそれっぽいフォルダに入れてください。

ToDo

KAGシステムが定義したメソッドなどの追加。あと16進法がどうやったら色付くか調べる

KAG3用GeSHiファイル

現在作成中。タグ名属性名はtags.detabaseからでいいとして値のキーワードはどうしよっかな

抽出ツール

当初、リファレンスを見ながらキーワードを打ち込んでたんですが、きつくなったので抜き出そうとして作ったものです。なんてことないですが。ソースの入ったフォルダの上位の位置に置いて実行させてください。例の如く責任は各自で負ってください。

# ~/extract.rb
#!/usr/local/bin/ruby
 
REG_CLASS = /TJS_END_NATIVE_CONSTRUCTOR_DECL\(([-A-Za-z0-9_]*)/
REG_FUNC = /TJS_BEGIN_NATIVE_METHOD_DECL\(([-A-Za-z0-9_]*)/
REG_PROP = /TJS_BEGIN_NATIVE_PROP_DECL\(([-A-Za-z0-9_]*)/
REG_CONST = /TJS_N\(\"const([^;]*);\"\);/
REG_CONST_ITEM = /([-A-Za-z0-9_]*)=[^,]*,/
 
$result = Hash.new
$result['class'] = Array.new
$result['function'] = Array.new
$result['property'] = Array.new
$result['const'] = Array.new
 
def dirlist(dir)
  return nil unless FileTest.directory?(dir)
  Dir.glob("#{dir}/*") do |file|
    dirlist(file) if FileTest.directory?(file)
    search(file) if File.extname(file) == ".cpp"
  end
end
 
def search(file)
  io = open(file, 'r')
  code = io.readlines.join("\n").gsub(/\r|\n|\s|\/\*.*?\*\//m, "")
  code.scan(REG_CLASS) do |matches|
    $result['class'] << matches[0]
  end
  code.scan(REG_FUNC) do |matches|
    $result['function'] << matches[0]
  end
  code.scan(REG_PROP) do |matches|
    $result['property'] << matches[0]
  end
  if File.basename(file) == "ScriptMgnIntf.cpp"
    matches = REG_CONST.match(code)
    matches[1].scan(REG_CONST_ITEM) do |m|
      $result['const'] << m[0]
    end
  end
  io.close
end
 
def listup(io)
  $result.each_key do |key|
    io.puts "\t\t\t// #{key}"
    line = String.new
    $result[key] = $result[key].uniq.sort
    $result[key].each do |identifier|
      if line.size.zero?
        line << "'#{identifier.to_s}',"
      elsif line.size + identifier.size < 60
        line << " '#{identifier.to_s}',"
      else
        io.puts "\t\t\t#{line}"
        line = ''
        line << "'#{identifier.to_s}',"
      end
    end
    io.puts "\t\t\t#{line}"
  end
end
 
 
 
 
dirlist(".")
 
io = open("list.txt", 'w')
listup(io)
io.close

その他

私が吉里吉里を知ったころ、とある吉里吉里erの人が使っていたので使い始め、それからずっと半端vim遣いなんですが、vimのsyntaxファイル作ろうかなあ。とずっと思ったまま放置してやがりますよ。いつか作るかも。

 
spearmint/hilighter.txt · 最終更新: 2008/01/28 12:18 by tohka