メインコンテンツまでスキップ

HtmlParser 整理に着手

w3m 最大の難所、 html parser の整理に手をつけた。

とにかくでかい。 だいぶ削った(frame 機能を削除するとか)のだが、 それでもまだ 7000 行とかあり、 1000行規模の関数があったり。

とくに table が難解。 table の cell 内だけ、パースがネストしている?

global 変数退治

完了。 たぶん、reentrant 可能。

ロジック

2パスで動作していて、 一回目で指定したカラム幅に分割しながら、 解釈した内容を html 風の文字列に再エンコーディングして 、文字列のリストに格納しているぽい。 あとどうも木構造の構築はやってなくて、項目ごとに stack で on/off を追跡しているようだ。

二段階目で文字列のリストを走査して、 tui 向けに row/col と属性を考慮した行形式に出力している。 plain な文字列と、属性配列の二本建て。 正規表現による文字列検索があるので plane な HTML tag の除去された文字列も必要。 なので、この段階で term 向けの cell 構造化しない。

table

table に入るときに環境をリセットいて、パーサーを再起動しているぽい。