Buffer が大きいので役割ごとに分割してみる。

unknown: html => {"type":"html","value":"<!-- truncate -->","position":{"start":{"line":4,"column":1,"offset":28},"end":{"line":4,"column":18,"offset":45}}}

http get の結果

とりあえずここから手をつける。

  • CurrentURL

  • HttpResponse

  • ContentType

  • Body bytes

async function get(url) => Promise<HttpResponse>;

この HttpResponse から Buffer を作るという設計変更をする。 現状は、

  • buf = new Buffer

  • http_get(buf)

  • parse_html(buf)

  • return buf

という感じで 早期に Buffer が登場(Bufferにhttp headerを直接投入する)して物置と化しています。

Buffer管理

  • LinkList: prev, next

  • LinkBuffer

Line

HtmlParse 後。 utf8になって、2次元整形済み。 content と term width の2つで確定

  • Line[]

terminal の描画情報

  • cursor 位置

  • scroll 位置