PyukiWiki仕様書（仮）
        "PyukiWiki" ver 0.2.1-beta2 $$
        Copyright (C) 2005-2012 PukiWiki Developers Team
        Copyright (C) 2004-2012 Nekyo (Based on PukiWiki, YukiWiki)
        License: GPL version 3 or (at your option) any later version
        and/or Artistic version 1 or later version.
        Based on YukiWiki http://www.hyuki.com/yukiwiki/
        and PukiWiki http://pukiwiki.sfjp.jp/
        URL:
        http://pyukiwiki.info/
        MAIL:
        ななみ <nanami (at) daiba (dot) cx> (注：バーチャル女の子です)
        $Id: specification.txt,v 1.3 2012/09/11 00:43:23 papu Exp $
        This text file written UTF-8 Codeset
目次
 ・ PyukiWiki仕様書（仮）
 ・ 目次
 ・ 注意
 ・ CGI起動
 ・ ディレクトリ構成
 ・ 主な本体ファイル構成
 ・ 主なperlモジュール構成
 ・ 主なExplugin構成
 ・ 主なプラグイン構成
 ・ explugin仕様情報
     □ 初期化
     □ 有効になっているexpluginの強制読み込み
     □ リソースの読み込み
     □ JavaScript、CSSの読み込み
     □ 初期化時の返り値（ハッシュ）
 ・ プラグイン仕様情報
     □ 初期化
     □ リソースの読み込み
     □ JavaScript、CSSの読み込み
     □ inlineメソッド
     □ convertメソッド
     □ actionメソッド
     □ actionメソッドの返り値（ハッシュ）
 ・ 内部変数仕様情報
 ・ JavaScript関数仕様一覧
     □ ua
     □ ln
     □ sins
     □ sinss
     □ gid
     □ ou
     □ keyCode
     □ getClientWidth
     □ getClientHeight
     □ getDocHeight
     □ getScrollY
     □ ar
     □ defined
     □ replaceAll
     □ http
         ☆ okfunc
         ☆ errfunc
         ☆ httpreq
     □ ev.add
     □ ev.del
     □ ev.ex
     □ debug
注意
突然、何らかの理由で、仕様変更を行なうことがあります。
この説明書は、参考までで、内容を保障するものではありません。
CGI起動
CGIは、通常の index.cgi形式、及び、nph-index.cgi形式で起動されます。 mod_perl環
境で動作はしますが、あくまで互換環境での動作となります。
多くの環境変数が Apacheに依存していますが、一部のみIISで動作確認は行なわれてい
ます。
urlhack.inc.cgi Explugin は、PATH_INFO、または、404 ステータスの戻り値の、
REDIRECT_URL を参照して、ページ名を決定します。PATH_INFOのが汎用性が高い分、制
限がありますが、REDIRECT_URLのが、自由度が高く設定できます。
ディレクトリ構成
 ・ attach
    添付ファイル（添付画像も直接参照します）
 ・ backup
    バックアップ
 ・ cache
    システムキャッシュ
 ・ counter
    アクセスカウンター
 ・ diff
    差分
 ・ image
    画像
 ・ info
    情報ディレクトリ
 ・ lib
    本体、perlモジュール、Explugin
 ・ logs
    アクセスログ保存用（拡張）
 ・ plugin
    プラグイン
 ・ resource
    リソース
 ・ session
    予約
 ・ skin
    スキンファイル、JavaScript、CSSファイル
 ・ trackback
    トラックバック保存用（拡張）
 ・ user
    予約
 ・ wiki
    Wiki文書
 ・ wikidb
    内部のURL短縮用（拡張）
主な本体ファイル構成
 ・ index.cgi
    wrapper
 ・ lib/wiki.cgi
    本体起動
 ・ lib/wiki_init.cgi
    初期化用
 ・ lib/wiki_auth.cgi
    認証モジュール
 ・ lib/wiki_db.cgi
    データベース
 ・ lib/wiki_func.cgi
    汎用関数
 ・ lib/wiki_html.cgi
    HTML生成
 ・ lib/wiki_http.cgi
    HTTPモジュール
 ・ lib/wiki_link.cgi
    リンク用モジュール
 ・ lib/wiki_plugin.cgi
    プラグイン用モジュール
 ・ lib/wiki_spam.cgi
    スパムフィルターモジュール
 ・ lib/wiki_skin.cgi
    スキンモジュール
 ・ lib/wiki_sub.cgi
    自動生成される内部サブルーチン定義スクリプト
 ・ lib/wiki_wiki.cgi
    その他のモジュール
 ・ lib/wiki_write.cgi
    書き込み用モジュール
