利用者:Ochaochaocha3/Hiki2MediaWiki for SRW Wiki

提供: スーパーロボット大戦Wiki
ナビゲーションに移動 検索に移動

「Hiki2MediaWiki for SRW Wiki」は、記事移植の際に必要なHiki書式からMediaWiki書式への変換を行うコンバータです。JavaScriptを用いて、旧wikiの記事「Hiki書式からMediawiki書式への変換」に従った変換を自動で行います。記事移植の効率化に役立てていただければ幸いです。

使い方などについての質問はトークページにてお願いいたします。

URI

http://www.li-sa.net/ocha3/hiki2mw/

動作環境

Firefox、Google Chrome、Safariの最新版、Internet Explorer 9 以上を推奨します。また、JavaScriptを有効にしてください。

Internet Explorer 7 以下ではレイアウトが乱れるようです。

制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。

機能・特徴

  • 以下の要素のHiki書式からMediaWiki書式への変換
    • 見出し
    • 定義リスト(:用語:説明)
    • URIリンク
    • パイプ付きリンク([[A|B]])
    • 取消線(== 〜 ==)
    • 強制改行({{br}})
    • Amazonリンク
    • 整形済みテキスト(行頭がスペースまたはタブ。<<< 〜 >>> には現在は未対応)
    • 引用(行頭が "")
    • コメント行
  • 不要要素の削除
    • {{toc}}など
  • 見出しレベル調整
    • 見出しレベルを順次下降するように調整
  • リンク解析
    • リンク切れが生じやすい「英字名ページへのリンク」、「WikiName」、「括弧を含む名前のページへのリンク」の一覧表示
    • 有効/無効設定可
  • ブラウザのJavaScriptエンジンを使用する、クライアント側での完全実行
    • 入力されたソースは、ネットワーク上には一切送信されない

更新履歴

  • 2012年7月31日(Ver. 2.0.2)
    • 見出しレベル調整のアルゴリズムを変更。
      • これに伴い、「先頭の見出し1(!)を削除する」と「見出しレベルを調整する」のオプション設定は不可能になりました。
    • URIリンクを含む定義リストの変換に関するバグ(再発)を修正。
  • 2012年7月7日(Ver. 2.0.1)
    • 表の行末に空列を生成しないよう修正。
    • コメントアウトされた見出しも(コメントアウトされたまま)変換するよう変更。
  • 2012年6月29日(Ver. 2.0)
    • リンク解析機能を追加。
      • リンク切れが生じやすい「英字名ページへのリンク」、「WikiName」、「括弧を含む名前のページへのリンク」を一覧表示します(有効/無効設定可)。
      • 英字名ページへのリンク、WikiNameには旧wiki上のページへのリンクが設定されるため、リンク先を1クリックで確認することができます。
    • 対応書式を追加。
      • 整形済みテキスト(行頭がスペースまたはタブ。<<< 〜 >>> には現在は未対応)
      • 取消線(== 〜 ==)
      • 引用(行頭が "")
    • 動作に関する設定を保存する機能を追加。
      • Cookieを使用します。
    • MediaWiki書式のソースの整形機能を改良。
      • 整形済みテキスト、見出し、引用、表の前に空行を入れる(ソースの可読性の向上)。
      • コメント行の前の空行を除く(MediaWiki上での余分な空白の表示を防ぐ)。
      • 見出し内の全角括弧の前の余分な空白を除く。
  • 2012年6月21日(Ver. 1.3.3)
    • UIを変更。
  • 2012年6月21日(Ver. 1.3.2)
    • MediaWiki書式の見出しのレベルを2以下にするよう修正。
  • 2012年6月17日(Ver. 1.3.1)
    • 匿名URIリンクの変換を正しく行うよう修正。
    • MediaWiki書式のソースをフォーカス時に選択状態にする機能を追加。
    • リファクタリング。変換部と制御部を独立化。
  • 2012年6月7日(Ver. 1.3)
    • 表の変換に対応。
  • 2012年5月30日(Ver. 1.2.2)
    • 強制改行({{br}})が正しく変換されない点を修正。
  • 2012年5月29日(Ver. 1.2.1)
    • UIを改良。
    • 配列の処理方法を改良。
  • 2012年5月27日(Ver. 1.2)
    • URIリンクの変換に対応。
    • URIリンクを含む定義リストの変換に関するバグを修正。
    • 見出しレベルの調整機能を改良。
  • 2012年5月17日(Ver. 1.1)
    • Amazonリンクの変換に関するバグを修正。
    • アップロード場所を変更。直接使用可能に。
    • 現在未対応の、表の書式変換を行うプログラムを書いています。オーソドックスな見出し行+通常行の表の変換は可能になりました。今後、見出し列や、行・列の結合に対応させたいと考えているところです。
  • 2012年5月7日(Ver. 1.0)
    • 初公開。

技術的メモ

見出しレベル調整の速度

ランダムなレベルの見出し100,000個の変換に要した時間。表記がない場合、単位はms。

環境はCore2 Quad Q9550、メモリ4 GB、Ubuntu 12.04 x64、Firefox 14.0.1。

investigateHeadings()(ver. 2.0.1以前)

関数 / # 1 2 3
全体時間 1495 1495 1485
l153: hasDescendants() 59 59 59
hasDescendants() の回数(回) 244471 244567 244606
l156: hasChildren() 26 26 26
l160: newHeading() 167 169 177
l169: investigateHeadings() 198 198 198
l233: adjustHeadingLevel() 79 80 78
l281: convertHeadings() 276 276 274
l494: convertLineByLine() 1231 1226 1236

処理速度は実用的だが、hasDescendants() の呼び出し回数が無駄に多い。

幅優先探索(リスト構造)(ver. 2.0.2試作)

関数 / # 1 2 3
全体時間 7022 7026 7166
l155: appendTo() 5422 5360 5518
l173: newHeading() 445 458 461
l190: appendHeading() 5491 5432 5586
l229: headingsBFS() 436 434 436
l469: convertLineByLine 6764 6718 6878

アルゴリズムに無駄がなくなったが、非常に遅くなった。JavaScriptではオブジェクトメンバへのアクセスが遅いことが原因?

幅優先探索(配列)(ver. 2.0.2)

関数 / # 1 2 3
全体時間 1479 1379 1442
l154: appendTo() 59 56 57
l164: newHeading() 398 411 427
l183: appendHeading() 130 125 124
l222: headingsBFS() 278 258 258
l467: convertLineByLine() 1178 1149 1182

同じアルゴリズムだが、従来のinvestigateHeadings()より若干速いくらいまで速度が上がった。特にappendTo()に要する時間が劇的に短くなった。配列への追加は非常に高速。