久々にJsDok Toolkitを見てみたり2007年08月21日 15時58分26秒

なんかリファラにcode.google.comがあるんですけど

このブログのアクセスログを見てたら、リファラがhttp://code.google.com/p/jsdoc-toolkit/wiki/LinkLoveってのがあった。

なんじゃこりゃ、と思って飛んでみたら、以前のエントリで取り上げたJsDoc ToolkitプロジェクトWiki内のリンク集だった。びっくり。

たぶん検索で引っかかったんだろうけど、Boy, I really wish could read Japanese...なんてコメントされてて、日本語だけでごめんなさい

で、久々にちょっとだけチェックしてみたワケだが

で、newsのとこを見てみると、バージョンががんがんあがってて、現在は 1.2.1 みたい。以前取り上げたやつは5/27付けの 0.5.2b だったから、えらい様変わりしてるだろうなと思ってダウンロードしてみた。

ディレクトリ構成も若干変わってるけど、JSのソースも増えてた。起動スクリプトも以前は「JsDoc.js」だったんだけど、別途「run.js」といういかにも起動スクリプトなファイルが増えてて、そっからスタートするようになっている。

ふと興味を持って、appディレクトリ(以前のlibディレクトリに相当か?)内で java\. とかでgrepしてみたら、明示的にJavaのパッケージを使用しているのが

  • JsDoc.js
  • JsIO.js
  • run.js
  • Transformer.js
くらいみたい。ざっと見た限りでは即時実行のスクリプトはrun.jsくらいみたいであとはクラス定義と関数定義なので、
  • run.jsを差し替える(というか代替コードを書く)
  • Java依存の部分はfunctionを置き換える
という格好で元ソースを改変せずに以前夢見たhta版とかにできそうな予感が。あくまで予感ですが。

ふむ、時間ができたらまたソースおっかけてみようかな。

アクションメソッドで自動レンダリングを無効にする2007年08月21日 17時32分54秒

単発TIPS。つか備忘メモですな。

Zend_Controller_*でのMVCを使っていて、あるアクションコントローラのアクションメソッドのみViewRendererヘルパーの自動レンダリングを使用しない場合は、ViewRenderer->setNoRender() を使う。

以下、適当な例。downloadActionはブラウザにCSVファイルをダウンロードさせるって感じ。

class HogeController extends Zend_Controller_Action {
	public function indexAction() {
		// ほっとくと勝手にViewRendererが関連付けられた
		// ビュースクリプトでレンダリングする
	}
	
	public function downloadAction() {
		// 自動レンダリングを無効にする
		$this->_helper->viewRenderer->setNoRender();
		
		// レスポンスヘッダをセット
		// ほんとは$this->getResponse()->setHeader()を使うんだろうけど
		// コード未検証なのでheader()を使ってみる。
		header( 'Content-Disposition: inline;filename=hoge.csv' );
		// 別にapplication/octet-streamじゃなくてもいいか。
		header( 'Content-Type: application/octet-stream' );
		
		// あとはecho なんかでCSVデータを直接出力
	}
}

いや、わざわざ記事にしなくてもいいんだけど、マニュアルのどこに書いてあったかすぐ忘れちゃうもんで...