このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

拡張子のネーミング

マイクロアップの概念・用語、流儀・作法・掟 - 檜山正幸のキマイラ飼育記 メモ編 の拡張子ネーミング規則を変更する。

  1. JSON(で表現した)データを .json とする。
  2. クリーンHTMLフラグメント(で表現した)データを .htm, または .hfrag とする。
  3. 完全なHTML文書は、.html とする。
  4. 同じベース名の .json と .hfrag, .html は等価でなくてはならない。
  5. コード実行を提供するプロセッサ・リソースは .cgi とする。
  6. プロセッサ実行結果がキャッシュ可能なら、.json, .hfrag, .html として提供する。
  7. コレクショリソースに対するPUT, POST, GETはディレクトリURLを使う。
  8. 動詞は _verbパラメータ。主にPOSTの細分に使う。
  9. JSONP, HTMLPのコールバック名は _cbパラメータ。
  10. クエリ文字列の長さは _qsl パラメータ。壊れていると、BadRequestになるだろう。
  11. メッセージダイジェストを入れたい場合は、_mdパラメータ。
  12. APIキーを入れたい場合は、_apikパラメータ。これはPOSTでも使う。
  13. JSONPを提供するURLは、foo.json.js?_cb=mycb
  14. HTMLPを提供するURLは、foo.html.js?_cb=mycb, foo.hfrag.js?_cb=mycb
  15. foo.html.jsの_cbパラメータが省略された場合は、HTML body内での展開をするようにする。document.write(...)
  16. JSONデータ、またはHTMLデータを受け取ってビューの初期化をするJavaScriptメソッドの命名は、initViewとする。
  17. foo.json.js, foo.hfrag.js の結果、foo.json.js?_cb=hoge.initView, foo.hfrag.js?_cb=hoge.initView の結果はそれぞれ等価とする。
  18. ただし、foo.hfrag.js がinitViewを呼び出すわけではない。foo.json.js はデフォルトでグローバル関数 initViewを呼び出す。
  19. 同一ページ内で複数のマイクロアップを共存させるために、名前空間の規則を守らなくてはならない。
  1. foo.hfrag はHTMLフラグメント
  2. foo.jsonJSONデータ
  3. foo.hfrag.js は document.write() で foo.hfrag を書き出す。
  4. foo.json.js は initView()にfoo.jsonが渡される。
  5. foo.hfrag.js?_cb=bar.initView は bar.initViewにfoo.hfragのテキストが渡される。
  6. foo.json.js?_cb=bar.initView は bar.initView()にfoo.jsonが渡される。

予定では次のように書けるはず。JSONデータさえ置いておけばよい。


// ファイルフルパスを分解、加工する
doset {
ecoh %0 | fname:ext >: "ext",
echo %0 | fname:subext >: "subext",
echo %0 | fname:replace-ext .json >: "jsonData",
};
// テンプレートファイル名を作る
doset {
["tpl", echo %%subext, echo %%ext] | text:join >: "templateFile"
};
// 実行
expand --resolve %%jsonData | print --place=include %%templateFile