日期:2010-06-19  浏览次数:21261 次

   用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_stri