[PR] この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。
レイアウト用タグフィルタ アルゴリズム カウンタ ltCnt 無効な"<"の数をカウント フラグ tagFlg 有効なタグ gtFlg 有効なタグ内で">"が出現した 状態遷移 行頭で tagFlg←false tagFlg==trueのとき ">"なら ltCnt==0なら tagFlg←false ltCnt>0なら gtFlg←true ltCnt-- tagFlg==falseのとき "<"なら 有効なタグなら tagFlg←true gtFlg←false 無効なタグなら ltCnt++ ">"なら ltCnt>0なら ltCnt-- 行末で tagFlg==true かつ gtFlg==falseなら ltCnt++ 備考 gtFlgはtagFlgに従属 tagFlgがtrueになったときgtFlgはfalseになる gtFlgを参照するのはtagFlg==trueの場合のみ tagFlg==falseのときgtFlgは不定 ltCntは無効な"<"のときだけカウント ただし改行時にtagFlg==trueかつgtFlg==falseなら無効なタグとしてカウント アルゴリズム 一行取り出す(メインループ) tagFlgをfalse(初期化) 一文字取り出す(セカンドループ) "<"が出現したなら tagFlg==trueなら アトリビュートバッファに"<"を出力 tagFlg==falseなら 各バッファクリア エレメント名取得 無効なエレメント名なら ltCnt++ "<"+エレメント名(そのまま)を出力 有効なエレメント名なら tagFlgをtrue gtFlgをfalse ">"が出現したなら tagFlg==trueなら ltCnt==0なら(タグが閉じたとき) tagFlgをfalse "<"+エレメント名(小文字)+アトリビュート+">"を出力 ltCnt>0なら gtFlgをtrue ltCnt-- アトリビュートバッファに">"を出力 tagFlg==falseなら ltCnt>0なら ltCnt-- ">"を出力 "<"、">"、改行 以外が出現したなら tagFlg==trueなら アトリビュートバッファに出力 tagFlg==falseなら そのまま出力 セカンドループ終了 tagFlg==trueなら gtFlg==trueなら(そのタグで">"が出現した) "<"+エレメント名(小文字)+アトリビュートを出力 gtFlg==falseなら(そのタグで">"が出現しなかった) ltCnt++ "<"+エレメント名(そのまま)+アトリビュートを出力 改行が出現したなら 改行を出力 メインループ終了