summaryrefslogtreecommitdiff
path: root/fml/doc/ja/tutorial/module
diff options
context:
space:
mode:
authorfukachan <fukachan>2003-04-15 14:51:34 +0000
committerfukachan <fukachan>2003-04-15 14:51:34 +0000
commit6c6f43a3af38974d872778f2b355e6e3a61af961 (patch)
tree40c4d17cfbe26fe516f3429fe587c450c7eb30f9 /fml/doc/ja/tutorial/module
parentf511a32e5c36f9a16f5f33373c2f24cd3d413055 (diff)
downloadfml8-6c6f43a3af38974d872778f2b355e6e3a61af961.tar.gz
fml8-6c6f43a3af38974d872778f2b355e6e3a61af961.tar.bz2
fml8-6c6f43a3af38974d872778f2b355e6e3a61af961.zip
clean up. catch up the current status.
Diffstat (limited to 'fml/doc/ja/tutorial/module')
-rw-r--r--fml/doc/ja/tutorial/module/IO.sgml44
-rw-r--r--fml/doc/ja/tutorial/module/Message.sgml59
-rw-r--r--fml/doc/ja/tutorial/module/create.sgml66
-rw-r--r--fml/doc/ja/tutorial/module/encode.sgml27
-rw-r--r--fml/doc/ja/tutorial/module/nativelanguage.sgml15
5 files changed, 89 insertions, 122 deletions
diff --git a/fml/doc/ja/tutorial/module/IO.sgml b/fml/doc/ja/tutorial/module/IO.sgml
index 7ec4946a..90422163 100644
--- a/fml/doc/ja/tutorial/module/IO.sgml
+++ b/fml/doc/ja/tutorial/module/IO.sgml
@@ -1,5 +1,5 @@
<!--
- $FML: IO.sgml,v 1.2 2003/03/14 02:57:44 fukachan Exp $
+ $FML: IO.sgml,v 1.3 2003/04/13 04:36:12 fukachan Exp $
-->
<chapter id="module.io.adapter">
@@ -14,10 +14,10 @@
</title>
<para>
-&fmldevel; でのメンバーリストの読み書き、
-例えばアドレスの登録/削除、は
-IO::Adapter という抽象クラスを通じて行ないます。
-使い方は例えば次のような感じです。
+&fmldevel; でのメンバーリストの読み書き、例えばアドレスの登録/削除は
+IO::Adapter という抽象クラスを通じて行ないます。ようは Unix で
+vfs/vnode インターフェイスの導入した時のような感じですね。
+使い方は次のようになります。
<screen>
use IO::Adapter;
$obj = new IO::Adapter $map, $map_params;
@@ -28,14 +28,15 @@ $obj->close;
</para>
<para>
+$map は「map:識別子」となります。file: は省略可能です。
現在のところ $map は次のようなものが使えます。
<screen>
-file:/var/spool/ml/elena/actives
+file:/var/spool/ml/elena/recipients
unix.group:root
nis.group:root
mysql:id
-postgresql:id (未実装)
-ldap:id (未実装)
+postgresql:id (未実装、実装予定)
+ldap:id (未実装、実装予定)
</screen>
</para>
@@ -45,7 +46,8 @@ unix.group:root は /etc/group の root のエントリにあるユーザのリストを、
nis.group:root は NIS の root のエントリにあるユーザのリストです。
mysql:id は MySQL へのアクセスです。
mysql:id で指定されたパラメータを用います。
-このパラメータは new() を実行する際に別途与える必要があります。
+このパラメータは new IO::Adapter を実行する際に、
+指定する必要があります。
</para>
</sect1>
@@ -53,11 +55,11 @@ mysql:id で指定されたパラメータを用います。
<sect1 id="module.io.adapter.methods">
<title>
- メソッド
+ IO::Adapter のメソッド
</title>
<para>
-IO::Adapter の提供する公式なメソッドは次の通りです。
+現在、IO::Adapter の提供する公式なメソッドは次の通りです。
<screen>
new()
open()
@@ -77,6 +79,9 @@ touch()
find(REGEXP, $args)
</screen>
です。
+</para>
+
+<para>
KEY はデータベースのプライマリキーで、
通常メールアドレスです。
REGEXP は正規表現ですが、たいていはメールアドレスです。
@@ -107,7 +112,7 @@ REGEXP は正規表現ですが、たいていはメールアドレスです。
<para>
get_next_key() のように引数なしか STR を引数にして STR を返り値にする
ものが多いです。これはファイルの一覧を見るとか、特定のアドレスに対する
-何かの値を取り寄せるとかいう操作でよく使われるためです。
+何かの値を取り寄せるとかいう操作がよく使われるためです。
</para>
<para>
@@ -137,8 +142,8 @@ rudo@nuinui.net => [
</para>
<para>
-まとめると引数はないか STR なので STR とひとまとめにしても良いです。
-一方、返り値は STR か ARRAY_REF になります。
+まとめると引数は「ない」か」STR」なので STR とひとまとめにしても良いで
+しょう。一方、返り値は STR か ARRAY_REF になります。
<screen>
引数 返り値
---------------------------------------
@@ -189,13 +194,14 @@ $obj = new IO::Adapter "unixgroup:wheel";
</screen>
というオブジェクトに対し get_next_key() すると
グループのメンバーが順に返されます。
-つまり 3 行のファイルを読みだすものとして、
+ちょうど
<screen>
root
rudo
kenken
</screen>
のようなファイルとみなされます。
+つまり 3 行のファイルを読みだすようにみなされているわけですね。
</para>
</sect1>
@@ -207,7 +213,7 @@ kenken
</title>
<para>
-/etc/group とほぼ同様ですが、ソースが
+/etc/group のケースとほぼ同様ですが、ソースが
NIS/YP から group にあたるものを引っ張ってくるところだけが異なります。
</para>
@@ -220,9 +226,9 @@ NIS/YP から group にあたるものを引っ張ってくるところだけが異なります。
</title>
<para>
-保守性をあげるためには、一箇所に設定をまとめておきたい。
-&fmldevel; の設定では .cf の中にSQL の設定を書いておきたい。
-つまり一つの cf ファイルにいろいろ書けるようにしておきたい。
+保守性をあげるためには、一箇所に設定をまとめておきたい。つまり、一つの
+cf ファイルにいろいろ書けるようにしておきたい。たとえば &fmldevel; の
+場合、config.cf の中だけに SQL の設定を書いておきたいわけです。
</para>
<para>
diff --git a/fml/doc/ja/tutorial/module/Message.sgml b/fml/doc/ja/tutorial/module/Message.sgml
index f8171d04..7d150622 100644
--- a/fml/doc/ja/tutorial/module/Message.sgml
+++ b/fml/doc/ja/tutorial/module/Message.sgml
@@ -1,5 +1,5 @@
<!--
- $FML: Mail::Message.sgml,v 1.7 2002/07/07 01:57:11 fukachan Exp $
+ $FML: Message.sgml,v 1.1 2003/02/18 02:29:14 fukachan Exp $
-->
<chapter id="module.mail.message">
@@ -7,18 +7,18 @@
Mail::Message モジュール
</title>
-<sect1>
+<sect1 id="module.mail.message.overview">
<title>
Mail::Message の概要
</title>
<para>
このオブジェクトモジュールはメールの解析と、
-解析されたデータ構造へのさまざまな操作手段を提供してくれます。
+解析されたデータ構造へのさまざまな操作手段を提供しています。
</para>
<para>
-少し詳しく説明すると、このモジュールはメールを解析し、
+もう少し詳しく説明すると、このモジュールはメールを解析し、
<screen>
(multipart でない場合)
@@ -28,16 +28,14 @@ header -> body
header -> preamble -> part1 -> part2 -> trailor
</screen>
-のようにオブジェクトが数珠つなぎのようなデータ構造を作ります。
-ちなみに鎖と鎖の間は double link list です。
-Mail::Message のクラスは
-このようなデータ構造に対して、さまざまなオペレーションを提供します。
+のようにオブジェクトが数珠つなぎとなったデータ構造を作ります。ちなみに
+鎖と鎖の間は double link list です。Mail::Message のクラスはこのような
+データ構造に対して、さまざまな操作を行なうメソッドを提供しています。
</para>
<para>
-この鎖の部分部分それぞれが Mail::Message オブジェクトです。
-つまり一通のメールはメールヘッダから始まるオブジェクトの鎖として
-表現されます。
+この鎖の部分部分それぞれが Mail::Message オブジェクトです。つまり一通
+のメールはメールヘッダから始まるオブジェクトの鎖として表現されます。
</para>
<para>
@@ -59,24 +57,19 @@ Mail::Message モジュールのマニュアル
</sect1>
-<sect1>
+<sect1 id="module.mail.message.parse">
<title>
Mail::Message モジュール: 解析する
</title>
<para>
-parse() メソッドは
-引数で与えられた
-ファイル(名)かファイルディスクリプタに対し
-メッセージの解析をします。
+parse() メソッドは引数で与えられたファイル(名)かファイルディスクリプタ
+に対しメッセージの解析をします。
</para>
<para>
-data_type_list()
-は
-鎖の列の情報を返します。
-情報は ARRAY REFERENCE の形で返されます。
-例えば MIME/Multipart は次のようになります。
+data_type_list() は鎖の列の情報を返します。情報は ARRAY REFERENCE の形
+で返されます。例えば MIME/Multipart は次の表現されています。
<screen>
type[ 1]: text/rfc822-headers | multipart/mixed
type[ 2]: multipart/mixed | multipart/mixed
@@ -88,12 +81,14 @@ data_type_list()
type[ 8]: multipart.close-delimiter | multipart/mixed
type[ 9]: text/plain | multipart/mixed
</screen>
+真中の列がオブジェクトの鎖を表しています。
+右端は全体の mime type です。
</para>
</sect1>
-<sect1>
+<sect1 id="module.mail.message.create">
<title>
Mail::Message モジュール: 新しいメッセージを作る
</title>
@@ -109,6 +104,12 @@ build_mime_multipart_chain($args)
parse_and_build_mime_multipart_chain($args)
build_mime_header($args)
</screen>
+これらのメソッドを直接呼び出すことは実際ないので、
+これらは private に移行するかもしれません。
+だから、とりえあずこれらは使わないでください。
+</para>
+
+<para>
しかしながら、MIME/mulitpart の作成には
Mail::Message::Compose クラスがあります。
実のところ、このクラスの実態は MIME::Lite そのものです :-)
@@ -117,7 +118,7 @@ Mail::Message::Compose クラスがあります。
</sect1>
-<sect1>
+<sect1 id="module.mail.message.headerop">
<title>
Mail::Message モジュール: ヘッダの操作
</title>
@@ -161,7 +162,7 @@ header_data_type()
</sect1>
-<sect1>
+<sect1 id="module.mail.message.bodyop">
<title>
Mail::Message モジュール: メッセージ本文の操作
</title>
@@ -214,7 +215,7 @@ plain/text タイプのメッセージ部分に着目することが多いので
</sect1>
-<sect1>
+<sect1 id="module.mail.message.search">
<title>
Mail::Message モジュール: オブジェクトの検索
</title>
@@ -227,7 +228,7 @@ find() メソッドは Mail::Message の特定のタイプを探し、
</sect1>
-<sect1>
+<sect1 id="module.mail.message.print">
<title>
Mail::Message モジュール: メッセージを表示する。
</title>
@@ -249,7 +250,7 @@ reset_print_mode()
</sect1>
-<sect1>
+<sect1 id="module.mail.message.utils">
<title>
Mail::Message モジュール: 便利な関数
</title>
@@ -301,7 +302,7 @@ encoding_mechanism()
Mail::Message オブジェクトのエンコーディングメカニズム(文字列)を返します。
エンコーディングされていないなら undef が返ります。
これは、メール全体のタイプ(マルチパートとか text/plain)
-どではなく、鎖の各部分のオブジェクトのタイプであることに注意して下さい。
+ではなく、鎖の各部分のオブジェクトのタイプであることに注意して下さい。
</para>
</sect2>
@@ -345,7 +346,7 @@ message_text($size)
</sect1>
-<sect1>
+<sect1 id="module.mail.message.ref">
<title>
参照
</title>
diff --git a/fml/doc/ja/tutorial/module/create.sgml b/fml/doc/ja/tutorial/module/create.sgml
index 00cf13bf..f0ba9636 100644
--- a/fml/doc/ja/tutorial/module/create.sgml
+++ b/fml/doc/ja/tutorial/module/create.sgml
@@ -1,5 +1,5 @@
<!--
- $FML$
+ $FML: create.sgml,v 1.1 2003/02/18 02:24:47 fukachan Exp $
-->
<chapter id="module.create">
@@ -9,9 +9,9 @@
<para>
-ここでは、単純なスケジュール表示ソフトを例にとり、fml8 フレームワーク
-の中で新しいプログラムを追加するにはどうすれば良いのかを説明します。
-以下、プログラム名は fmlsch とし、その CGI 版が fmlsch.cgi です。
+ここでは、単純なスケジュール表示ソフトを例にとり、&fmldevel; のフレー
+ムワークの中で新しいプログラムを追加するにはどうすれば良いのかを説明し
+ます。 以下、プログラム名は fmlsch とし、その CGI 版が fmlsch.cgi です。
</para>
@@ -66,8 +66,8 @@ Date-Calc も必要なので適宜インストールしてください。
</title>
<para>
-仕事のほとんどの部分は TinyCalender が実行しますが、
-fml8 のブートローダから TinyCalender を呼び出すために
+仕事のほとんどの部分は Calender::Lite が実行しますが、
+&fmldevel; のブートローダから Calender::Lite を呼び出すために
FML::Process:: クラスを修正する必要があります。
</para>
@@ -78,11 +78,12 @@ fml/lib/FML/Process/Calender.pm
</para>
<para>
-そして、
-ブートローダーへ fmlsch の場合は FML::Process::Calender を呼び出せば
-良いことを教えるために
-fml/lib/FML/Process/Switch.pm
-へ fmlsch のモジュール名などを追加します。
+そして、ブートローダーへ fmlsch の場合は FML::Process::Calender を呼び
+出せば良いことを教えるために
+etc/modules
+と
+etc/command_line_options
+に fmlsch のモジュール名との対応関係を追加します。
</para>
@@ -96,49 +97,6 @@ FML::Process::Calender::run() メソッドだけ用意すればおしまいです。
未定義の関数は FML::Process::Kernel のメソッドが使われます(継承)。
</para>
-<para>
-FML::Process::Switch には以下のルール群を追加します。
-ここで追加するのは
- getopt() のオプション
- ML 名は必須か?
- 呼び出すモジュール名
-です。
-<screen>
- --- Switch.pm 2001/03/25 04:09:00 1.14
- +++ Switch.pm 2001/03/27 15:27:00
- @@ -323,6 +323,9 @@
- elsif ($myname eq 'makefml.cgi') {
- return qw(debug!);
- }
- + elsif ($myname eq 'fmlsch') {
- + return qw(debug!);
- + }
- else {
- croak "options for $myname are not defined.\n";
- }
- @@ -340,6 +343,9 @@
- if ($myname eq 'fmldoc') {
- return 0;
- }
- + elsif ($myname eq 'fmlsch') {
- + return 0;
- + }
- elsif ($myname eq 'makefml') {
- return 0;
- }
- @@ -390,6 +396,12 @@
- }
- elsif ($name eq 'makefml.cgi') {
- $pkg = 'FML::CGI::Configure';
- + }
- + elsif ($name eq 'fmlsch') {
- + $pkg = 'FML::Process::Calender';
- }
- else {
- return '';
-</screen>
-</para>
-
</sect2>
</sect1>
diff --git a/fml/doc/ja/tutorial/module/encode.sgml b/fml/doc/ja/tutorial/module/encode.sgml
index 42e7e346..5309876e 100644
--- a/fml/doc/ja/tutorial/module/encode.sgml
+++ b/fml/doc/ja/tutorial/module/encode.sgml
@@ -1,3 +1,7 @@
+<!--
+ $FML$
+-->
+
<chapter id="module.mail.message.encode">
<title>
Mail::Message::Encode クラス
@@ -31,7 +35,7 @@ fml-help ML's Count: 02012, 02013, 02016 など
<sect1>
<title>
- 仕様
+ Mail::Message::Encode の仕様
</title>
<para>
@@ -77,14 +81,13 @@ fml-help ML's Count: 02012, 02013, 02016 など
</screen>
<screen>
- sub base64 {}
- sub quoted_printable {}
-
- があるといいかな〜
-
- $x = $encode->base64($s);
+sub base64 {}
+sub quoted_printable {}
+</screen>
+があるといいかな〜
+<screen>
+$x = $encode->base64($s);
</screen>
-
また、互換性というか便宜上、STR2XXX() も準備する。
<screen>
STR2EUC( $str, [$icode] )
@@ -99,13 +102,15 @@ fml-help ML's Count: 02012, 02013, 02016 など
<sect1>
<title>
- 特別な関数
+ run_in_chcode()
</title>
<para>
-euc にしてごにょごにょ する典型的なコードは全部 wrap する。
+言語依存処理の過程では、プログラムの扱いやすいコードに変換し、処理を行
+なう関数が多数存在します。そこで、そういった関数を用意すると便利です。
<screen>
-# change code and do $proc
+run_in_chcode の実装例
+
sub run_in_chcode
{
my ($self, $proc, $s, $out_code, $in_code) = @_;
diff --git a/fml/doc/ja/tutorial/module/nativelanguage.sgml b/fml/doc/ja/tutorial/module/nativelanguage.sgml
index c8490d7a..585420d0 100644
--- a/fml/doc/ja/tutorial/module/nativelanguage.sgml
+++ b/fml/doc/ja/tutorial/module/nativelanguage.sgml
@@ -1,10 +1,11 @@
<!--
- $FML: nativelanguage.sgml,v 1.1 2001/11/24 03:22:56 fukachan Exp $
+ $FML: nativelanguage.sgml,v 1.2 2002/04/01 23:41:05 fukachan Exp $
-->
<chapter>
- <title> 言語別の処理関数 </title>
-
+ <title>
+ 言語別の処理関数
+ </title>
<para>
fml 内部では言語に依存した変換処理が必要です。
@@ -28,12 +29,8 @@ fml 内部では言語に依存した変換処理が必要です。
</title>
<para>
-クラス名は
-なにか::Language::
-もしくは
-Language::
-などとなります。
-これらの階層以下に言語依存モジュール群は配置されます。
+言語依存のクラス名は「なにか::Language::」となります。これらの階層以下
+に言語依存モジュール群が配置されます。
</para>
<para>