1行目: |
1行目: |
− | 「Hiki2MediaWiki for SRW Wiki」は、記事移植の際に必要なHiki書式からMediaWiki書式への変換を行うコンバータです。JavaScriptを用いて、旧wikiの記事「[http://hiki.cre.jp/SRW/?ConvertingHikiFormatToMediawikiFormat Hiki書式からMediawiki書式への変換]」に従った変換を自動で行います。記事移植の効率化に役立てていただければ幸いです。 | + | 「Hiki2MediaWiki for SRW Wiki」は、記事移植の際に必要な Hiki 書式からMediaWiki書式への変換を行うコンバータです。JavaScriptを用いて、旧wikiの記事「[http://hiki.cre.jp/SRW/?ConvertingHikiFormatToMediawikiFormat Hiki書式からMediawiki書式への変換]」に従った変換を自動で行います。記事移植の効率化に役立てていただければ幸いです。 |
| | | |
| 使い方などについての質問は[[利用者・トーク:Ochaochaocha3|トークページ]]にてお願いいたします。 | | 使い方などについての質問は[[利用者・トーク:Ochaochaocha3|トークページ]]にてお願いいたします。 |
| | | |
| == URI == | | == URI == |
− | http://www.li-sa.net/ocha3/hiki2mw/ | + | ;コンバータ |
| + | :http://www.li-sa.jp/ocha3/hiki2mw/srw/ |
| + | ;GitHubレポジトリ |
| + | :https://github.com/ochaochaocha3/hiki2mw-srw |
| | | |
| == 動作環境 == | | == 動作環境 == |
− | Firefox、Google Chrome、Safariの最新版、Internet Explorer 8以上を推奨します。また、JavaScriptを有効にしてください。 | + | Firefox、Google Chrome、Safariの最新版、Internet Explorer 9 以上を推奨します。また、JavaScriptを有効にしてください。 |
| | | |
− | Internet Explorer 7以下ではレイアウトが乱れるようです。 | + | Internet Explorer 7 以下ではレイアウトが乱れるようです。 |
| | | |
| 制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。 | | 制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。 |
| | | |
| == 機能・特徴 == | | == 機能・特徴 == |
− | *以下の要素のHiki書式からMediaWiki書式への変換
| + | [https://github.com/ochaochaocha3/hiki2mw-srw GitHubレポジトリ]のREADMEをご参照ください。 |
− | **見出し
| |
− | **表
| |
− | **定義リスト(:用語:説明)
| |
− | **URIリンク
| |
− | **別名リンク(<nowiki>[[A|B]]</nowiki>)
| |
− | **強制改行(<nowiki>{{br}}</nowiki>)
| |
− | **Amazonリンク
| |
− | **コメント行
| |
− | *不要要素の削除
| |
− | **<nowiki>{{toc}}</nowiki>など
| |
− | *見出しレベルを順次下降するように調整する機能
| |
− | **有効/無効設定可
| |
− | *ブラウザのJavaScriptエンジンを使用する、クライアント側での完全実行
| |
− | **入力されたソースは、ネットワーク上には一切送信されない
| |
| | | |
| == 更新履歴 == | | == 更新履歴 == |
− | *2012年6月17日(Ver. 1.3.1)
| + | 最新版は '''ver. 2.2.3''' (2013年3月10日更新)です。 |
− | **匿名URIリンクの変換を正しく行うよう修正。
| + | |
− | **MediaWiki書式のソースをフォーカス時に選択状態にする機能を追加。
| + | 詳細は、コンバータ付属の[http://www.li-sa.jp/ocha3/hiki2mw/changelog.html 更新履歴ページ]をご参照ください。 |
− | **リファクタリング。変換部と制御部を独立化。
| + | |
− | *2012年6月7日(Ver. 1.3)
| + | == 技術的メモ == |
− | **表の変換に対応。
| + | |
− | *2012年5月30日(Ver. 1.2.2)
| + | === 見出しレベル調整の速度 === |
− | **強制改行(<nowiki>{{br}}</nowiki>)が正しく変換されない点を修正。
| + | ランダムなレベルの見出し100,000個の変換に要した時間を、Firebug 1.10.0のプロファイル機能を用いて測定した。表記がない場合、単位はms。 |
− | *2012年5月29日(Ver. 1.2.1)
| + | |
− | **UIを改良。
| + | 環境はCore2 Quad Q9550、メモリ4 GB、Ubuntu 12.04 x64、Firefox 14.0.1。 |
− | **配列の処理方法を改良。
| + | |
− | *2012年5月27日(Ver. 1.2)
| + | ==== <code>investigateHeadings()</code>(ver. 2.0.1以前) ==== |
− | **URIリンクの変換に対応。
| + | |
− | **URIリンクを含む定義リストの変換に関するバグを修正。
| + | {| class="wikitable" |
− | **見出しレベルの調整機能を改良。
| + | |- |
− | *2012年5月17日(Ver. 1.1)
| + | ! 関数 / # !! 1 !! 2 !! 3 |
− | **Amazonリンクの変換に関するバグを修正。
| + | |- |
− | **アップロード場所を変更。直接使用可能に。
| + | ! 全体時間 |
− | **現在未対応の、表の書式変換を行うプログラムを書いています。オーソドックスな見出し行+通常行の表の変換は可能になりました。今後、見出し列や、行・列の結合に対応させたいと考えているところです。
| + | | style="text-align: right" | 1495 || style="text-align: right" | 1495 || style="text-align: right" | 1485 |
− | *2012年5月7日(Ver. 1.0)
| + | |- |
− | **初公開。
| + | ! l153: <code>hasDescendants()</code> |
| + | | style="text-align: right" | 59 || style="text-align: right" | 59 || style="text-align: right" | 59 |
| + | |- |
| + | ! <code>hasDescendants()</code> の回数/回 |
| + | | style="text-align: right" | 244471 || style="text-align: right" | 244567 || style="text-align: right" | 244606 |
| + | |- |
| + | ! l156: <code>hasChildren()</code> |
| + | | style="text-align: right" | 26 || style="text-align: right" | 26 || style="text-align: right" | 26 |
| + | |- |
| + | ! l160: <code>newHeading()</code> |
| + | | style="text-align: right" | 167 || style="text-align: right" | 169 || style="text-align: right" | 177 |
| + | |- |
| + | ! l169: <code>investigateHeadings()</code> |
| + | | style="text-align: right" | 198 || style="text-align: right" | 198 || style="text-align: right" | 198 |
| + | |- |
| + | ! l233: <code>adjustHeadingLevel()</code> |
| + | | style="text-align: right" | 79 || style="text-align: right" | 80 || style="text-align: right" | 78 |
| + | |- |
| + | ! l281: <code>convertHeadings()</code> |
| + | | style="text-align: right" | 276 || style="text-align: right" | 276 || style="text-align: right" | 274 |
| + | |- |
| + | ! l494: <code>convertLineByLine()</code> |
| + | | style="text-align: right" | 1231 || style="text-align: right" | 1226 || style="text-align: right" | 1236 |
| + | |} |
| + | |
| + | 処理速度は実用的だが、<code>hasDescendants()</code> の呼び出し回数が無駄に多い。 |
| + | |
| + | ==== 幅優先探索(リスト構造)(ver. 2.0.2試作) ==== |
| + | |
| + | {| class="wikitable" |
| + | |- |
| + | ! 関数 / # !! 1 !! 2 !! 3 |
| + | |- |
| + | ! 全体時間 |
| + | | style="text-align: right" | 7022 || style="text-align: right" | 7026 || style="text-align: right" | 7166 |
| + | |- |
| + | ! l155: <code>appendTo()</code> |
| + | | style="text-align: right" | 5422 || style="text-align: right" | 5360 || style="text-align: right" | 5518 |
| + | |- |
| + | ! l173: <code>newHeading()</code> |
| + | | style="text-align: right" | 445 || style="text-align: right" | 458 || style="text-align: right" | 461 |
| + | |- |
| + | ! l190: <code>appendHeading()</code> |
| + | | style="text-align: right" | 5491 || style="text-align: right" | 5432 || style="text-align: right" | 5586 |
| + | |- |
| + | ! l229: <code>headingsBFS()</code> |
| + | | style="text-align: right" | 436 || style="text-align: right" | 434 || style="text-align: right" | 436 |
| + | |- |
| + | ! l469: <code>convertLineByLine()</code> |
| + | | style="text-align: right" | 6764 || style="text-align: right" | 6718 || style="text-align: right" | 6878 |
| + | |} |
| + | |
| + | アルゴリズムに無駄がなくなったが、非常に遅くなった。JavaScriptではオブジェクトメンバへのアクセスが遅いことが原因? |
| + | |
| + | ==== 幅優先探索(配列)(ver. 2.0.2) ==== |
| + | |
| + | {| class="wikitable" |
| + | |- |
| + | ! 関数 / # !! 1 !! 2 !! 3 |
| + | |- |
| + | ! 全体時間 |
| + | | style="text-align: right" | 1479 || style="text-align: right" | 1379 || style="text-align: right" | 1442 |
| + | |- |
| + | ! l154: <code>appendTo()</code> |
| + | | style="text-align: right" | 59 || style="text-align: right" | 56 || style="text-align: right" | 57 |
| + | |- |
| + | ! l164: <code>newHeading()</code> |
| + | | style="text-align: right" | 398 || style="text-align: right" | 411 || style="text-align: right" | 427 |
| + | |- |
| + | ! l183: <code>appendHeading()</code> |
| + | | style="text-align: right" | 130 || style="text-align: right" | 125 || style="text-align: right" | 124 |
| + | |- |
| + | ! l222: <code>headingsBFS()</code> |
| + | | style="text-align: right" | 278 || style="text-align: right" | 258 || style="text-align: right" | 258 |
| + | |- |
| + | ! l467: <code>convertLineByLine()</code> |
| + | | style="text-align: right" | 1178 || style="text-align: right" | 1149 || style="text-align: right" | 1182 |
| + | |} |
| + | |
| + | 同じアルゴリズムだが、従来の <code>investigateHeadings()</code> より若干速いくらいまで速度が上がった。特に <code>appendTo()</code> に要する時間が劇的に短くなった。配列への追加は非常に高速。 |
| + | |
| + | ==== 幅優先探索(配列、関数呼び出しなし)(ver. 2.0.3) ==== |
| + | |
| + | 変更点は、<code>headingsBFS()</code> 中にコールバック関数の処理を直接記述し、関数呼び出しをなくしたことのみ。 |
| + | |
| + | {| class="wikitable" |
| + | |- |
| + | ! 関数 / # !! 1 !! 2 !! 3 |
| + | |- |
| + | ! 全体時間 |
| + | | style="text-align: right" | 1282 || style="text-align: right" | 1377 || style="text-align: right" | 1342 |
| + | |- |
| + | ! l149: <code>appendTo()</code> |
| + | | style="text-align: right" | 59 || style="text-align: right" | 58 || style="text-align: right" | 55 |
| + | |- |
| + | ! l156: <code>newHeading()</code> |
| + | | style="text-align: right" | 431 || style="text-align: right" | 465 || style="text-align: right" | 476 |
| + | |- |
| + | ! l174: <code>appendHeading()</code> |
| + | | style="text-align: right" | 124 || style="text-align: right" | 123 || style="text-align: right" | 120 |
| + | |- |
| + | ! l195: <code>headingsBFS()</code> |
| + | | style="text-align: right" | 120 || style="text-align: right" | 125 || style="text-align: right" | 123 |
| + | |- |
| + | ! l459: <code>convertLineByLine()</code> |
| + | | style="text-align: right" | 1047 || style="text-align: right" | 1078 || style="text-align: right" | 1086 |
| + | |} |
| + | |
| + | 関数呼び出しのオーバーヘッドがなくなり、処理が速くなった。 |