Catyの変更や拡張
http://d.hatena.ne.jp/m-hiyama-memo/20120229/1330491076 から後の2012年前半の変更拡張:
- debug:fuserコマンドを追加(Linux用)
- cpl (Classical Propositional Logic) モジュールを追加、暫定的
- gv:draw に --format=plaindot を追加
- Caty起動時オプション --app に追加
- callコマンドで.catyファイルの呼び出しを可能に
- 文字列化コマンド to-string を追加
- deprecatedログを追加
- os:platform コマンド追加
- 古いexecを廃止
- 型パラメータのデフォルト指定構文を導入、
など - hconをコンソールから起動可能に
- 型ケース構文を導入 case
- 手続き的cond構文を導入
- オブジェクトに対するeachの仕様を変更 #397 、each --obj の導入 #398
- takeに--indfオプションで三値論理対応
- takeに--objオプションでオブジェクト出力対応 #430
- file:list の機能拡張 glob対応、末尾スラッシュの解釈、--recオプション
- 定数定義constを導入
- Caty起動オプションに --goodbye オプションを追加
- catyをアプリケーション名として予約
- inspectモジュールを追加 #460
- Catyにクラスシステムを導入
- helpアプリケーション、とりあえず動くレベル
- テンプレートの区切り記号のクォーティングとして、<<, >>、{{, }} などを導入
- helpアプリケーションにhelpモジュール追加
- CDパス(ColonDotパス)仕様を導入
- Caty起動オプション --force-app を追加
- state宣言の構文拡張、asとbaseobjectを追加、#528
- docコメントを構造化、最初の一行を特別扱い #533
- 各種テンプレート変数より_接頭辞を削除(例: _CONTEXT --> CONTEXT)
- パッケージメタデータファイル pkg-manifest.xjson を導入
- Catyの標準モジュールも.casmから読むように修正
- Catyコマンドラインで、同一名称の複数のオプションを許す
- public.casmを廃止(モジュールの@[register-public]で代替)
- call で任意のファイルを呼べるようにした
- Web処理に三層のレイヤーアーキテクチャを導入
- バイナリリテラル b"..." を導入
- binモジュールを追加
- webioモジュールを追加
- 環境変数の追加:QUERY_STRING, SERVER_SOFTWARE, SERVER_MODULE
- pv, item, nth に --safeオプションを追加。
- ext-content-typeコマンドを追加
- アプリケーションごとにlibを持たせた、#639
- class構文を導入
- classのrefers節、構文だけ対応
- runtime.casmを追加、暫定的不完全
- setenv, unsetenv特殊コマンドを追加
- FITのabandon -> suspend と変更
- XJSONパスで末尾の'?'をサポート
- neqコマンドを追加
2012年6月までの更新は以上。2012年後半の次回のエントリーに。
以下に、http://d.hatena.ne.jp/m-hiyama-memo/20120229/1330491076 までを再掲
- text:verify-chars追加
- start.logにロギング
- _OPTS, _ARGV変数
- dribbleファイル機能
- smarty-mxの実装 https://bitbucket.org/project_caty/dev/issue/17/smarty-mx
- list:tightenを実装
- object-to-array, array-to-objectを実装
- テンプレートで仮想プロパティをサポート
- list:range コマンド追加
- smarty=smarty-mx とした
- ハイフン1個オプションを廃止
- path:matchesコマンド、テスト不十分
- パス式アクセスに$記法を導入(実装方式はけっこうヒドイ)
- ハイパーリンク記述を開始 https://bitbucket.org/project_caty/dev/issue/63/
- httpコンソール
- viva:draw
- gen-data -> gen:sampleに変更
- リソースのヘルプを追加
- viva:draw-action
- 環境変数LANGUAGEを追加。主にi18nメッセージの言語選択に使われる。
- viva:draw-actionに --loneオプション
- caraとcasmの統合
- call, forwardを追加。コマンド宣言にsignals節追加
- start{...}を追加、参考:https://bitbucket.org/project_caty/dev/issue/114/
- sleepを追加。
- キーボード割り込みでREPの中断、Windowsではまともに動かない。
- gen:urlを実装
- <?caty-* の出現位置の制限を先頭200文字→先頭10行に変更
- viva:draw/draw-action に --if-modified オプション
- vivaの描画フォーマットにsvgeを追加
- Literate形式のモジュール
- Wikiにignoreプラグイン
- caraにもlit形式
- h, hc, ht, hrをコンソールに出力するよう修正(helpはこれまで通り)
- schemata@this, actions@this を readonly で公開する。
- patternスキーマ属性
- userrole宣言、ユースケースのアクター概念を入れた(最小限)
- 不明なuserroleに疑問符
- --node=userrole の描画
- Catyの名前文字の日本語対応
- file:listでschemataやactionsを見られるように
- globalをアプリケーションとして扱えるように
- -マークで、別にどっちでもいいよトリガー
- globalのWebアクセス禁止(Webからは存在しない扱い)
- lexicalキーワードをsyntax宣言で使用可能に
- portのナンチャッテ実装
- ポートが束縛される機構/タイミングによりポートノードの色を変える
- 不明なノードのSVG出力時、classにunknownを追加
- 新CSSセレクターライブラリ
- filter:json フィルターコマンド
- filter:javascript フィルターコマンド
- with, withoutアノテーションを実装
- gv:drawを実装
- コマンドがエラーになったときに、スクリプトでの位置を同時に出力
- setモジュールを暫定的に追加
http://d.hatena.ne.jp/m-hiyama-memo/20120227/1330299117 再掲
- osモジュールにコマンド追加
- json:fix-on-selection
- json:fix-on-selection に、インライン・インクルード機能としての $embed
- pidファイル機能
- server status を server だけで参照可能。
- OSシグナル SIGTERM, SIGQUITに対応。Windowsでは不十分。
- キーボード割り込みをシグナルハンドラで対応するよう変更。Windowsでは不十分。
- isarray, isobjectフィルターを追加
- smarty3のfunctionを実装。
- その他 SmartyMinEx(smarty-mx)
- モジュールにアノテーションを付けられる。
- chcker.casm と checker:check-files、 まだ不十分。
http://d.hatena.ne.jp/m-hiyama-memo/20110623/1308807276 再掲
- when-otherwiseのワイルドカード
- PATH_INFO環境変数
- 環境変数が直接参照可能に。
- app.logとloggingモジュールを追加。
- osモジュール os:exec-scriptコマンドを追加。
- rc-once/*.caty による一回実行起動時スクリプト
- 複数候補から選択した値の解決 json:fix-on-selectionコマンド、$selection, $embed。
- モジュール循環依存性の検出
- 型コンパイル方式を少しずつ改善
- make-exception, throw-if-can。throw-if-canは今バグっている。
- pathモジュール
- when, eachにオプションが(構文上は)可能となる。
- gen-dataの改善、@[typical]アノテーション
- デーモンモードでのシグナル(SIGTERM, SIGHUPなど)に対応
- SIGHUPではリスタートする。
- PIDファイルをちゃんと消す。
- システム情報の公開性を少し高めた。
- 疑似タグのプロパティ名に文字列が使える。
- 疑似タグでundefinedが使える。
予定:
- 型の包含性判定
- データセットのサポート
http://d.hatena.ne.jp/m-hiyama-memo/20110506/1304662541 再掲。
- 変数生成 '>'
- 変数参照 '%'
- パイプラインの一時的終了 ';'
- eachによる変数スコープ(つうかエクステント)
- casmでスクリプトコマンド定義
- kindのナンチャッテ第一段階。
- バッグ型
- actions/*.cara
- 新しいスキーマ属性 maxProperties, minProperties, propNameFormat, tight。(remarkは以前から。)
- XJSONパス、XJSON get/put、パートはまだだが。
- ignore-tag-onceルール、pv, item, nth とXJSONパス
- 疑似タグ構文 '@?' '(' (name|string) ':' スカラーリテラル ')'
- 任意のタグ '@*'
- 任意の明示的タグ '@*!'
- 型名タグ '@&'
- undefined型と#'undefined
- @[register-public]
- CatyBNFのナンチャッテ実装: ::=, :=, = が使える。
- /*{{{, }}}*/ コメント
- debug特殊コマンド
- --no-ambient, --no-appオプション
- select-action, select-script, trace-dispatchコマンド
- スキーマ記述用のPythonファイルの分離
- *.caraにfiletypeを書ける
- 例外型の定義(exception宣言)
- deferred型
- お尻スラッシュ問題に対して、マニフェストに "missingSlash" 追加。
- _global.xjsonに "addrsAllowed", "addrsDenied"
- スタックトレースのWebへの出力
- throws only
- 総称コマンドの実行時具体化
- 国際化フレームワーク
- フィルターのコマンド化
- deprecatedアノテーションの処理
- defaultアノテーションの処理
- moduleにdocコメント
- 配列型の項目名
- HTTPメソッドトンネリング
- CatyFITのjudge欄
- ハッシュ記法
- timeメタコマンド
- CatyFITにignore-spaceオプション
予定:
- __integerスキーマ属性
- whenにotherwiseワイルドカード
- 複数プロファイル
- オブジェクトのeach
- ユニオン型のワイルドカード
- importと名前の本籍追跡
- tag-onlyデータ
- コマンドオーバーロード(優先度低し)
- テンプレートの elseif
中途半端または未着手: