• このエントリーをはてなブックマークに追加

ss-1330067909

はじめに

ちょっと思い立って,Textile記法 による記述で Wiki っぽく記録するためのツールを Amon2 をベースに4時間ほどで作ってみました.

「Simply Textiled Wiki」ということで,「SiTeWiki」などとテキトーにつけてみました.

主な仕様とか機能とか

  • Amon2 (Basic flavor) & Bootstrap ベース
  • Textile記法 → HTML な処理は Text::Textile モジュールで
  • 1 ページ 1 つのテキストファイル(.textile 拡張子がつきます)
  • データのロード,編集時のプレビュー,保存の処理は Ajax的に
  • not single-page app

これくらいですかね.

スタートガイド

% cd somewhere
% git clone https://issm@github.com/issm/SiTeWiki.git

...などしたディレクトリ下で

% ./bin/http_server start

...とすれば起動します(中で start_server コマンド を使っています).普通に plackup でも問題ありません.

そして,待ち受けているポート番号(デフォルトは 5000)をつけてブラウザで http://localhost:5000/ とかでアクセスします.

以上です.

スクリーンショットいくつか

通常時と編集時

通常時.Bootstrapベースなので,最初からスタイルが十分にあたっています:

ss-1330067762

編集時のテキストエリア.Textile記法で書きまくります:

ss-1330067909

各種ボタン


通常時は「Edit」ボタンが出ています.これをクリックすると編集開始です:

ss-1330067889

編集時.「Preview」ボタンで,現在の内容をプレビューすることができます:

ss-1330067955

プレビュー時.「Edit」ボタンで編集に戻ります:

ss-1330068010

新規のページ

対応するデータファイルが存在しない場合,新規ページ作成のため,初めから編集モードとなります.「Save」して初めてデータファイルも作成されます:

ss-1330068086

データファイルの情報

保存される・されている場所です:

ss-1330068145

もちろん,エディタで編集してもOKです:

ss-1330068476

コンフィグについて

Amon2のデフォルトから少しだけ追加しています.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use File::Spec;
use File::Basename qw(dirname);
my $basedir = File::Spec->rel2abs(File::Spec->catdir(dirname(__FILE__), '..'));
my $dbpath;
if ( -d '/home/dotcloud/') {
    $dbpath = "/home/dotcloud/development.db";
} else {
    $dbpath = File::Spec->catfile($basedir, 'db', 'development.db');
}
+{
    editable => 1,
 
    basedir => $basedir,
    datadir => undef,
 
 
    'DBI' => [
        "dbi:SQLite:dbname=$dbpath",
        '',
        '',
        +{
            sqlite_unicode => 1,
        }
    ],
 
    'Text::Xslate' => {
        syntax => 'Kolon',
        module => [
            'Text::Xslate::Bridge::Star',
        ],
    },
};

editable

デフォルトは 1 ですが,これを 0 とすることで,ブラウザ上での編集を行えないようにします.(といっても,「Edit」ボタンを非表示にしているだけですが.)

datadir

デフォルト値は undef で,この場合 $basedir/data 下にデータファイルが置かれます.

ここに特定のディレクトリを指定できるので,好きなところにデータを置くことができます.Dropbox以下を指定することで,遠隔での更新もできますね.変更履歴も残るし!

おわりに

以上,Textile記法で Wiki っぽく記録するためのツール「SiTeWiki」を作ってみたお話でした.

なにやら世の中は Markdown 記法 が流行っているみたいですが,私はしばらく Textile 記法で進んでみたいと思いますw