ただいま整理中。
Blogspot (Blogger?) に移行しました!
タイムライン | 技術系 | TIPS | ライフハック系 | その他 | 左記カテゴリ以外は、右の欄の下のタグクラウドへ!
.

2014年03月14日

PukiWiki からのデータ移行のシンプルな方法
カテゴリ: 技術 | タグ: 変換 PukiWiki markdown 移行

※[ブックマーク]ボタンの中に delicious, reddit, digg, Google+(G+) のボタンもあります。
-->

PukiWiki から Markdown への変換

昨年 (2013年)、XP で運用していたマシンが壊れまして。それ以降、XP上のローカルサーバで長年運用してきた PukiWiki から、他のシステムにリプレイスすることを考えてました。

Wiki 以外の方法もなにかないかと、他の方法の模索をしてきたのだけど、やっぱり、Wiki はいいなと思います。

また一方で、ここ最近は Markdown も便利だと感じてました。Markdown そのものは、Wiki (CMS) ではなく、単なるドキュメントの書式でしかないのだけれども、最近は、JavaScript で書かれた Markdown レンダラーがある。こいつを使えば、Markdown でローカル Wiki みたいなことはできるんじゃないか・・ということを考えた。

で、とりあえず PukiWiki のデータを、なんとか他のシステムに移しやすい形にしたいなと。見てみたところ、

  • PukiWiki のデータはテキストファイル (xxxx.txt) で、ひとつのディレクトリにフラットに格納される (pukiwiki/wiki/)
  • ファイル名は、EUC コード (16進数) をそのまま文字列にしたもの。スラッシュなんかの記号を含んだものになる。
  • ファイルの中身は、EUC-JP で、PukiWiki形式で記述されている。(これは、設定にもよるのかも)

ということがわかった。

PukiWiki のデータを OSX 上の HFS+ に展開する

変換するに手っ取り早い方法は、テキストファイルで表現されているデータ構造とデータを、ファイルシステム上に展開してしまう、というものです。

今使っているのは Mac なので、以下のことを考えました:

  • 元のファイル名は見にくいので、デコードして、UTF-8形式で通常の文字列として表す
    • HFS+で使用できない特殊な記号が使用されていた場合は、必要に応じてなんらかのエスケープ処理をする
    • ただし、半角スラッシュの場合は、ディレクトリを掘る (HFS+ の仕様と上記仕様からくる制限)
  • ファイルの内容は、EUC-JP から UTF-8 に、漢字コードを変換する
  • PukiWiki 記法から、Markdown か MediaWiki の形式にする
  • 検索システムは、grep か mdfind を使えばいい

ということを、考えました。

ディレクトリを掘るのは、やっぱフラットに数千ファイルあると、みるのが辛いからです。。。

スクリプト

既存のスクリプトがないか、けっこう探してみたのですが、どうも見当たらない……ぜったい誰か作ってるはずなのに……。まぁ、PukiWiki 自体がもう10年近くリリース止まってますしね。

仕方ない。ということで、Ruby で以下のようなものを作りました:

  • pw2hfs.rb (変換スクリプト本体)
  • nf-pw2md.rb (PukiWiki形式→Markdown形式変換フィルタ)

はじめは MediaWiki 形式にしようかと思いましたが、めんどくさいのでやめました。PukiWiki->Markdown変換は、適当です (一行一行の正規表現マッチングと置換)。あと、スクリプト内で、OSX に入っている iconv コマンドを使ってます。

使い方は、2つのスクリプトを、pukiwiki のデータの格納してあるディレクトリの一つ上において、結果出力用のディレクトリ dst/ を作ってから、pw2hfs.rb を実行します。しばらく待つと、dst/ 以下に、変換したものができます。

この結果と、Invisible.js かなにかを、組み合わせようと思ってます。Wiki の記法 (特に、Markdown 中での、ページ名のリンク ―スクウェア・ブラケットで2重に囲むアレ) 対応は、JavaScript 側でやったほうがいいかな……。

それでは。




《スポンサードリンク》



posted by もふもふ at 06:10 | ロンドン | Comment(0) | TrackBack(0) | カテゴリ: 技術 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
トラックバックURLは,"Trackback(x)"のリンクを押すと表示されます.