ASP一个仿phplib的模板类

王朝php·作者佚名  2006-11-24
宽屏版  字体: |||超大  

用php用惯了,用phplib用惯了,没有他觉得很不舒服

上网查找没有人写,自己写了一个,asp水平不高,希望

能有高手指点修改。

<%

' ====================================

' Name: Template Class

' Purpose: Parse and output HTML page

' Date: 10.2002

' Author: pig

' Email: pigzjq@sina.com

' Phone: 13910320759

' ====================================

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

if ps_name="" then

ps_name=ps_handle

end if

ls_string=of_getVar(ps_parent)

ls_pattern = "<!--\s*BEGIN "&ps_handle&"\s*-->(.*)<!--\s*END "&ps_handle&"\s*-->"

Set regEx = New RegExp

regEx.Pattern = "\n"

regEx.IgnoreCase = false

regEx.global = true

ls_string = regEx.Replace(ls_string,"")

regEx.Pattern = ls_pattern

regEx.Multiline = true

regEx.global = false

Set Matches = regEx.Execute(ls_string)

ls_string = regEx.Replace(ls_string,"{"&ps_name&"}")

For Each Match in Matches

ls_value=Match.value

Next

regEx.Pattern = "<!--\s*BEGIN "&ps_handle&"\s*-->"

regEx.IgnoreCase = false

regEx.global = true

ls_value = regEx.Replace(ls_value,"")

regEx.Pattern = "<!--\s*END "&ps_handle&"\s*-->"

regEx.IgnoreCase = false

regEx.global = true

ls_value = regEx.Replace(ls_value,"")

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

ls_str=of_getVar(ps_handle)

li_minIndex=LBound(gs_keys)

li_maxIndex=UBound(gs_keys)

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

 

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有