このサイトのMagSite1をバージョン0.14に更新しました。
まだ、出来ていない機能は多いのですが、何もかも出来るまで待っては、既に出来ている機能の実地検証にもなりませんので、とりあえず区切りとして更新しました。
(未完成ですが、既に利用可能なMagMLの機能の一部の紹介は、https://mag.autumn.org/Content.aspx?id=20031013165353 )
0.14で何が変わったのかというと、ちょっと整理し切れていません。
というのは、テスト駆動開発を行うようになって、サイクルを小さくまわすようになった結果、Todoリストの項目が細分化されて膨れあがっているからです。
ちなみに以下に、0.14でDoneとなったTodo項目を掲載してみます。
ほとんどの項目は、一般利用者には意味がない内容だし、誰が読んでも絶対に分からない項目もあります。
一応、利用者からも意味がありそうな大きな項目には◎を付けて区別をしていますが、Todoリストの分かりやすさが次の課題となりそうです。
(Ver0.14)
・アーカイブ作成バッチの作成
・利用期限を埋め込む (2004年12月31日まで)
・NestedHtmlWriterはXHTML1.0対応に。lang属性も出力
◎ドキュメントの体裁
・form要素のenctypeのためIE5以前では動かずIE6でのみ動くかも知れない注意書きを追加すべき?
◎画像データはコンテンツのディレクトリ下に作成するので削除しないように注意書きをreadmeに書いておく (ついでに最低限のreadmeの体裁を)
・Contents.aspxでレンダリング済みテキストを扱う
・AdminWriteページでレンダリングを行いレンダリング3情報を追加して保存
・ItemListManager経由でAddする場合もレンダリング情報を渡す
・AdminWriteページのPreviewでMagMLをレンダリング
・AdminWriteページでMagML選択可能に
・MagMLクラスは、レンダラの名前とバージョンを返す
・ItemにXHTMLレンダリング済みテキスト関連情報の記録機能を追加
・"/"マークアップの作成
・"*"マークアップの作成
・"_"マークアップの作成
・ネストした"_"マークアップと"*"マークアップ
・新規アイテムを編集中にDraftManager.removeEmptyItemsが呼ばれると、編集中のアイテムが消失してしまう。そのため、空のドラフトの自動削除機能は除去
・リファクタリング
・NoItemの上書き禁止
・"fl"マークアップの作成
・generatePictureMenuのエラーケース3点のテスト作成
・"pm"マークアップの作成
・CreatePictureMenuItemとCreateNormalMenuItemに渡す必要のあるパラメータをMagMLParserに渡す
・writeRefersToAttachedBitmapFilesにreturnPageを渡す必要はない
・CreatePictureMenuItem相当のノーマルアイテム版を作る
・timgの名前をpmとflに変更
・timgは画像専用なので、一般ファイルにも使えるように汎用化する仕様変更
・"pre"マークアップでTab文字を使用した場合にエラーメッセージを埋め込む
・"pre"マークアップの作成
・リファクタリング
・">"マークアップの作成
・ulの中に>を入れ子にすると失敗する可能性が高い
・parseStartEndToggleでエラーになった場合に適切な対処を行って継続するように
・"1"マークアップの作成
・"2"マークアップの作成
・"3"マークアップの作成
・"4"マークアップの作成
・"5"マークアップの作成
・"ul"マークアップの作成
・暗黙的に閉じるul
・メタブロックノード導入前にMagXHTMLGeneratorを一部書いてみる
・NestedNtmlWriterのLiを、LiBlockとLiInlineの2種類にする
・仕様書の$を$$!に置き換え
・インラインマークアップとブロックマークアップどちらでもないものはエラー扱い
・エラーメッセージテキストノードの追加
・インラインマークアップとブロックマークアップを区別して埋め込み
・インラインマークアップとブロックマークアップの名前の判定
・ネストしたインラインマークアップ(終了トークンあり)
・ネストしたインラインマークアップ(終了トークン無し)
・トップレベルの終了マークアップは文字$扱いする
・$を$$!に置き換え
・改行を適切にハンドリングする
・MagParserで入力をスキャンし、ルートノードを作成する
・MagParserで論理行ノードを作成する
・MagNodeコンストラクタの第2引数は配列よりArrayListがいい?
・EMagNoteType列挙体を宣言
・MagNodeはノードの種類、ノードの値、子ノードリストを持つ
・MagTokenizerでマークアップ開始トークンの区切り文字が無く、次がマークアップ、改行、EOFの場合をテスト。区切り文字のあとがEOFの場合もテスト。
・MagTokenizerで全ての改行文字の組み合わせが改行として認識される
・MagTokenizerでマークアップ開始トークンの区切り文字がどれでも何個でも正常に認識する
・MagTokenizerでドル記号マークアップをテキストトークンとして解析できる
・MagTokenizerで改行トークンを解析できる
・MagTokenizerでEOFトークンを解析できる
・MagMLの空白文字を判定するメソッドの作成
・MagTokenizerでマークアップ開始トークンを解析できる
・MagTokenizerでマークアップ終了トークンを解析できる
・MagTokenizerでテキストトークンを解析できる
◎不正なXHTMLを含むコンテンツがあると、例外が起きて管理画面が出せない
・Itemクラスに、XmlByTextを追加
・XmlFragmentがロードされたとき、XmlByTextに変換する
・XHTMLコンテンツは、XMLフラグメントではなく、テキストで保管する
◎編集中の確認画面の添付ファイルのリンクは別ウィンドウに出すようにすべき
・編集中の画像リンクのa要素には、target="_blank"属性を付ける