トップ «前の日記(2005-01-30) 最新 次の日記(2005-02-01)» 編集

2002|01|02|03|04|05|06|07|08|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|02|03|04|07|

2005-01-31 [長年日記]

_ 付箋が貼れるといいなー (13:17)

Ruby 1.9をうまく動かせないんで、(Rubyのソースに関しては)パッケージマネージメントとインクリメンタル検索機能しか使えていないんだけど、それだけでも結構便利。あとできれば、これに付箋が貼りたい。付箋にコメントをつけて、さらに関連するコードにリンク(「(パッケージ名):ファイル名:行」なんて表記かな)を張ったりとかすると、解析とかレビューですごく使えそうだ。wema2がリリースされたら、gonzuiと重ねて動かすのにトライしてみたいなー。

Tags: gonzui

_ PHPのparser (15:58)

RubyでPHPのパーサーを書くのは面倒くさそうだけど、PHPが存在する環境では、PHPのtokenizerをそのまま使うようにすれば、PHPに対応するのも簡単そうだなー。ひとまずPHPでparseした結果を適当なフォーマットで出力するコードだけ書いてみた。

<?php
function tokenize($source) {
  $tokens = token_get_all($source);
  $parsed = '';
  $result = '';
  foreach ($tokens as $token) {
    if (is_array($token)) {
      $type = $token[0];
      $text = $token[1];
    } else {
      $type = 0;	//literal?
      $text = $token;
    }
    echo 'LINE: '.count(explode("\n", $parsed)).' LENGTH: '.strlen($parsed).' TYPE: '.$type.' TEXT: '.$text."\0";
    $parsed .= $text;
  }
}

if (isset($argv[1])) {
  $source_file = $argv[1];
  if (file_exists($source_file)) {
    $source = file_get_contents($source_file);
  } else {
    die('FILE NOT EXISTS: '.$source_file);
  }
} else {
  $source = '';
  $fp = fopen('php://stdin', 'r');
  if ($fp) {
    while (!feof($fp)) {
      $source .= fread($fp, 4096);
    }
    fclose($fp);
  }
}
tokenize($source);
?>

あとは、PHPのtypeで必要なものをgonzuiのtypeに読み替えたりしつつ、Ruby側でこの出力を取り込んでいけばいいのかな。あるいはPHPでRubyのソースコードを出力して、そのままevalさせたりとかできるんだろうか?

ただ、Rubyがわからなくてlangscan以下のディレクトリを見ても、何をやってるのかよくわからない。一回ちゃんとRubyのお勉強をしないと、いろいろ不都合(やりたいことがすぐにできない)が多いなー。

Tags: gonzui
本日のツッコミ(全2件) [ツッコミを入れる]
_ tokuhirom (2005-01-31 20:29)

http://tokuhirom.dnsalias.org/~tokuhirom/wiki/GonzuiHacks
このへんに情報がちょびっとあります。

_ ishinao (2005-01-31 20:55)

>tokuhiromさん
イナモデの方ですでに読ませてもらっていたんですけど、Rubyの文法レベルで理解できてないんで、ついていけませんでした(笑)。もうちょっとRubyのお勉強をしてから、あとでもう一度読ませていただきます。