class Template
dim gs_root
dim gs_handle()
dim gs_file()
dim gs_keys()
dim gs_keyVars()
dim gs_vars()
'建構函式
Private Sub Template_Initialize()
call of_setRoot(".")
'call of_redimVar()
End Sub
function of_redimVar()
redim gs_handle(0)
redim gs_file(0)
redim gs_keys(0)
redim gs_keyVars(0)
redim gs_vars(0)
end function
'設定模板存放路徑
function of_setRoot(byVal ps_root)
if ps_root <> "" then
gs_root = ps_root
end if
end function
'設定檔案名稱函數
function of_setFile(byVal ps_fileHandle,byVal ps_fileName)
if ps_fileName <> "" then
li_maxNum=UBound(gs_handle)
gs_handle(li_maxNum) = ps_fileHandle
gs_file(li_maxNum) = gs_root+"/"+ps_fileName
li_maxNum=li_maxNum+1
redim Preserve gs_handle(li_maxNum)
redim Preserve gs_file(li_maxNum)
end if
end function
'設定要替換的參數變數
function of_setVar(byVal ps_key,byVal ps_var)
if ps_key <> "" and ps_var <> "" then
li_keyIndex=of_getIndex(gs_keys,ps_key)
if li_keyIndex="no" then
li_maxNum=UBound(gs_keys)
gs_keys(li_maxNum)=ps_key
gs_keyVars(li_maxNum)="\{" & ps_key & "\}"
gs_vars(li_maxNum)=ps_var
li_maxNum=li_maxNum+1
redim Preserve gs_keys(li_maxNum)
redim Preserve gs_keyVars(li_maxNum)
redim Preserve gs_vars(li_maxNum)
else
gs_keys(li_keyIndex)=ps_key
gs_keyVars(li_keyIndex)="\{" & ps_key & "\}"
gs_vars(li_keyIndex)=ps_var
end if
end if
end function
'定義重載文字塊兒
function of_setBlock(byVal ps_parent,byVal ps_handle,byVal ps_name)
if (not of_loadFile(ps_parent)) then
ls_error="of_loadFile unable to load "+ps_parent
response.write(ls_error)
of_setBlock=false
exit function
end if
call of_setVar(ps_handle,ls_value)
call of_setVar(ps_parent,ls_string)
end function
'裝載變數內容
function of_loadFile(byVal ps_handle)
li_keyIndex=of_getIndex(gs_keys,ps_handle)
if li_keyIndex = "no" then
li_fileIndex=of_getIndex(gs_handle,ps_handle)
if li_fileIndex = "no" then
ls_error="loadfile:"+ps_handle+" is not a valid handle."
response.write(ls_error)
of_loadFile=false
exit function
end if
ls_fileName=gs_file(li_fileIndex)
ls_fileName=server.mappath(ls_fileName)
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
li_exist=MyFileObject.FileExists(ls_fileName)
if li_exist then
Set MyTextFile=MyFileObject.OpenTextFile(ls_fileName)
ls_file=MyTextFile.readAll()
MyTextFile.Close
call of_setVar(ps_handle,ls_file)
else
ls_error="loadfile:"+ls_fileName+" is not a valid file or path."
response.write(ls_error)
of_loadFile=false
exit function
end if
end if
of_loadFile=true
end function
'變數替換過程
function of_replace(byval ps_handle)
if (not of_loadFile(ps_handle)) then
ls_error="of_replace: unable to load "+ps_handle
response.write(ls_error)
of_replace=false
exit function
end if
for i=li_minIndex to li_maxIndex
Set regEx = New RegExp
regEx.Pattern = gs_keyVars(i)
regEx.IgnoreCase = True
ls_str = regEx.Replace(ls_str, gs_vars(i))
next
of_replace=ls_str
end function
'擷取儲存變數
function of_getVar(byval ps_keyName)
li_keyIndex=of_getIndex(gs_keys,ps_keyName)
if(li_keyIndex="no") then
of_getVar=""
else
ls_varName=gs_vars(li_keyIndex)
of_getVar=ls_varName
end if
end function
'尋找數組中相應字串的索引值
function of_getIndex(byval ps_array,byval ps_handle)
li_minIndex=LBound(ps_array)
li_maxIndex=UBound(ps_array)
li_index="no"
for i=li_minIndex to li_maxIndex
if (ps_array(i)=ps_handle) then
li_index=i
exit for
end if
next
of_getIndex=li_index
end function
'分析變數
function of_parse(byval ps_target,byval ps_handle,byval ps_append)
ls_string = of_replace(ps_handle)
if ps_append=true then
ls_org = of_getVar(ps_target) & ls_string
'if pi_time=2 then
' response.write(ls_string)
' exit function
'end if
call of_setVar(ps_target,ls_org)
else
call of_setVar(ps_target,ls_string)
end if
end function
function of_print(byval ps_keyName)
li_keyIndex=of_getIndex(gs_keys,ps_keyName)
ls_varString=gs_vars(li_keyIndex)
Set regEx = New RegExp
regEx.Pattern = "{[^ \t\r\n}]+}"
regEx.IgnoreCase = True
ls_varString = regEx.Replace(ls_varString, "")
of_print=ls_varString
end function
end class
%>