主なperlモジュール構成
 ・ lib/Algorithm/Diff.pm
    差分生成用
 ・ lib/AWS 以下
    アクセスログ、ユーザーエイジェント振り分け用
 ・ lib/Digest/Perl/MD5.pm
    Pure Perl MD5モジュール
 ・ lib/File 以下
    ファイル判定用モジュール
 ・ lib/HTTP/Lite.pm
    簡易HTTPクライアント(未使用）
 ・ lib/IDNA/Punycode.pm
    国際化ドメイン用モジュール（URLでも使用）
 ・ lib/Jcode.pm、lib/Jocde 以下
    Jcode.pm
 ・ lib/Time/Local.pm
    Time::Local
 ・ lib/Nana/Cache.pm
    キャッシュ管理モジュール
 ・ lib/Nana/Cookie.pm
    クッキー管理モジュール
 ・ lib/Nana/Enc.pm
    簡易暗号化モジュール
 ・ lib/Nana/File.pm
    ファイルアクセスモジュール
 ・ lib/Nana/GZIP.pm
    gzip圧縮、解凍モジュール
 ・ lib/Nana/HTMLOpt.pm
    HTML最適化モジュール
 ・ lib/Nana/HTTP.pm
    HTTPアクセスモジュール
 ・ lib/Nana/HTTPCompress.pm
    HTTP gzip圧縮出力モジュール
 ・ lib/Nana/Lock.pm
    ファイルロックモジュール
 ・ lib/Nana/Logs.pm
    アクセスログ解析モジュール
 ・ lib/Nana/Mail.pm
    メール送信モジュール
 ・ lib/Nana/MD5.pm
    互換MD5生成wrapperモジュール
 ・ lib/Nana/Pod2Wiki.pm
    perl pod 簡易変換モジュール
 ・ lib/Nana/RemoteHost.pm
    リモートホスト取得モジュール
 ・ lib/Nana/Search.pm
    あいまい検索モジュール
 ・ lib/Nana/ServerInfo.pm
    サーバー情報取得モジュール
 ・ lib/Nana/YukiWikiDB.pm
    ロック対策済 YukiWikiDBモジュール
 ・ lib/Nana/YukiWikiDB_GZIP.pm
    ?のgzip圧縮対応版
 ・ lib/Yuki/DiffText.pm
    Diff.pm を共用した差分生成モジュール
 ・ lib/Yuki/RSS.pm
    RSS1.0モジュール
 ・ lib/Yuki/YukiWikiDB.pm
    YukiWikiDB.pm のオリジナル
主なExplugin構成
 ・ lib/aguse.inc.pl
    リンク先チェッカー
 ・ lib/antispam.inc.pl
    メールアドレス簡易暗号化
 ・ lib/antispamwiki.inc.pl
    簡易アンチスパム
 ・ lib/authadmin_cookie.inc.pl
    管理者パスワードのcookie簡易保存
 ・ lib/autometarobot.inc.pl
    自動ロボット向けキーワード抽出
 ・ lib/canonical.inc.pl
    重複URL防止
 ・ lib/captcha.inc.pl
    CAPTCHAスパム対策
 ・ lib/debug.inc.pl
    デバッグ（develのみ）
 ・ lib/iecompatiblehack.inc.pl
    IEの互換表示ボタンをなくす
 ・ lib/lang.inc.pl
    国際化対応モジュール
 ・ lib/linktrack.inc.pl
    外部リンク簡易トラッキングモジュール
 ・ lib/logs.inc.pl
    アクセスログ取得モジュール
 ・ lib/ogp.inc.pl
    Open Graph Protocol モジュール
 ・ lib/pathmenu.inc.pl
    階層下に MenuBar等を作れるモジュール
 ・ lib/ping.inc.pl
    Weblog ping
 ・ lib/punyurl.inc.pl
    国際化ドメインURLに対応する
 ・ lib/setting.inc.pl
    閲覧者設定機能
 ・ lib/slashpage.inc.pl
    階層下のページ名を容易にリンクする
 ・ lib/trackback.inc.pl
    トラックバック
 ・ lib/urlhack.inc.pl
    URL改造
 ・ lib/xframe.inc.pl
    frame、iframe等でページを表示できないようにする
主なプラグイン構成
執筆中
explugin仕様情報
初期化
 ・ plugin_NAME_init メソッドを起動する
 ・ expluginが有効になっていると、必ず起動されます。
 ・ 引数はありませんので、$::form から読み出す必要があります。
 ・ グローバルに変数以外の記述を行なわないで下さい。
有効になっているexpluginの強制読み込み
依存関係で、先に読み込む必要があるexpluginは、以下のようにして読み出すことがで
きる。
&exec_explugin_sub("explugin name") ;
リソースの読み込み
&read_resource で読み込まれます。
プラグインと同じ名前のファイルであれば、指定しなくても自動読み込みをします。
JavaScript、CSSの読み込み
&jscss_include で読み込まれます。
プラグインと同じ名前のファイルであれば、指定しなくても自動読み込みをします。
初期化時の返り値（ハッシュ）
 ・ init
    1を指定することで、正常終了したことを通知する。
 ・ func
    上書きする関数
 ・ value
    上書きする変数名
 ・ msg
    タイトル
 ・ body
    文書本体
 ・ header
    <head>〜</head>の内容
 ・ http_header
    HTTPヘッダー
 ・ cssheader
    生のCSS
 ・ jsheader
    JavaScriptファイル読み込み後に実行するJavaScript文
 ・ jsheadervalue
    ページ表示後すぐに実行するJavaScript文
 ・ bodytag
    <body> の中の文
 ・ last_func
    ページを表示後に実行する関数
 ・ 返り値サンプル
return('init'=>1, func=>'override1,override2',
  'jsheader'=>$javascript, 'lastfunc'=>'&lastcallback;');
プラグイン仕様情報
初期化
メソッドを用いて初期化することはできません。
グローバルに記述することで、初期化することが可能です。
リソースの読み込み
&read_resource で読み込まれます。
プラグインと同じ名前のファイルであれば、指定しなくても自動読み込みをします。
JavaScript、CSSの読み込み
&jscss_include で読み込まれます。
プラグインと同じ名前のファイルであれば、指定しなくても自動読み込みをします。
inlineメソッド
&plugin(...) ; で呼び出されます。
引数は、上記の ... の中身のテキストが入ります。
sub plugin_NAME_inline {
my @arg=split(/,/,shift);
戻り値は、文字列で、HTMLを返すことにより表示されます。
return $html;
convertメソッド
#plugin (...) で呼び出されます。
引数は、上記の ... の中身のテキストが入ります。
sub plugin_NAME_convert {
my @arg=split(/,/,shift);
戻り値は、文字列で、HTMLを返すことにより表示されます。
return $html;
actionメソッド
URLの cmd=pluginname で呼び出されます。
引数はありませんので、$::form から読み出す必要があります。
actionメソッドの返り値（ハッシュ）
 ・ msg
    タイトル
 ・ body
    文書本体
 ・ header
    <head>〜</head>の内容
 ・ http_header
    HTTPヘッダー
 ・ cssheader
    生のCSS
 ・ jsheader
    JavaScriptファイル読み込み後に実行するJavaScript文
 ・ jsheadervalue
    ページ表示後すぐに実行するJavaScript文
 ・ bodytag
    <body> の中の文
 ・ ispage
    ページであることを返す
 ・ notviewmenu
    予約
内部変数仕様情報
 ・ $::HTTP_HEADER
    HTTPヘッダー
 ・ $::IN_HEAD
    <head>〜</head>
 ・ $::IN_JSHEADVALUE
    最初に実行されるJavaScript
 ・ $::IN_JSHEAD
    JavaScriptファイル読み込み後に実行されるJavaScript
 ・ $::IN_CSSHEAD
    生のCSS
 ・ $::IN_CSSFILES
    CSSファイル一覧
 ・ $::IN_JSFILES
    JavaScriptファイル一覧
 ・ $::IN_JSLOADER
    JavaScriptローダーのHTMLが入る
 ・ $::IN_BODY
    <body>の中に入る
 ・ $::IN_TITLE
    タイトルタグ
 ・ $::IN_META_ROBOTS
    ロボット制御
 ・ %::functions
    グローバル関数の一覧
 ・ %::database
    wiki/
 ・ %::infobase
    info/
 ・ %::diffbase
    diff/
 ・ %::backupbase
    backup/
 ・ %::resource
    リソース
 ・ %::form
    フォーム (GET/POST共用）
 ・ $::is_xhtml
    XHTMLであれば1
 ・ $::version
    バージョン
 ・ $::version_number
    バージョン数値（Majer?10000+Miner?100+Sub)
JavaScript関数仕様一覧
common.???.jsにある関数一覧です。
ua
入力
    (ブラウザー名)
出力
    true、false
使用中のブラウザーの種類を返します。
以下のオプションが選択できます。
MSIE、FIREFOX、GECKO、CHROME、SAFARI、WINDOWS、MACOS、VERSION、MAGERVERSION
ln
入力
    (langname),(string),(langname),(string)...
出力
    string
言語セレクターです。
langnameは、en、ja、stringは、対応する言語の出力する文字列です。
sins
入力
    エレメントオブジェクト, HTML
出力
    なし
エレメントオブジェクトにinnerhtmlをします。
sinss
入力
    エレメントオブジェクトの文字列, HTML
出力
    なし
エレメントオブジェクトの文字列にinnerhtmlをします。
gid
入力
    エレメントオブジェクトの文字列
出力
    エレメントオブジェクト
エレメントオブジェクトを返します。(getElementById)
ou
入力
    URL,target
出力
    なし
window.openをします。targetの文字列を"b"とすると、"_blank" に入れ替わります。
keyCode
入力
    イベント
出力
    キーコード
入力されたキーボードのコードを返します。
getClientWidth
入力
    なし
出力
    ウィンドウの幅
ブラウザーの幅を返します。
getClientHeight
入力
    なし
出力
    ウィンドウの高さ
ブラウザーの高さを返します。
getDocHeight
入力
    なし
出力
    ドキュメントの高さ
表示されているページの高さを返します。
getScrollY
入力
    なし
出力
    現在位置
表示されている位置を返します。
ar
入力
    なし
出力
    new Arrayの返り値 new Array を行ないます。
defined
入力
    オブジェクト、変数
出力
    true, false 指定したオブジェクト、または変数が存在するか確認します。
replaceAll
入力
    文字変数、置換前文字、置換後文字
出力
    文字 replaceの全文字対象です。
http
入力
    メソッド, URL, POSTするデータ, 正常時のコールバック関数, 異常時のコールバッ
    ク関数
出力
    なし
http非同期クライアントです。コールバック関数は、以下の通りの引数です。
okfunc
入力
    HTTPステータス, レスポンステキスト
出力
    なし
errfunc
入力
    HTTPステータス, レスポンステキスト
出力
    なし
httpreq
入力
    なし
出力
    http object ブラウザーのhttpクライアントオブジェクトを返します
ev.add
入力
    イベント名, 実行する関数（文字列）, 実行する関数のパラメータ
出力
    なし
イベントハンドラーです。対応しているイベントは以下の通り
 ・ onload
 ・ onkeypress
 ・ onkeydown
 ・ onkeyup
 ・ onclick
 ・ onbeforeunload
 ・ oncontextmenu
ev.del
入力
    イベント名, 実行する関数（文字列）
出力
    なし
イベントを削除します
ev.ex
入力
    イベント名
出力
    なし
イベントを強制実行します。
debug
入力
    メッセージ
出力
    なし
デバッグログをtextareaフォーム、及び、console.logに出力します。
