TOP
$Id: index.html,v 1.24 2003/09/05 19:14:58 not Exp $
nDiary
- Web日記作成支援スクリプト -
目次
- 概要
- 動作環境
- ライセンス
- 配布ファイル
- インストール
- 設定
- ndiary.conf
- 雛形ファイル
- Plug-in
- トピック一覧
- 日記の作成・運用
- 日記の記述
- フィルタ
- html への変換
- リンク
- 履歴
- ダウンロード
nDiary は、Web上で日記を書く際に、各日付毎に定型的なタグをつけたり、過去の日記を月別のファイルへコピーするなどの面倒で、且つ、まちがいを起こしやすいルーチンワークを自動化することにより、日記執筆の支援をおこなうスクリプトです。
1日1つの日記を書いたテキストファイルを用意すると、タグをつけ、それらを連結して、月別のファイルと最近数日分の日記をまとめたファイルを静的に作成します。
基本コンセプトとして、普通のテキストファイルとして読んでもなるべく違和感のないファイルを解析して html にするというものがあります。自分自身が手軽に Web日記を書くことを目的として作成したため、高機能なものは目指しておらず、ちょっとだけ楽をしようという程度のものです。
現在以下のような機能が実装されています
- 最近の日記を指定日数分記載したファイルと、月毎にまとめたファイルの自動作成。
- 段落毎のアンカーの自動作成
- トピック一覧の作成
- Plug-in による機能の追加
- Filter による日記本文に対しての置換
Ruby version 1.6 以降
- ライセンスに関する事項は Ruby と同じものとします。
- Script/
-
- diary
- スクリプト起動ファイル
- ndiary-lib.rb
- スクリプト本体
- sample.ndiary.conf
- 設定ファイルのサンプル
- lib/
- nDiary の使用するライブラリ
- plugin/
- 各種 Plug-in
- filter/
- 各種 Filter
index.html
簡単な説明(このファイル)
product.css
index.html 用のスタイルシート
log/
日記原稿のサンプル
Sample/
雛形ファイルのサンプル
misc/
その他の関連ファイル
nDiary は Ruby というスクリプト言語で記述されています。そのため、使用するには Ruby が稼働する環境が必要となります。
Ruby は、Ruby公式ホームページから入手できます。また、Windowsユーザの方で ruby を nDiary以外に使用しない、あるいは、ruby のインストールが難しいという方向けに実行ファイルを用意しています。
はじめて nDiary を導入される方は、nDiaryUserWiki や有里さんの nDiary導入用覚え書き が大変参考になりますので、ご一読をおすすめします。
ndiary.conf の設定を各自の環境に合わせて書き換えます。
ndiary.conf は、sample.ndiary.conf を ndiary.conf にリネームして使用してください。
最低限設定が必要な項目は、以下のものです。
- LOG_DIRECTORY
- 日記の原稿が存在するディレクトリ
- OUTPUT_DIRECTORY
- htmlファイルを出力するディレクトリ
LOG_DIRECTORY、OUTPUT_DIRECTORY に設定したディレクトリは忘れずに作成しておきましょう。それ以外の項目については、ndiary.conf のコメントを見て適宜書き換えてください。
ndiary.conf は diary、ndiary-lib.rb と同じディレクトリに作成する必要があります。ただし、~/.ndiaryrc が存在する場合は、そちらが優先されます。
雛形ファイルは、日記のベースとなる html ファイルで、雛形ファイル内のコメントタグが nDiary により置換され出力されます。
最近の日記を数日分まとめたファイルと月別のファイルの 2種類の雛形ファイルを用意する必要があります。
<!--body--> というコメントは、日記本文に置換されます。最低限、これだけは雛形ファイル内に含めるようにしてください。
<!--plug=プラグイン名?opt1=val1--> というコメントは、後述する Plug-in がによって置換された内容が挿入されます。
雛形ファイルに
<!--plug=プラグイン名?opt1=val1?opt2=val2-->
というコメントタグを埋め込むことにより、Plug-in を起動します。Plug-in は、埋め込まれたコメントタグの部分を別の文字列に置き換えたり、別のファイルを書き換えたりなど様々な動作を行います。各プラグインの機能は、それぞれのファイルの冒頭ののコメント部分を参照してください。
動作としては、plug= で指定されたプラグイン名に拡張子 .rb を付与した ruby script を読み込み、実行します。その際、「?」以降がオプションとして Plug-in に渡されます。
例えば、
<!--plug=monthindex?title=過去の日記?style=simple-->
というコメントを埋め込むと、monthindex.rb が読み込まれ、オプションとして、「title=過去の日記」「style=simple」が Plug-in に渡されます。
Plug-in は script/plugin ディレクトリに置いておきます。
ndiary.conf に
という行を設定すると、後述する「トピック」を抽出してまとめた「トピック一覧」を記載した html を作成します。
上記のようにファイル名を指定すると、そのファイル名で「トピック一覧」を作成します。
LOG_DIRECTORY で指定したディレクトリにそのファイル名で雛形ファイルを用意するとOUTPUT_DIRECTORY で指定したディレクトリに出力します。
「トピック一覧」は、TOPIC = という行を複数記述することにより、その数だけ作成することができます。その際、ファイル名の後ろにタブで区切って抽出するトピックの条件を指定することもできます。
TOPIC = topics.html
TOPIC = shopping.html 買
TOPIC = books.html 読書|本
この例では、全トピックを記載した topics.html 、「買」という文字を含んだトピックを抽出した shopping.html、「読書」または「本」という文字列を含んだトピックを抽出した books.html を作成します。また、正規表現に関する知識がある場合は、より細かい指定ができます。その方法については ndiary.conf の末尾のコメントを参照して下さい。
ndiary.conf の LOG_DIRECTORY で設定したディレクトリか、もしくは、それより下層のディレクトリに yyyymmdd.diary という日記の原稿となるファイル(以下 diaryファイル)を作成します。yyyyは年、mmは月、ddは日です。つまりは、1999年4月18日の日記は、19990418.diary というファイルになります。diaryファイルは ShiftJIS、EUC-JP、JIS の文字コードで記述でき混在も出来ます。
再帰的に下層のディレクトリを検索するので、年や月ごとにディレクトリを分けることもできます。
diaryファイルは、以下のように解析され、html に変換されます。
空行で区切られた文章を一つのブロックとして、そのブロックの形態に応じてタグをつけていきます。文章の中でのタグの使用は自由ですが、ブロック毎に自動的にタグが付加されますので、自分の思った通りの表示がされない場合があります。その場合は、「<<」を使ってください。
各ブロックは次のような順序で評価され、html に変換されます。こちらに作者が実際に記述しているdiaryファイルがありますので、参考にしてください。
- ブロックの1行目が「<<」の場合は、一切加工ををおこなわないので、自由 にタグを書くことができます。
- ブロックの1行目が「Code:」の場合は、プログラムなどのソースファイルを表示するのに適したタグ(<div class="code"><pre><tt><code>)を付加します。また、Code: は以下のオプションを指定することができます。
- -q : < > & を < > & に変換
- -tn : タブをスペースに変換する際、タブ幅を n文字として変換
- ブロックの1行目が「Quote:」の場合は、<blockquote class="quote"> を付加します。Quote: は以下のオプションを指定することができます。
- -q : < > & を < > & に変換
- -tn : タブをスペースに変換する際、タブ幅を n文字として変換
- -l : ndiary.conf の LF2BR の設定に関わらず、改行を<br>に変換する
- -l- : ndiary.conf の LF2BR の設定に関わらず、改行を<br>に変換しない
- ブロック内の全ての行がタブでインデントされている場合は <blockquote> を付加します。
- 行頭がタブで始まる行が含まれているブロックは、 <dl><dt><dd> を使った定義リストに変換します。
- トピック記号(見出し。特定の文字(○●▽▼□■…。追加、変更可能)で始まり、且つ、1行で終わっているブロック)には、<h5> を付加してアンカーをつけます。
- ブロックが「・」または「+」で始まる場合は、 <ul><li> を使った順不同リストに変換します。
- それ以外の場合は、<p> で囲みます。PARAGRAPH_ANCHOR = true の場合には HEADER_LASTEST、HEADER_PASTDAYS で指定した文字を行頭に追加しその文字にアンカーをつけます。
作成した日記本文に対して置換を行う仕組みとしてフィルタが用意されています。現在、直接タグを書かなくてもリンク、強調、ルビなどを使用できるものや ISBN を記述することによって各オンライン書店へのリンクを自動的に作成するものなどが用意されています。
使用するためには ndiary.conf に
FILTER = 'inlinedecorate'
FILTER = 'bookstore'
というように使用するフィルタの数だけ記入します。各フィルタの機能、使用法については script/filter ディレクトリの各フィルタファイルを参照してください。
diaryファイルを作成したら、html への変換を行うため、スクリプトを起動します。このときオプションの指定により動作が変わります。
- >ruby diary
- 最近数日分の日記をまとめたファイルとその日記が含まれる月のファイルをを作成します。
通常の運用ではこの形式で十分です。
- >ruby diary yyyymm
- yyyy年mm月の日記をまとめたファイルを作成します。
過去の日記に追記、修正した場合に使用します。
(使用例) >ruby diary 200004 2000年4月の日記(200004.html)を作成します。
- >ruby diary yyyy
- yyyy年の各月の日記をまとめたファイルを作成します。
(使用例) >ruby diary 2000 2000年1月から12月の日記(200001.html〜200012.html)を作成します。
- >ruby diary yyyymm-YYYYMM
- yyyy年mm月からYYYY年MM月の各月の日記をまとめたファイルを作成します。
(使用例) >ruby diary 200004-200105 2000年4月から2001年5月の日記(200004.html〜200105.html)を作成します。
- >ruby diary all
- diaryファイル が存在する全ての月のファイルと最近数日分をまとめたファイルを作成します。
また、第一引数として 拡張子が .conf なファイルを指定するとそのファイルを ndiary.conf の代わりの設定ファイルとして使用してスクリプトを実行します。
- >ruby diary test.conf
- test.conf を設定ファイルとして一番最近日記が書かれた月のファイルと最近数日分ををまとめたファイルを作成します。
また、ハイフンで始まる文字列を指定した場合は ndiary.conf の設定内容を一時的に上書きして指定できます。= がついていたらその値を設定、それ以外の場合は true を設定します。
- >ruby diary -MAX_DIARY=5
- ndiary.conf の設定に関わらず MAX_DIARY=5 という設定でファイルを作成します。
- nDiary Antenna
- nDiaryユーザ、および関連ページの更新時刻順表示リンク集
- nDiary導入用覚え書き
- 有里さんによる Windowsユーザ向けの導入覚え書き
- Meadow memo: 日記を書く ― ndiary mode
- 松下さんの Meadow memo 内 nDiary、nDiary-mode解説ページ
- nDiaryUserWiki
- おばたさんによる nDiaryユーザ向け Wiki
- nonsense talk
- 作者の日記。nDiary 関連の話はここにだらだら書いてます。
- version 0.9.3.2 ( 2003-09-06 )
-
- 年別のトピック一覧が複数年分の日記を生成したとき1年分しか生成されないのを修正
- version 0.9.3.1 ( 2003-09-04 )
-
- トピック一覧で USER_PLUGIN_DIRECTORY の指定が効いていなかったのを修正
- version 0.9.3 ( 2003-09-01 )
-
- ruby 1.8 対応
- css に div.oneday を追加
- css の div.topic_body を div.topicbody に変更
- フィルタに最終的に出力する htmlファイルを処理する :HTML を追加
- 脚注機能を filter/footnote.rb に分離
- 最新分作成時に最新分に含まれる全ての月別ファイルも作成するように変更
- コマンドラインオプションで設定ファイルの内容より優先して値を指定できるように
- 月別ファイル名の設定
- トピック一覧での Plug-in の使用
- 最新日記でのトピック逆順表示の設定
- 標準のプラグイン・フィルタディレクトリ以外でプラグイン・フィルタを読み込むディレクトリの指定
- トピックを全文リンクにする(ver. 0.8.0 以前の動作) 設定
- トピック一覧を年毎に分割できるように
- XHTML での出力も選択できるように
- 日付とトピックに使うタグの指定
- その他
- version 0.9.2 ( 2001-02-12 )
-
- フィルタを呼び出すタイミングを増やした(:AFTER_ONEDAY)
- ANCHOR_EACH_TOPIC = false の時、アンカーが間違っていたのを修正
- .diary のほかに .dia も読み込むようにした
- mswin32版で動作するように対応。(ruby自身が対応したみたいなんで意味無し?)
- その他バグ修正
- version 0.9.1 ( 2001-01-02 )
-
- version 0.9.0 ( 2001-01-01 )
-
- フィルタの追加。
- Quote: ブロックの追加
- 月別ファイルを複数に分割できる設定の追加。
- 段落毎のアンカーをトピック毎にカウントする設定の追加。
- version 0.8.0 ( 2000-06-17 )
-
- 設定ファイルの分離。
- 改行を <br> に変換するかどうか設定可に。
- トピック一覧の作成。
- Plug-in 追加。calendar.rb, hina.rb。
- Code: にオプション。
- version 0.7.1 ( 1999-12-12 )
-
- いろいろなバグ潰し。
- スケジュール表示用の Plug-in (schedule.rb)を追加。
- timestr.rb, monthindex.rb の更新。
- version 0.7.0 ( 1999-10-05 )
-
- 月別のファイルのインデックス作成などの機能を本体と分離して Plug-in 形式にした。
- 日記ファイルを置くディレクトリの階層化に対応。
- 日付の形式に日本語も使用可能にした。
- version 0.6.8 ( 1999-08-25 )
-
- version 0.6.7 ( 1999-08-01 )
-
- ruby 1.3.6 に移行したら蟲が出てきたので退治
- 日記ファイルの文字コードを ShiftJIS で決め打ちしていたのを、EUC、JIS でも OK にした
- version 0.6.6
-
- version 0.6.5
-
- 「見出し」の追加
- 「引用」の追加
- 段落毎にアンカーをつけるかどうかの設定の追加
- version 0.6.0
-
- 設定を別ファイルに分離
- スクリプト中で読み込むファイルが存在しないときの例外処理を追加
- ndiary_0.9.3.2.zip
- 最新版
- ndiary_win32_0.0.3.zip
- ruby をインストールしないで nDiary を使用可能にする実行ファイル
- 過去のバージョン
- 次期バージョンの Beta版なんかもたまにあります。
not@cds.ne.jp