Nasp

INDEX

Naspとは?

NaspはASPをもっとエキサイティングにするCOMライブラリです。

以下のようなことが可能です。

概要

Naspではスクリプト(ASP)とテンプレート(HTML)を分離して作成します。
以下に簡単な例を示します。

Sample.asp

<% option explicit: with Server.CreateObject("Nasp") .Name = Request.ServerVariables("URL"): .AddScript Me: .TemplateFolder = Server.MapPath("../template/"): .Template = "Sample.html": .Process(): end with public _ function OnDraw_ContentList(oMain, vParam) dim oRS: set oRS = CreateObject("ADODB.Recordset"): oRS.open "select * from TContent", "{YourConnectString...}": do until oRS.EOF oMain.View("CL_Field1") = oRS("Field1"): oMain.View("CL_Field2") = oRS("Field2"): oMain.View("CL_Field3") = oRS("Field3"): oMain.ProcessTemplate vParam(0): oRS.MoveNext(): loop end function %>

Sample.html

<html> <head> <title>Sample</title> </head> <body> <h1>Sample</h1> <table> <tr> <th>Field1</th> <th>Field2</th> <th>Field3</th> </tr> (#%ContentList| <tr> <td>(#*CL_Field1#)</td> <td>(#*CL_Field2#)</td> <td>(#*CL_Field3#)</td> </tr> #) </table> </body> </html>

例に示すとおり、Naspを使えばスクリプト(ASP)とテンプレート(HTML)は完全に分離され、
スクリプト(ASP)はイベントに応える形式で記述することができます。
イベントは様々用意されており、それぞれに応じた処理を記述することでWebサイトを構築できます。

これはほんの入り口。
Naspによるエキサイティングな方のASPをぜひご堪能ください。

動作環境
[ Nasp object ]
ASP 5.0, 5.1, 6.0 and later
[ other objects ]
Windows 2000, XP, 2003 Server, Vista and later
パッケージ内容
Nasp.dll
Naspライブラリ本体
注意事項
  1. 本ソフトウェアの利用は良識の範囲内でお願い致します。
  2. 本ソフトウェアの利用による損害の保証はお受けできません。
  3. 本ソフトウェアの利用は楽しんで行っていただきますようお願い致します。
インストール方法
  1. "Nasp.dll" をRegsvr32。
リファレンス
Nasp Library
Nasp

( Utilize from only ASP. )

Interface
INasp
ProgID
Nasp
NOM Name
Nasp [default]
TextTemplator

Interface
ITextTemplator
ProgID
Nasp.TextTemplator
NOM Name
TextTemplator
Utility

Interface
IUtility
ProgID
Nasp.Utility
NOM Name
Utility
INasp

Nasp的ASP処理を扱います。

プロパティ
Object Script = NULL [RW]
Naspが発生させるイベントを受け取るオブジェクト。
String Command = "" [RW]
Naspが発生するコマンドイベントの名前。
On_StartCommand 直前に Command が空文字列だった場合、
Commandの値はNaspによって自動的にRequestを元に設定されます。
String Template = "" [RW]
Naspが発生するテンプレートイベントの名前。
On_StartDraw 直前に Template が空文字列だった場合、
Templateの値はNaspによってDefaultTemplateに設定されます。
String TemplateFolder = "" [RW]
テンプレートファイルを取得するフォルダの絶対パス。
String TemplateExt = "" [RW]
テンプレートファイルパスを生成する際に付加する拡張子。
String TemplateCharset = "UTF-8" [RW]
テンプレートファイルの文字コードセット。
String DefaultTemplate = "" [RW]
Template が "" の場合に利用されるテンプレート名。
On_StartDraw 直前に Template が空文字列だった場合、
Templateの値はNaspによってDefaultTemplateに設定されます。
String TemplatePermissionPath = "" [RW]
テンプレートの取得を許可するフォルダのパス。
詳細:
 ○空文字列:TemplateFolder 以内しか許されない
 ○あるパス:TemplatePermissionPath 以内しか許されない
String CommandName = "c" [RW]
自動的にセットされる Command の Request変数名。
Object Output = ASP.Response [RW]
描画の出力先オブジェクト。
出力先対応オブジェクト:
 ○ADODB.Stream
 ○ASP.Response
 ○Scripting.TextStream
 ○IStream
Object View = Scripting.Dictionary [R]
描画時 (#*XXX#)、(#/XXX#) 用 Dictionary。
View は Nasp.Processの間のみ生存しています。
Object Bag = Scripting.Dictionary [R]
描画時 (#&XXX#)、(#|XXX#) 用 Dictionary。
Bag は ASP.Session に格納され、Nasp.Abandonされるまで生存し続けます。
Object Include = Scripting.Dictionary [R]
描画時 (#@XXX#) 用 Dictionary。
Include は Nasp.Processの間のみ生存しています。
Object Request [R]
HTTPリクエストメソッドに応じたオブジェクトを返します。
詳細:
 ○GET :ASP.Request.QueryString
 ○POST :ASP.Request.Form
 ○POST(multipart/form-data):Nasp.MultipartForm
String Name = "" [RW]
Naspが内部で利用するSession変数の名前。
Bool Backable = True [RW]
ブラウザの戻るボタン対処をするか否か。
戻るボタンが使われた際にコマンドイベントが発生しないようにするには False を設定します。
メソッド
void AddScript(Object oObject)
oObject
Naspが発生させるイベントを受け取るオブジェクト

Naspが発生させるイベントを受け取るオブジェクトを設定します。
複数回 AddScript された場合には、後にAddScriptされたものが優先的にイベントを受け取ります。

void PutIntoBag(String sName="", Bool bArray=False)
sName
Bagに取り込むRequestパラメータの名前を指定します。
"" の場合、リクエストされたすべてのパラメータをBagに取り込みます。
bArray
Bagに取り込む際に配列として取り込むか否か。

HTTPリクエスト時のパラメータをBagに取り込みます。

void PutIntoView(String sName="", Bool bArray=False)
sName
Viewに取り込むRequestパラメータの名前を指定します。
"" の場合、リクエストされたすべてのパラメータをViewに取り込みます。
bArray
Viewに取り込む際に配列として取り込むか否か。

HTTPリクエスト時のパラメータをViewに取り込みます。

void Write(String sWritten, Bool bHTMLEncode=False)
sWritten
書かれる文字列
bHTMLEncode
書き込み時にHTMLEncodeするか否か

Outputに文字列を出力します。

void Abandon()

このAbandonを呼んだ期をもって Nasp処理 を終了します。
Abandonを呼ぶと Bag は消滅します。

void AddLog(String sName, String sValue)
sName
ログ名
sValue
ログ値

IISのログに、
 [sName:sValue]
の形式で書き込みます。

Bool FireEvent(String sName, Variant* pParam, Variant* pResult)
sName
イベント名
pParam
イベントに渡される引数
pResult
イベントの戻り値
戻り値
イベントが存在したか否か

sNameで指定したイベントを発生させます。
イベントにはpParamを渡すことができ、イベントの戻り値はpResultで取得できます。

void AddMessage(Variant vMessage, String sName="")
vMessage
メッセージを表す数値、またはメッセージ自体の文字列
sName
メッセージを表示する位置の名前

描画時に利用するためのメッセージを追加します。
追加されたメッセージは (#%_Message#) によって利用されます。
vMessageに数値を指定すると、(#%_Message_Text#) で用意されたメッセージの1から始まる順番で利用します。
vMessageに文字列を指定すると、(#%_Message_Text#) で vMessage が利用されます。

Bool MessageExists([Variant vName])
vName
メッセージを表示する位置の名前
戻り値
メッセージが追加されているか否か

AddMessageによってメッセージが追加されているか否かを調べます。
vNameを省略すると名前に関係なくメッセージが追加されているか否か返します。

void ProcessTemplate(String sTemplate)
sTemplate
テンプレート処理される文字列

sTemplateをテンプレート処理します。

void Process()

Nasp処理を行います。

Array ToArray(Object oStringList)
oStringList
リクエストパラメータ
戻り値
リクエストパラメータ配列

リクエストパラメータを配列に変換します。

String ToCommand(String sCommand)
sCommand
コマンド名
戻り値
コマンド文字列

sCommand を元にHTTPリクエスト用のコマンド文字列を生成します。

String ToParameter(String sName, String sValue)
sName
パラメーター名
sValue
パラメーター値
戻り値
パラメータ文字列

sName を元にHTTPリクエスト用のパラメータ文字列を生成します。

void DrawTemplate(String sTemplateName)
sTemplateName
描画するTemplate

sTemplateName を描画します。

Object NewADOCommand(Variant vConnection, String sCommandText, long nCommandType=4)
vConnection
DBへの接続
sCommandText
ADODB.Command の CommandText
nCommandType
ADODB.Command の CommandType
戻り値
ADODB.Command

ADODB.Commandを生成します。

Object NewTemplator(String sOnDraw_Prefix="OnDraw_")
sOnDraw_Prefix
描画イベントのプレフィックス
戻り値
INaspedTemplator

テンプレート処理を別に行うためのTemplatorオブジェクトを返します。

Object NewMail(String sSMTPServer="", long nPort=25)
sSMTPServer
SMTPサーバー名
nPort
SMTPサーバーポート番号
戻り値
CDO.Message

メールを送信するためのメッセージオブジェクトを生成します。

String MakeKey(long nLen, String sMaterial="ABCDEFGHIJKLMNOPQRSTUVWXYZ")
nLen
作成する文字列の長さ
sMaterial
文字列を作成するときに使用する文字群
戻り値
ランダムな文字列

ランダムな文字列を生成します。

String MakeGUID(Bool bShort=True)
bShort
短形式か否か
戻り値
GUID文字列

GUIDを生成します。
bShort詳細:
 ○True :CE875870999D4663AF908BC61EECBEC0
 ○False:{CE875870-999D-4663-AF90-8BC61EECBEC0}

void Sleep(long nMilliseconds)
nMilliseconds
待機する時間(ミリ秒)

処理を nMilliseconds(ミリ秒) の間待機します。

String MD5(Variant vData)
vData
MD5計算元データ(Byte()、String)
戻り値
MD5値

MD5値を計算します。

Bool FindString(Variant* pStrings, Variant* pTargets)
pStrings
検索されるの文字列、または文字列の配列
pTargets
検索する文字列、または文字列の配列
戻り値
pStringsの中にpTargetsがあるか否か

pStringsの中にpTargetsがあるか否かを調べます。

String HanToZen(String sSource)
sSource
半角文字を含んだ文字列
戻り値
全角文字への変換後の文字列

半角文字を含んだ文字列を全角文字へ変換します。

String ZenToHan(String sSource)
sSource
全角文字を含んだ文字列
戻り値
半角文字への変換後の文字列

全角文字を含んだ文字列を半角文字へ変換します。

イベント
void On_FirstAccess(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]

Naspのセッション処理が始まった場合に発生します。
Bag変数の初期化などを行うタイミングに適しています。

void On_LastAccess(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]

Naspのセッション処理が終わる場合に発生します。
Nasp.Abandonによって引き起こされるイベントです。

Bool On_StartProcess(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]
戻り値
Processを行うか否か

Nasp処理の直前に発生します。
戻り値にFalseを指定することでNasp処理を中止することができます。

void On_EndProcess(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]

Nasp処理の直後に発生します。

Bool On_StartCommand(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]
戻り値
Command処理を行うか否か

Command処理の直前に発生します。
戻り値にFalseを指定することでCommand処理を中止することができます。

void On_EndCommand(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]

Command処理の直後に発生します。

Bool On_StartDraw(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]
戻り値
Draw処理を行うか否か

Draw処理の直前に発生します。
戻り値にFalseを指定することでDraw処理を中止することができます。

void On_EndDraw(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]

Draw処理の直後に発生します。

Bool OnCommand_***(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]
戻り値
Commandを処理したか否か

Command "***" の処理が必要なときに発生します。
処理が失敗した場合には戻り値にFalseを設定してください。

Bool OnTemplate_***(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]
戻り値
Templateを処理したか否か

Template "***" の処理が必要なときに発生します。
処理が失敗した場合には戻り値にFalseを設定してください。

Bool OnDrawTemplate_***(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]
戻り値
Template処理を続けるか否か

Template "***" の処理直前に発生します。
このイベントでNasp.Templateを変更し、戻り値をFalseに設定すると
Naspは描画処理をやり直します。

void OnDraw_***(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
テンプレート引数の配列

テンプレート中の描画イベント "(#%***#)" で発生します。
描画イベントに "(#%***|aaa#|#bbb#)" のように引数がある場合はvParamによって渡されます。

Bool On_TemplateNotFound(Object oNasp, Variant vParam)
oNasp
このイベントを発生させたNaspオブジェクト
vParam
[未使用]
戻り値
Templateファイル取得処理を続けるか否か

Templateファイルの取得に失敗した場合に発生します。
このイベントでNasp.Templateを変更し、戻り値をFalseに設定すると
Naspは描画処理をやり直します。

テンプレート
置換記号
;
プロパティ出力(HTMLエンコードあり)
:
プロパティ出力(HTMLエンコードなし)
&
Bag出力(HTMLエンコードあり)
|
Bag出力(HTMLエンコードなし)
*
View出力(HTMLエンコードあり)
/
View出力(HTMLエンコードなし)
=
ASP.Session出力(HTMLエンコードあり)
~
ASP.Session出力(HTMLエンコードなし)
+
ASP.Application出力(HTMLエンコードあり)
-
ASP.Application出力(HTMLエンコードなし)
$
ASP.Request出力(HTMLエンコードあり)
\
ASP.Request出力(HTMLエンコードなし)
!
コマンド文字列出力(HTMLエンコードあり)
?
コマンド文字列出力(HTMLエンコードなし)
`
静的テンプレートインクルード
@
動的テンプレートインクルード
%
描画イベント
組み込み描画イベント
_Input
(#%_Input|{sName}#|#{sValue}#|# <input type="radio" name="(#*_Input_Name#)" value="(#*_Input_Value#)" (#%_Input_Default|#|#checked#)/> #)
{sName}
Input要素名
{sValue}
Input要素値

Bag({sName}) を元にHTMLのinput要素を描画します。
Bag({sName}) と {sValue} が等しい場合には (#%_Input_Default#) によって checked が描画されます。

_InputV
(#%_InputV|{sName}#|#{sValue}#|# <input type="radio" name="(#*_InputV_Name#)" value="(#*_InputV_Value#)" (#%_InputV_Default|#|#checked#)/> #)
{sName}
Input要素名
{sValue}
Input要素値

View({sName}) を元にHTMLのinput要素を描画します。
View({sName}) と {sValue} が等しい場合には (#%_InputV_Default#) によって checked が描画されます。

_Message
(#%_Message|{sName}#|# <div class="error">(#%_Message_Text|Fatal error!!!#)</div> #)
{sName}
エリア名

Nasp.AddMessage によって追加されたメッセージを描画します。
Nasp.AddMessage によって数値Nが追加された場合には、
(#%_Message_Text|…#) のテンプレート引数N番目が描画されます。

INaspedTemplator

テンプレート処理を扱います。

プロパティ
Object Script [RW]
描画イベントを受け取るオブジェクト
Object Main [R]
このTemplatorを生成したNaspオブジェクト
Object Stream [RW]
出力ストリーム(ADODB.Stream)
メソッド
void ProcessTemplateFile(String sFilePath, String sCharset="UTF-8")
sFilePath
処理されるテンプレートファイルのパス
sCharset
テンプレートファイルのエンコード

ファイルを読み込み、テンプレートとして処理します。

void ProcessTemplate(String sTemplate)
sTemplate
処理されるテンプレート文字列

文字列をテンプレートとして処理します。

void Write(String sWritten, Bool bHTMLEncode)
sWritten
Streamに書かれる文字列
bHTMLEncode
書き込み時にHTMLエンコードするか否か

Streamに文字列を書き込みます。

String Flush()
戻り値
Streamに溜まっていた文字列

Streamに溜まっている文字列を取得し、Streamを空にします。

イベント
void OnDraw_***(Object oNasp, Variant vParam)
oNasp
このTemplatorを生成したNaspオブジェクト
vParam
テンプレート引数の配列

描画 "***" が必要なときに発生するイベントです。

IFormFile

アップロードされたファイルを扱います。

プロパティ
String FileName [R]
ファイルのフルパス名
String FileName2 [R]
フィルのフルパス名のうちのファイル名
String ContentType [R]
ファイルのContentType
Object Stream [R]
ファイルの内容が格納されたADODB.Streamオブジェクト
ITextTemplator

テンプレート処理を扱います。

プロパティ
Object Script [RW]
描画イベントを受け取るオブジェクト
Object Stream [RW]
出力ストリーム(ADODB.Stream)
メソッド
void ProcessTemplateFile(String sFilePath, String sCharset="UTF-8")
sFilePath
処理されるテンプレートファイルのパス
sCharset
テンプレートファイルのエンコード

ファイルを読み込み、テンプレートとして処理します。

void ProcessTemplate(String sTemplate)
sTemplate
処理されるテンプレート文字列

文字列をテンプレートとして処理します。

void Write(String sWritten, Bool bHTMLEncode)
sWritten
Streamに書かれる文字列
bHTMLEncode
書き込み時にHTMLエンコードするか否か

Streamに文字列を書き込みます。

String Flush()
戻り値
Streamに溜まっていた文字列

Streamに溜まっている文字列を取得し、Streamを空にします。

置換
(#xxx#)
xxx
Scriptにセットされているオブジェクトのメンバ名。

TextTemplatorはテンプレート中に "(#xxx#)" が見つかると
Scriptにセットされているオブジェクトのメンバ "xxx" を呼び出します。
メンバ "xxx" はプロパティ、メソッドのどちらでもかまいません。
INaspedTemplatorとは違い、置換記号はありません。

○"xxx" がプロパティの場合
そのプロパティの値がテンプレートに置換されます。
○"xxx" がメソッドの場合
そのメソッドが呼び出され戻り値がテンプレートに置換されます。
メソッド形式: Variant xxx(Object oTextTemplator, Variant vParam)

IUtility

便利なメソッドを提供します。

メソッド
String MakeKey(long nLen, String sMaterial="ABCDEFGHIJKLMNOPQRSTUVWXYZ")
nLen
作成する文字列の長さ
sMaterial
文字列を作成するときに使用する文字群
戻り値
ランダムな文字列

ランダムな文字列を生成します。

String MakeGUID(Bool bShort=True)
bShort
短形式か否か
戻り値
GUID文字列

GUIDを生成します。
bShort詳細:
 ○True :CE875870999D4663AF908BC61EECBEC0
 ○False:{CE875870-999D-4663-AF90-8BC61EECBEC0}

void Sleep(long nMilliseconds)
nMilliseconds
待機する時間(ミリ秒)

処理を nMilliseconds(ミリ秒) の間待機します。

String MD5(Variant vData)
vData
MD5計算元データ(Byte()、String)
戻り値
MD5値

MD5値を計算します。

Bool FindString(Variant* pStrings, Variant* pTargets)
pStrings
検索されるの文字列、または文字列の配列
pTargets
検索する文字列、または文字列の配列
戻り値
pStringsの中にpTargetsがあるか否か

pStringsの中にpTargetsがあるか否かを調べます。

String HanToZen(String sSource)
sSource
半角文字を含んだ文字列
戻り値
全角文字への変換後の文字列

半角文字を含んだ文字列を全角文字へ変換します。

String ZenToHan(String sSource)
sSource
全角文字を含んだ文字列
戻り値
半角文字への変換後の文字列

全角文字を含んだ文字列を半角文字へ変換します。

更新履歴
2007/12/19
  • Version: 1.0.0.0
2008/01/15
  • Version: 1.0.1.0
  • レジストリ登録時に ThreadingModel=Apartment の設定を追加
2008/02/08
  • Version: 1.2.1.0
  • TextTemplator追加
  • Utility追加