ChangeLog
last update: $Date: 2004/04/26 20:30:16 $
- 2004-05-09
-
- [enhance] 文字列が '...' だけでなく "..." を使えるようになった。
- [change] 改行文字 \n は '...' の中では使えなくなり、"..." の中でのみ使えるようになった。
- [enhance] 改行が "\n" か "\r\n" かを自動判別するようになった。Windowsユーザに朗報。
- [enhance] プレゼンテーションデータから id="name" を削除するためのコマンドラインオプション --delete_idattr をサポート。
- 2004-04-27
-
- [enhance] mkmethod が --include_path と --load_path をサポート
- 2004-04-26
-
- [bugfix] Analyzer#exec_stmt()において、:foreach(local=global)の処理に関するバグを修正 (reported by Andreas).
- 2004-04-24
-
- [change] mkmethodスクリプトが「require 'cgi'」や「require 'erb'」を出力するようになった。
### current: $ mkmethod -M hoge -s hoge.html require 'cgi' module Hoge def self.expand_hoge(_args) user = _args[:user] _s = '' _s << "Hello " << CGI.escapeHTML((user).to_s) << "\n" return _s end end
- [bugfix] mkmethodスクリプトが生成するコードにおいて「include ERB::Util」の位置がおかしかったのを修正 (reported by Andreas)
### old: $ mkmethod -M Hoge -s hoge.html module Hoge include ERB::Util def self.expand_hoge(_args) user = _args[:user] _erbout = ''; _erbout.concat "Hello "; _erbout.concat(( html_escape(user) ).to_s); _erbout.concat "\n" _erbout end end ### current: $ mkmethod -M Hoge hoge.html require 'erb' include ERB::Util module Hoge def self.expand_hoge(_args) user = _args[:user] _erbout = ''; _erbout.concat "Hello "; _erbout.concat(( html_escape(user) ).to_s); _erbout.concat "\n" _erbout end end
- [change] mkmethodスクリプトが「require 'cgi'」や「require 'erb'」を出力するようになった。
- 2004-04-23
-
- [enhance] 新しいlanguageとしてruby2を追加。
print ...
の代わりに_s << (...).to_s
を使用する。### -l ruby $ kwartz -l ruby file.html print "<ul>\n" for item in list do print " <li>", item, "</li>\n" end print "</ul>\n" ### -l ruby2 $ kwartz -l ruby2 file.html _s << "<ul>\n" for item in list do _s << " <li>" << (item).to_s << "</li>\n" end _s << "</ul>\n"
- [enhance] 新しいlanguageとしてphp2を追加。ob_start()とob_get_contents()とob_end_clean()を使用することで、出力を文字列として取り出すことができる。
### -l php2 $ kwartz -l php2 file.html <?php ob_start(); ?> <ul> <?php foreach ($list as $item) { ?> <li><?php echo $item; ?></li> <?php } ?> </ul> <?php $_s = ob_get_contents(); ob_end_clean(); ?>
- [enhance] ユーティリティスクリプト mkmethod において、ruby2とphpとphp2をサポート。 またデフォルトはruby2になった。
- [enhance] ユーティリティスクリプト mkmethod において、オプション -A でメソッドの引数が指定できるようになった。
$ mkmethod -M Hoge -A user,list hoge.html module Hoge def self.expand_hoge(_args) user = _args[:user] list = _args[:list] return self._expand_hoge(user, list) end def self._expand_hoge(user, list) _s = '' _s << "Hello " << (user).to_s << "!\n" _s << "<ul>\n" for item in list do _s << " <li>" << (item).to_s << "</li>\n" end _s << "</ul>\n" return _s end end
- [enhance] 新しいlanguageとしてruby2を追加。
- 2004-04-05
-
- [bugfix] 代入文において左辺が初出でないローカル変数だった場合に右辺をanalyzeしなかったバグを修正(reported by Shu-yu Guo)
- 2004-04-04
-
- [bugfix] 負の数字があった場合、analyzeがエラーになるバグを修正 (reported by Andreas)
- [update] ユーザーズガイドを更新
- 2004-03-26
-
- [change] ERBのとき、サニタイズ用の関数としてERB::Util#html_escape()を使用するようにした。
そのため、ERBを使用する場合はメインプログラムを次のようにする。
require 'erb' include ERB::Util str = File.open('file.erb') { |f| f.read } erb = ERB.new(str, $SAFE, '%') print erb.result()
- [enhance] ユーティリティスクリプト util/mkmethod を追加。
これはテンプレートをコンパイルし、Rubyのモジュールを生成するスクリプトであり、次のように使用する。
bash$ mkmethod -h Usage: mkmethod [-p file] [-l lang] [-M module] [-m method] [-s] file.html Options: -p file : presentation logic file -l lang : ruby / eruby / erb (default 'ruby') -M module : module name (default none) -m method : method name (default 'expand_' + file) -s : sanitizing (equals to '--escape=true') --name=value : options for kwartz bash$ mkmethod -p hoge.plogic hoge.html def expand_hoge(_args) user = _args[:user] list = _args[:list] print "Hello " print user print "!\n" for item in list do print "<ul>\n" print " <li>", item, "</li>\n" print "</ul>\n" end end bash$ mkmethod -p hoge.plogic -M Hoge -l erb hoge.html module Hoge include ERB::Util def self.expand_hoge(_args) user = _args[:user] list = _args[:list] _erbout = ''; _erbout.concat "Hello "; _erbout.concat(( user ).to_s); _erbout.concat "!\n" for item in list do _erbout.concat "<ul>\n" _erbout.concat " <li>"; _erbout.concat(( item ).to_s); _erbout.concat "</li>\n" _erbout.concat "</ul>\n" end _erbout end end
- [change] ERBのとき、サニタイズ用の関数としてERB::Util#html_escape()を使用するようにした。
そのため、ERBを使用する場合はメインプログラムを次のようにする。
- 2004-03-25
-
- [enhance] 他のプレゼンテーションデータファイルを読み込むためのディレクティブ 'include' を追加。(reported by Andreas)
Presentation data:<span id="include:'file.html'"/>
- [enhance] 他のプレゼンテーションロジックファイルを読み込むためのディレクティブ 'load' を追加。
また中間言語に
:load()
文も追加。ディレクティブ 'load' は:load()
にコンバートされる。
Presentation data:<span id="load:'file.plogic'"/>
Presentation logic::load('file.plogic')
- [enhance] コマンドオプション
--include_path=dir1,dir2,
... を追加。 これは 'include
' ディレクティブで読み込むファイルのディレクトリを指定する。
- [enhance] コマンドオプション
--load_path=dir1,dir2,
... を追加。 これは 'load
' ディレクティブで読み込むファイルのディレクトリを指定する。
- [change] RubyとeRubyにおいて、サニタイズを
CGI.escapeHTML(x)
ではなくCGI.escapeHTML((x).to_s)
に変更 (suggested by Andreas)
- [enhance] 他のプレゼンテーションデータファイルを読み込むためのディレクティブ 'include' を追加。(reported by Andreas)
- 2004-03-24
-
- [enhance] 関数
E()
とX()
をサポート。E(expr)
は式exprをサニタイズし、X(expr)
はサニタイズをしない。 これらはコマンドラインオプション-s
や--escape
に依らない。
Presentation data:#{expr}# #{E(expr)}# #{X(expr)}#
Output script (PHP):<?php echo expr; ?> <?php echo htmlspecialchars(expr); ?> <?php echo expr; ?>
Output script (PHP) (with command option -s):<?php echo htmlspecialchars(expr); ?> <?php echo htmlspecialchars(expr); ?> <?php echo expr; ?>
- [enhance] 新しいディレクティブ
id="Value:expr"
とid="VALUE:expr"
を追加。 前者はid="value:E(expr)"
と同じでありexprをサニタイズして出力する。 後者はid="value:X(expr)"
と同じでありexprをサニタイズせずに出力する。
- [enhance] 新しいディレクティブ
id="Attr:name:value"
とid="ATTR:name:value"
を追加。 前者はid="attr:name:E(value)"
と同じであり、valueをサニタイズして出力する。 後者はid="attr:name:X(value)"
と同じであり、valueをサニタイズせずに出力する。
- [enhance] 関数
- 2004-03-22
-
- [change] <span>タグは削除するが<div>タグは残すように変更。(suggested by Andreas)
- 2004-03-21
-
- [bugfix] ネストしたタグの扱いに関するバグを修正 (reported by Andreas)
- 2004-03-20
-
- [enhance] 特殊マクロ
BEGIN
とEND
をサポート。 マクロBEGIN
で定義した内容は出力スクリプトの最初に追加され、マクロEND
の内容は出力スクリプトの最後に追加される。
- [enhance] 出力スクリプトの言語がRubyでもサニタイズすることが可能に。
- [enhance] 特殊マクロ
- 2004-03-19
-
- [enhance] id属性をkd属性と同じように使用可能に。 つまりkd属性のかわりにid属性を使用できるようになった。 加えて、id属性とkd属性を併用可能となっている。
- [enhance] 「
id="name"
」は「id="mark:name"
」と見なす。
- [enhance] キーワード
empty
をサポート。 「str==empty
」は「str==null || str==''
」と同じ、「str!=empty
」は「str!=nil && str!=''
」と同じ。
- [enhance] 新しいアクション 'analyze' を追加。
この機能は、テンプレートを解析し、テンプレート中で使われている変数をグローバル変数とローカル変数とに分けて報告する。
Presentation data (hoge.html):Hello #{user}# ! <ul id="mark:itemlist"> <li id="value:item">foo</li> </ul>
Presentation logic (hoge.plogic)::elem(itemlist) :foreach(item = itemlist) @stag @cont @etag :end :end
Result:$ kwartz -a analyze -p hoge.plogic hoge.html global variables: user itemlist local variables: item
- [enhance] 新しいコマンドラインオプション
--enable_eruby=true
を追加。 これを指定すると、プレゼンテーションロジック中にeRubyコードを含めることができる。 これは、プレゼンテーションロジック中に複数のRawcodeを含めるときに使用する。
- [enhance] ディレクティブの新しい記法として「
id="foreach:item:list"
」と「id="attr:name:value"
」をサポート。「=
」を使わないので、id属性の中に記述するのに適する(HTMLの仕様では、id属性の中に「=
」を含めることはできない)。
- [enhance] 新しいディレクティブ「
id="replace:elemname"
」をサポート。 このディレクティブがついたエレメントは、名前elemnameでマーキングされたエレメントで置き換えられる。
- 2004-03-08
-
- [change] Velocityにおいて、式の出力を「
${var}
」から「${var}
」に変更
- [enhance] Velocityへトランスレートするときに、「
expr!=null
」「expr==null
」をそれぞれ「expr
」「!expr」に自動変換
- [change] Velocityにおいて、式の出力を「
- 2004-02-27
-
- [enhance] 条件演算子が文字列または数値を返す場合は、コマンドラインオプション
-s
が指定されていてもサニタイズしないようになった。
- [enhance] 条件演算子が文字列または数値を返す場合は、コマンドラインオプション
- 2004-02-24
-
- [enhance] ユーティリティスクリプト 'W3C Markup Validation Service for Kwartz' を同梱。 このスクリプトは、HTMLファイルからkd属性を取り除いたうえでW3C Markup Validation Serviceに送信し、結果を表示してくれるCGIスクリプトである。
- 2004-02-18
-
- [enhance] attrディレクティブで名前空間を使用した属性名を指定可能に。
- 2004-02-12
-
- public release