インストール方法
HtmlOut_For_TPZ のインストール方法、及び 動作環境 に書いたソフトのインストールを簡単に説明します。
TaskPrize のインストール
TaskPrize は K2さんによるシェアウェアです。 非常に高機能で、使えば使うほど味が出てきます。 まさにデスクトップ情報集約ツールです。
インストールはいたって簡単。 普通にインストールするのみ。難しいことは何もありません。
オブジェクト指向スクリプト言語 Ruby のインストール
オブジェクト指向スクリプト言語 Ruby は、まつもろゆきひろさんが開発したスクリプト言語です。 非常にわかりやすいプログラミング言語です。是非ともチャレンジしてみてくださ い。
さて、この Ruby を Windows マシンにインストールしなければなりません。しか し、どんなパッケージをインストールすればよいのか迷ってしまうかもしれません。 そんなときは
が簡単にインストールできておすすめです。ダウンロードしてクリックするだけで インストールを行ってくれます。ただし、一つだけ設定を行ってください。それは、 path を設定する という作業です。
path の設定方法
以下、Windows Xp の場合を例にします。
- [システムのプロパティー]を開く。(「マイコンピュータ」アイコンを右クリック→[プロパティー]を選択で開きます。
- [詳細設定]タブの[環境変数(N)]を選択する。
- システム環境変数にて Path を選択し[編集]
- ;C:\Lang\Ruby\bin を追記する。*1
*1 インストール先のフォルダを指定すること。Path区切りの「;」を忘れずに。
詳細は下図参照願います。
インストールする Ruby のバージョン
インストールするバージョンは 1.8 以上 を強く推奨します。 おそらく、HtmlOut_For_TPZ は 1.8 以上でないと動作しない可能性があります。 また、1.9 以上でも動作しないでしょう。 *1
*1 1.8 以外の環境がないので試していません。
Rubyインストール後の確認
Ruby をインストールしたら、とりあえず下記のコマンドを実行してみてください。*1
C:\>ruby -v ruby 1.8.6 (2008-03-03 patchlevel 114) [i386-mswin32] C:\>ruby -e 'p $:' ["c:/lang/ruby/lib/ruby/site_ruby/1.8", "c:/lang/ruby/lib/ruby/site_ruby/1.8/i38 6-msvcrt", "c:/lang/ruby/lib/ruby/site_ruby", "c:/lang/ruby/lib/ruby/1.8", "c:/l ang/ruby/lib/ruby/1.8/i386-mswin32", "."]
C:\>ruby -v
このコマンドは、ruby のバージョンを表示します。 1.8 以上を確認してください。
C:\>ruby -e 'p $:'
このコマンドは、ruby のライブラリパス(配列) を表示してくれます。 実は、次に述べる RubyForTPZ の tpz.so ファイル(Ruby の拡張ライブラリ) は、この中のどこかに入れておく必要があります。
*1 実行するのは、[スタート]-[ファイル名を指定して実行]にて '''cmd''' を実行して、その中で確認してください。
RubyForTPZプラグインのインストール
RubyForTPZプラグイン は TaskPrize のプラグインソフトです。同じくK2さんから提供されています。 この RubyForTPZ を用いることで、TaskPrize のほとんどの機能が制御可能となり ます。
インストール方法は
- TaskPrize がインストールされている
- Ruby がインストールされている
この状態で、
- TaskPrize が常駐していないことを確認
- ファイルをプラグインフォルダに放り込む
- 同梱されている tpz.so ファイル(Ruby の拡張ライブラリ)をRuby の ライブラリパスのどこかに入れる
- TaskPrize を再起動
ちなみに私は、以下に入れています。参考まで。
C:\Lang\Ruby\lib\ruby\1.8\i386-mswin32\tpz.so
C:\LANG\RUBY ├─bin ├─exerb-docs │ └─doc ├─lib │ └─ruby │ ├─1.8 │ │ ├─bigdecimal │ │ ├─cgi │ │ │ └─session │ │ ├─date │ │ ├─digest │ │ ├─dl │ │ ├─drb │ │ ├─i386-mswin32 ★ここに tpz.soをインストール │ │ │ ├─digest │ │ │ ├─io │ │ │ ├─racc │ │ │ └─win32 (中略) │ └─site_ruby │ └─1.8 │ ├─amstd │ ├─exerb │ │ ├─resource │ │ └─win32 │ │ ├─const │ │ └─struct │ ├─i386-msvcrt │ │ └─racc │ ├─racc │ ├─rbconfig │ ├─rubygems │ │ ├─commands │ │ ├─digest │ │ ├─ext │ │ └─indexer │ └─vr │ ├─compat │ └─contrib ├─licences 〜 以下略
HtmlOut_For_TPZ は、Ruby スクリプトによって作成されています。 よって、このプラグインが無いと実行できません。
文書作成において幸せになれるツール
以下に、文書作成を行う上で、たぶん幸せになれると思うツールを紹介します。 HtmlOut_For_TPZ そのものは、html 生書きでも問題ありませんが、しかし、 それは自殺行為というもの。 何らかの変換ルールを介したほうが幸せになれでしょう。
以下に紹介するツールは、Ruby で書かれており改造が容易です。
HikiDoc
HikiDoc は、 いわゆる wiki のパーサです。 要は、簡単な文法で、そこそこの html を出力できるツールです。tDiary や Hiki のデフォルトスタイルになっています。
現在、この HikiDic は tDiary と共に日々バージョンアップされており、 微妙な差があります。本パッケージにも同封しておいたのでこれをそのまま使用す ればとりあえず問題ないと思います。
インストール先は、RubyForTPZ の Script フォルダです。
SunokoDoc
SunokoDoc は、 前出 HikiDoc をさらに独自に拡張したものです。 この HtmlOut_For_TPZ では、SunokoDoc がデフォルトです。本パッケージにも同封してあり ます。
なお、この SunokoDoc は、HikiDoc がないと動作しません。 SunokoDoc を使用する場合には必ず HikiDoc もインストールしてください。
インストール先は、RubyForTPZ の Script フォルダです。
HtmlOut_For_TPZのインストール
以下のファイルを TaskPrize の Script フォルダにコピーしてください。
- スクリプト本体 ho.rb
- 同梱している /plugin フォルダ一式
TaskPrizeのツリー構成
以下のような感じのフォルダツリー構成になります。
C:\TOOL\TASKPRIZE2 ├─Default │ └─Plugin ├─Plugin │ ├─b2totpz │ ├─HTMLHelp │ ├─RubyForTpz ★ここに、RubyForTPZ をインストール │ │ ├─Scripts │ │ └─tpz │ │ ├─1.6 │ │ └─1.8 │ └─TpzPlus ├─sent&down ├─Setting ├─tool └─user ├─Plugin └─Script ★ここに ho.rb,hikidoc.rb,SunokoDoc.rb をインストール └─plugin ★同梱の plugin フォルダを全てここにインストール
TaskPrizeの設定
特別な設定は必要ありませんが、以下を設定しておくと幸せになれます。 というか、恐らく設定しないと不幸になります。
- プロジェクトの[プロジェクトオプション]-[フィルタ]に
ID:43 すべて アイデアプロセッサ用(1)
を追加する。 - プロジェクトの[プロジェクトオプション]-[フォルダ]に フィルタタブ番号 2 を設定する。
上記を実行することで、
- プロジェクトフォルダなり、フォルダを選択した場合、それぞれの文書を作成できる。
- プロジェクトを選択した時、全てのアイテムを一覧できる
が可能になり、文書作成が快適になります。詳細は、下図参照願います。
%doc_conf% の仕組み
基本的な考え方
HtmlOut_For_TPZ は、
- 基本スクリプト(ho.rb)
- プロジェクトフォルダにある各種定義文書(%?%)
により成り立っています。
その中で、 %doc_conf% の定義ファイルは、各アイテムにも記述することが可能です。 これは、「このアイテムだけ、ちょっとヘッダやフッタを変更したいなぁ」 ということに対応するためです。その実現方法として、下記にて対応を行っています。
1)現在のアイテムに%doc_conf%がある? →実行 ↓無い 2)自身の親アイテムに%doc_conf%がある? →実行 ↓無い 3)(最上位までさかのぼり) 最終的にプロジェクトフォルダの%doc_conf%ある? →実行 ↓無い 4)何もしない
よって、プロジェクトファイルに %doc_conf% を書いておけば、 以下アイテムにこの設定はそのまま引き継ぐことになります。
また、あるアイテムに記述した %doc_conf% は、他のアイテムには影響を与えません。 それは、上記の判定を、アイテムごとに実施しているからです。 *1
*1 だたし、内部的には新規に作成したパラメータは、そのままの状態として残 っています。よって、後ろの順番にあるアイテムにて記述することも可能ですが、 そのようなものは、なるべくアイテムごとに定義しましょう。
%doc_conf% の設定例
%doc_conf% の設定例
文書内のヘッダ、フッタ定義として
基本的にどんなものでも定義可能ですが、主目的は 「同じことを何度も書きたくない」ということですので、 そのような例として、 HtmlOut_for_TPZ には以下を定義してあります。
- @to_top
- @to_parent
- @to_next
- @to_prev
- @navi
- @doc_header
- @doc_footer
文字変換(url変換)として
htmlを作成していると、同じリンク先等を何度も書く必要がある場合があります。 しかし、htmlのリンク記述は決して書きやすくはありませんし、また、とても面倒です。
ということで、例えば以下の定義を行っておけば、本文は比較的簡単に記述可能です。
@home_url = %Q|<a href="http://sunoko.s33.xrea.com/">sunoko's page</a>| @sunoko_diary = %Q|<a href="http://sunoko.s33.xrea.com/x/d/">分身日記</a>| @sunoko_wiki = %Q|<a href="http://sunoko.s33.xrea.com/x/fswiki">sunoko's wiki</a>| @sunoko_hiki = %Q|<a href="http://sunoko.s33.xrea.com/x/hiki">sunoko's hiki</a>|
すのこのサイト一覧 ・{{@home_url}} ・{{@sunoko_diary}} ・{{@sunoko_wiki}} ・{{@sunoko_hiki}}
すのこのサイト一覧
パラメータの記述方法
パラメータは、最終的には ERB にて展開されます。 よって、本文の作成方法はそれに準ずることになります。
以下、簡単な例を示します。
%doc_conf%の定義
プロジェクトフォルダの %doc_conf% (HtmlOut_for_TPZ(%doc_conf%)) には、以下が定義されています。
@to_top = %Q|<a href="#(#{@ProjectMessageId})">トップへ</a>| @to_parent = %Q|<a href="#(#{@ParentMessageId})">項目トップへ</a>| @to_next = %Q|<a href="#(#{@NextItemMessageId})">次項目へ</a>| @to_prev = %Q|<a href="#(#{@PrevItemMessageId})">前項目へ</a>| @navi = %Q|#{@to_top} #{@to_parent} #{@to_next} #{@to_prev}|
この定義方法は、Rubyの文法そのものです。 というか、Ruby のスクリプトとして読み込んでいるので、 ここで文法が間違っているとスクリプトエラーとなり実行は中止されるので注意してください。
使用方法
この定義されたパラメータを本文中で使用する方法を以下に示します。
例1)
ソース
@to_top → {{@to_top}}
実行結果
@to_top → トップ項目へ
例2)
ソース
@to_top → {{"#{@to_top}"}}
実行結果
@to_top → トップ項目へ
出力されるhtml
上記のごとく例1)と例2)では、その出力は同じです。 { 2つ と } 2つ で囲われたテキストはプラグインとして解釈され、 ERB形式に展開しています。よって、Rubyの文法的に両者は同じになりますから、 出力されるhtmlも同じになります。
<h3>例1)</h3> <p>ソース</p> <pre>@to_top → {{@to_top}}</pre> <hr> <p>実行結果</p> <p>@to_top → <a href="#(2008030319070408254@1214510797115.TPZ)">トップへ</a></p> <h3>例2)</h3> <p>ソース</p> <pre>@to_top → {{"#{@to_top}"}}</pre> <hr> <p>実行結果</p> <p>@to_top → <a href="#(2008030319070408254@1214510797115.TPZ)">トップへ</a></p>
例1)の方が簡単に記述できるのでお勧めです。 ただ、プラグイン中にて、Ruby のソースを記述したい、という場合には、 例2)を使ったほうがよいでしょう。(複数のパラメータを同時に出力するとか。。。)
{{"#{@to_top} #{@to_parent}"}}
%output_file_conf% の仕組み
HtmlOut_For_TPZが出力するファイルは複数に分割可能です。 その仕組みは、各アイテムに %output_file_conf%
プロジェクトのトップフォルダの %output_file_conf% 文書には以下が書かれています。
#出力するファイル名 #出力する htmlファイルのファイル名。パスを指定すればそれなりの場所に保存 #特に指定のない場合は プロジェクトファイルのファイル名+.html #@of_name = "out.html" @of_full = tpz_current_project.project_filename @of_dir = File.dirname( @of_full ) + '\\' #ディレクトリ 最後に \ を忘れずに @of_base = File.basename( @of_full ) @of_ext = File.extname( @of_full ) @of = @of_base.gsub(/#{@of_ext}$/, '') @of_name = @of + '.html' #保存ファイル名
考え方は、%doc_conf%の仕組み と同じです。
ここで重要なのは、@of_nameです。 このパラメータが実際に出力されるファイル名となります。 一応ディレクトリ等も変更できるようになっていますが、 HtmlOut_For_TPZは、基本的には同一ディレクトリに存在するとしていますので、 その動作は保証しません。
ファイルを変更したいフォルダアイテムに
@of_name = @of + '_guidance.html'
のように一行だけ書いておけば、それ以下のアイテムは自動的にそのファイルになります。 上記は 使用方法 アイテムの内容です。
アイテムごとの文書設定例
この文書だけ、header footer がおかしくなっています。
%doc_conf%の仕組み でも述べたように、%doc_conf% は変更することが可能です。
この文書では、 @doc_header と @doc_footer を書き換えています。
そして、このアイテムで書き換えた @doc_header と @doc_footer は、 他のアイテムでは影響を受けていない、ということがわかると思います。
【これは、プロジェクトフォルダの %doc_conf% 文書にて設定した @doc_footer を、このアイテムの %doc_conf% 文書にて再定義した @doc_footer です。 】文書タイプについて
この、HtmlOut_For_TPZ は、「文書」を基本としたスクリプトです。 極論をいうと、あるアイテムのある文書一つで、ひとつのhtmlファイルを作成することが出来ます。
また、この「文書」の「文書タイトル」に応じ、出力するhtmlの制御を行っています。 なるべく自然な感じにしているつもりですが、癖はあるかもしれません。
文書タイトルの基本
TaskPrizeの仕事(アイテム)には、複数の「文書」を持つことが可能となっています。 雰囲気は、タブ型エディターといった感じでしょうか。 個人的にはこの仕様がとても気に入っています。
そして、この複数文書をフルに活用しているのが、HtmlOut_For_TPZ です。
- 文書のタイトルに応じ、その文書内のテキストを html出力する際に制御している
- 文書テキストを 無条件に pre として扱う
- 文書テキストを 無条件に hiki(wiki) として扱う
- 文書テキストを 無条件に html として扱う
- 文書テキストを 無条件に SunokoDoc として扱う
文書タイプ
HtmlOut_For_TPZ では、独自に 文書タイプというものを定義し、 それに基づいて出力を制御しています。 (RubyForTPZ の TpzItemDocument#texttype とは異なります。ちょっと紛らわしいですが。。 ho.rb で、独自に doc_type メソッドを拡張して使用しています)
文書タイプには以下を用意しています。
- pre
- wiki
- html
- SunokoDoc
文書タイプ pre
いわゆる pre です。文書内に書かれたテキストは、 無条件に <pre>〜</pre> タグで囲って出力します。
プログラムソースや、htmlの表示等に利用します。
文書タイプ wiki
HtmlOut_For_TPZ では、wiki、具体的には HikiDocを用いて文書の html 変換を行っています。 そして、HikiDoc を独自に拡張した SunokoDoc も使用しています。 この両者を区別するために設けた文書タイプが wikiとSunokoDocです。
文書タイプ wiki は、文書のテキストが 素のHikiDocであることを明示的に定義しています。 ただし、文書タイプが wiki であっても、<SunokoDoc>〜</SunokoDoc>で囲うことによって、 部分的に SunokoDoc を使用できます。
文書タイプ html
文書を html とみなします。スクリプトとしては、何も加工しません。 書いてある内容のまま出力されます。
文書タイプ SunokoDoc
私が独自にHikiDocを拡張した「テキスト→ HTML」変換ツールです。詳細は、 sunoko's hiki - SunokoDoc を参照にしてください。
で、このHtmlOut_For_TPZ における、文書タイプ SunokoDoc とはどういうものかというと、 書かれている文書は、すべて SunokoDoc である としていることです。
SunokoDoc は、HikiDoc 互換であることから、通常は HikiDoc として処理します。 <SunokoDoc>〜</SunokoDoc>で囲うことによって、 はじめて SunokoDoc として解釈するようになっています。 よって、文書タイプ SunokoDoc では、 無条件に <SunokoDoc>〜</SunokoDoc>で囲って出力します。
長い文章を作成するには、HikiDoc文法よりも、SunokoDoc の方がずっと書きやすく、 また、生テキストでもみやすい、と固く信じています。
上記のことより、この HtmlOut_For_TPZ においては、特に指示がない限り、 文書タイプは SunokoDoc として扱っています。
文書タイプの定義方法
文書タイプの定義方法は2つあります。
- プロジェクトフォルダの %conf% で定義する方法
- 文書タイトルそのもので定義する方法
プロジェクトフォルダの %conf% で定義する方法
HtmlOut_for_TPZに、 以下の定義があります。
@pre_doc_list = { # '' => 'wiki', #文書名無しの場合のタイプをhiki or SunokoDoc とする。 '' => 'SunokoDoc', #文書名無しはSunokoDocとする。 '%macro%' => 'pre', '%conf%' => 'pre', '%plugin%' => 'pre' }
Ruby での、ハッシュ定義にて
文書タイトル => 文書タイプ
と定義することで、任意の文書タイトルを指定できます。
上記例では、%...% をいくつか定義してありますが、実は、%...% なタイトルは 無条件に pre とするようにプログラムしてあります。
なお、デフォルトの文書タイプ(具体的には、TaskPrize の機能として、 文書タイトルを付加していない文書の文書タイプ)をHikiDocとしたい場合には、 上記のコメント # を入れ替えることで可能となります。
文書タイトルそのもので定義する方法
任意の文書タイトルがついている場合、その文書タイプは SunokoDoc として扱います。 しかし、下記方法により任意指定も可能となります。
- 文書タイトル中に 文書タイプの文字が含まれている場合は、その文書になる。
- 例えば、【htmlの例】というタイトルの場合、その文書タイプは html となる。
詳細は下記スクリプト参照願います。
def doc_type # 文書のタイプを決定する if @doc_type == nil then case self.title when /^\%.*\%$/i type = 'pre' when /pre/i type = 'pre' when /wiki/i type = 'wiki' when /hiki/i type = 'wiki' when /html/i type = 'html' when /SunokoDoc/i type = 'SunokoDoc' else type = 'SunokoDoc' end else type = @doc_type end return type end
おまけ
文書タイトル中 < > で挟まれたテキストは出力されない
という細工もしてあります。これを利用すれば、任意の文書タイプを指定することが出来、 かつ、出力される html としても、自然なタイトルとして出力可能になるかと思います。
具体的には以下の文書を参照願います。
文書タイトル説明1
●文書タイトルについて ●●文書タイトル中 < > で挟まれたテキストは出力されない <<< title = doc.title.gsub(/<(.*?)>/,'') #タイトル内の<?>を削除 >>> 単純な正規表現で行っているので、複雑なタイトルはうまく行かないかも。 もっとも、タイトルにそんな複雑なものをつけるわけがないので問題なし。 この文書タイトルは ・<pre>文書タイトル説明1 ということで、期待しているのは ・文書タイプ '''pre''' になる。 ・文書タイトル→'''文書タイトル説明1'''になる ---- 何がうれしいのか 想定していること。 現在、文書タイトルで、doc_type を決め、テキスト変換方法を決定している ・pre ・html ・hiki(wiki) ・SunokoDoc で、これらは、文書タイトルからも判断できる仕組みとなっている。 しかし、そうすると、文書を印刷した場合に、文書タイトルがエレガントでない、 という問題がある。 ということで、文書タイトルをもうちょっときれいに出力したい場合に便利。
文書タイトル説明2
同じ文書を SunokoDoc にする
文書タイトルについて
文書タイトル中 < > で挟まれたテキストは出力されない
title = doc.title.gsub(/<(.*?)>/,'') #タイトル内の<?>を削除
単純な正規表現で行っているので、複雑なタイトルはうまく行かないかも。 もっとも、タイトルにそんな複雑なものをつけるわけがないので問題なし。
この文書タイトルは
- <SunokoDoc>文書タイトル説明2
ということで、期待しているのは
- 文書タイプ SunokoDoc になる。
- 文書タイトル→文書タイトル説明2になる
何がうれしいのか
想定していること。
現在、文書タイトルで、doc_type を決め、テキスト変換方法を決定している
- pre
- html
- hiki(wiki)
- SunokoDoc
で、これらは、文書タイトルからも判断できる仕組みとなっている。 しかし、そうすると、文書を印刷した場合に、文書タイトルがエレガントでない、 という問題がある。
ということで、文書タイトルをもうちょっときれいに出力したい場合に便利。
文字列の置換について
テキスト置換の方法は2種類あります。
- プラグイン展開による方法
- @gsub_list による方法
2種類とも、置換文字列の指定(作成)は、 HtmlOut_for_TPZ(%doc_conf%) にて行います。
プラグイン展開による方法
テキストは {{@ho}} *1 のように作成することで展開します
プラグインとして判断しているので、pre 中は展開されません。
*1 説明文では "{ }" を"{ }" と全角で書いています。以下同様。
@gsub_list による方法
単純にテキストを変換するだけです。 変換は、doc#translate_text 変換後に展開しているので、変換後テキストは html で作成してください。
単純テキスト置換なので、pre 中テキストも置換されます。注意してください。
置換テーブルはハッシュで指定します。
@gsub_list = { '置換前文字列1' => '置換後文字列1', '置換前文字列2' => '置換後文字列2', '置換前文字列3' => '置換後文字列3' }
間違いを防止するために、置換前文字列の前後を %%〜%% のように囲う等の工夫を実施すると良いでしょう。
例
(置換テーブル)HtmlOut_for_TPZ(%doc_conf%)の内容 *1
#---------------------------- #置換文字列リスト(erb でのプラグイン展開による) #テキストは {{@ho}} のように作成することで展開する #プラグインとして判断しているので、pre 中は展開されない @ho = 'HtmlOut_For_TPZ' #---------------------------- #置換文字列リスト #置換後文字列は html で作成すること #置換文字列は別に何でも良いのだけど、テキストを見てわかりやすくするために、 #置換元テキストを %%〜%% で囲うことを推奨する。 #単純に文字列を展開するので、例え、pre 中 であっても強制的に展開するので注意 @gsub_list = { '%%ho%%' => 'HtmlOut_For_TPZ', '%%TPZ%%' => %Q|<a href="http://k2top.jpn.org/index.php?TaskPrize">TaskPrize</a>|, '%%HikiDoc%%' => %Q|<a href="http://projects.netlab.jp/hikidoc/?FrontPage.ja">HikiDoc</a>|, '%%SunokoDoc%%' => %Q|<a href="http://sunoko.s33.xrea.com/x/hiki/SunokoDoc.html">SunokoDoc</a>| }
(元テキスト)
*{{@ho}}と %%ho%% の違いを示します <<< ここは pre です。 {{@ho}}と %%ho%% はどうなっているでしょうか? %%TPZ%%がないと仕事が出来ない体になってしまいました。 >>>
(変換後テキスト)
- HtmlOut_For_TPZと HtmlOut_For_TPZ の違いを示します
ここは pre です。 {{@ho}}と HtmlOut_For_TPZ はどうなっているでしょうか? TaskPrizeがないと仕事が出来ない体になってしまいました。
*1 説明文では "{{ }} %%" を"{{ }}%% " と全角で書いています。