2019-02-04 bouzuya/node-xml 0.1.1 をつくった
bouzuya/node-xml 0.1.1 をつくった。
node-xml は XML の parse/format を提供する npm パッケージ。 npm i @bouzuya/xml で使える。
つくった経緯。今日は bouzuya/node-hatena-blog-api の CoffeeScript -> TypeScript 移植をしていた。 node-hatena-blog-api は npm:xml2js を使っていた。これのオブジェクト形式には $ や _ などが出てくるなどどうもモヤモヤした。設定でそのあたりは変更できるのだけど思い切って書き直した。
Virtual DOM のときの雰囲気で Node を定義して npm:hyperscript っぽい create* を提供した。 format (Node -> string) は適当に書いた。 parse (string -> Node) は npm:sax を使った。ちなみに xml2js は npm:xmlbuilder と npm:sax を使っているようだ。
コメントや DOCTYPE を捨てていたりルート要素の外のテキストを捨てているので format(parse(xml)) === xml とならない。まじめにやってない。
sax は ただこれ以上の脱線はさすがにまずい。明日はこれを使って node-hatena-blog-api きちんと進める。<element /> のような self-closing tag を区別する手段が提供されていない点でモヤモヤする。
追記: onopentag で isSelfClosing: boolean の形で渡ってきていた。