前の関連記事:LibreOffice(58)SDKからメソッドの解説を抽出:辞書をディスクに保存する
SDKのhtmlファイルから各IDLの解説のファイル名の辞書を得たので、それを使ってhtmlへ出力したものへリンクをつけます。
どの段階でアンカータグをつけるか?
LibreOffice(56)htmlをファイルに保存してブラウザに結果を出力するで出力しているhtmlファイルは等幅フォントを使って文字数をカウントして縦位置をそろえているので途中でタグをはさみこむのは難しそうです。
ということで完成した行のリストのlst_bodyでタグをつけることを考えます。
libreoffice59.py
まずはIDLへのリンクを置換しました。
これの実行にはLibreOffice4.2のSDKのインストールとLibreOffice(58)SDKからメソッドの解説を抽出:辞書をディスクに保存するでやったようにdbmモジュールの追加、とlibreoffice58.pyの実行が必要です。
OSがWindows7以外のときはSDKのパスを適宜変更しないといけません。
これでサービス名とインターフェイス名についてはSDKのhtmlファイルへのリンクがつきました。
例外にもリンクがついていますが、ENUMにはついていませんね。
これはまた後で考えることにします。
次にメソッドや属性へのリンクをつけることを考えます。
うーん、これはIDLと違って名前の文字列に特徴がないから抽出するのは難しいですね。
非効率ですが、網羅的に辞書にあるかを検索することにしますか。
等幅文字数でレイアウトを組んだのがここにきて足かせになっていますね。
うーん、メソッドは空白から始まり「(」で終わっているようです。
属性は空白で始まり空白で終わっています。
libreoffice59.py
結局HTMLタグも指標に使ってうまく抽出できました。
リンクの青字ばかりになって却ってみにくくなりましたね。
メソッドと属性の解説を挿入する
さて、これが大問題です。
と、思ったのですがツリーをつくるときにあとで置換できるフラグを入れておけばよい、と思いつきました。
でもよく考えたら新たに行を挿入するのなら、字数のレイアウトは考えなくてよいのでlst_bodyを作成するときに追加しようと思います。
libreoffice59.py
これで出力したい情報をだせるコードができました。
辞書のほうで修正が必要な部分をいくつか発見しました。
0 件のコメント:
コメントを投稿