📄 asptemplate.asp
字号:
<%
' ASP Template 1.2.1
' Copyright (C) 2001-2004 Valerio Santinelli
'
' This library is free software; you can redistribute it and/or
' modify it under the terms of the GNU Lesser General Public
' License as published by the Free Software Foundation; either
' version 2.1 of the License, or (at your option) any later version.
'
' This library is distributed in the hope that it will be useful,
' but WITHOUT ANY WARRANTY; without even the implied warranty of
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
' Lesser General Public License for more details.
'
' You should have received a copy of the GNU Lesser General Public
' License along with this library; if not, write to the Free Software
' Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'
' ---------------------------------------------------------------------------
'
' ASP Template main class file
'
' Author: Valerio Santinelli <tanis@altralogica.it>
' $Id: asptemplate.asp 52 2007-01-26 06:54:41Z mrtwice $
'
'===============================================================================
' Name: ASPTemplate Class
' Purpose: HTML separation class
' Functions:
' <functions' list in alphabetical order>
' Properties:
' <properties' list in alphabetical order>
' Methods:
' <Methods' list in alphabetical order>
' Author: Valerio Santinelli <tanis@mediacom.it>
' Start: 2001/01/01
' Modified: 2001/12/19
'===============================================================================
class ASPTemplate
' Contains the error objects
private p_error
' Print error messages?
private p_print_errors
' What to do with unknown tags (keep, remove or comment)?
private p_unknowns
' Opening delimiter (usually "{{")
private p_var_tag_o
' Closing delimiter (usually "}}")
private p_var_tag_c
'private p_start_block_delimiter_o
'private p_start_block_delimiter_c
'private p_end_block_delimiter_o
'private p_end_block_delimiter_c
'private p_int_block_delimiter
private p_template
private p_variables_list
private p_blocks_list
private p_blocks_name_list
private p_regexp
private p_parsed_blocks_list
private p_boolSubMatchesAllowed
' Directory containing HTML templates
private p_templates_dir
'===============================================================================
' Name: class_Initialize
' Purpose: Constructor
' Remarks: None
'===============================================================================
private sub class_Initialize
p_print_errors = FALSE
p_unknowns = "keep"
' Remember that opening and closing tags are being used in regular expressions
' and must be explicitly escaped
p_var_tag_o = "\{\{"
p_var_tag_c = "\}\}"
' Block delimiters are actually disabled and no longer available. Maybe they'll be again
' in the future.
'p_start_block_delimiter_o = "<!-- BEGIN "
'p_start_block_delimiter_c = " -->"
'p_end_block_delimiter_o = "<!-- END "
'p_end_block_delimiter_c = " -->"
'p_int_block_delimiter = "__"
p_templates_dir = "templates/"
set p_variables_list = createobject("Scripting.Dictionary")
set p_blocks_list = createobject("Scripting.Dictionary")
set p_blocks_name_list = createobject("Scripting.Dictionary")
set p_parsed_blocks_list = createobject("Scripting.Dictionary")
p_template = ""
p_boolSubMatchesAllowed = not (ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion & "." & ScriptEngineBuildVersion < "5.5")
Set p_regexp = New RegExp
end sub
'===============================================================================
' Name: SetTemplatesDir
' Input:
' dir as Variant Directory
' Output:
' Purpose: Sets the directory containing html templates
' Remarks: None
'===============================================================================
public sub SetTemplatesDir(dir)
p_templates_dir = dir
end sub
'===============================================================================
' Name: SetTemplate
' Input:
' template as Variant String containing the template
' Output:
' Purpose: Sets a template passed through a string argument
' Remarks: None
'===============================================================================
public sub SetTemplate(template)
p_template = template
end sub
'===============================================================================
' Name: GetTemplate
' Input:
' Output:
' template as Variant String
' Purpose: returns template as a string
' Remarks: None
'===============================================================================
public function GetTemplate
GetTemplate = p_template
end function
'===============================================================================
' Name: SetUnknowns
' Input:
' action as String containing the action to perform with unrecognized
' tags in the template
' Output:
' Purpose: Sets a variable passed through a string argument
' Remarks: The action can be one of the following:
' - 'keep': leave the tags untouched
' - 'remove': remove the tags from the output
' - 'comment': mark the tags as HTML comment
'===============================================================================
public sub SetUnknowns(action)
if (action <> "keep") and (action <> "remove") and (action <> "comment") then
p_unknowns = "keep"
else
p_unknowns = action
end if
end sub
'===============================================================================
' Name: SetTemplateFile
' Input:
' inFileName as Variant Name of the file to read the template from
' Output:
' Purpose: Sets a template given the filename to load the template from
' Remarks: None
'===============================================================================
public sub SetTemplateFile(inFileName)
dim FSO, oFile
if len(inFileName) > 0 then
set FSO = createobject("Scripting.FileSystemObject")
'response.write server.mappath(p_templates_dir & inFileName)
if FSO.FileExists(server.mappath(p_templates_dir & inFileName)) then
set oFile = FSO.OpenTextFile(server.mappath(p_templates_dir & inFileName), 1)
p_template = oFile.ReadAll
oFile.Close
set oFile = nothing
else
response.write "<b>ASPTemplate Error: File [" & inFileName & "] does not exists!</b><br>"
end if
set FSO = nothing
else
response.write "<b>ASPTemplate Error: SetTemplateFile missing filename.</b><br>"
end if
end sub
'===============================================================================
' Name: SetVariable
' Input:
' s as Variant - Variable name
' v as Variant - Value
' Output:
' Purpose: Sets a variable given it's name and value
' Remarks: None
'===============================================================================
public sub SetVariable(s, v)
if p_variables_list.Exists(s) then
p_variables_list.Remove s
p_variables_list.Add s, v
else
p_variables_list.Add s, v
end if
end sub
'===============================================================================
' Name: Append
' Input:
' s as Variant - Variable name
' v as Variant - Value
' Output:
' Purpose: Sets a variable appending the new value to the existing one
' Remarks: None
'===============================================================================
public sub Append(s, v)
Dim tmp
if p_variables_list.Exists(s) then
tmp = p_variables_list.Item(s) & v
p_variables_list.Remove s
p_variables_list.Add s, tmp
else
p_variables_list.Add s, v
end if
end sub
'===============================================================================
' Name: SetVariableFile
' Input:
' s as Variant Variable name
' inFileName as Variant Name of the file to read the value from
' Output:
' Purpose: Load a file into a variable's value
' Remarks: None
'===============================================================================
public sub SetVariableFile(s, inFileName)
if len(inFileName) > 0 then
dim FSO, oFile
set FSO = createobject("Scripting.FileSystemObject")
if FSO.FileExists(server.mappath(p_templates_dir & inFileName)) then
set oFile = FSO.OpenTextFile(server.mappath(p_templates_dir & inFileName))
ReplaceBlock s, oFile.ReadAll
oFile.Close
set oFile = Nothing
else
response.write "<b>ASPTemplate Error: File [" & inFileName & "] does not exists!</b><br>"
end if
set FSO = nothing
else
'Filename was never passed!
end if
end sub
'===============================================================================
' Name: ReplaceBlock
' Input:
' s as Variant Variable name
' inFile as Variant Content of the file to place in the template
' Output:
' Purpose: Function used by SetVariableFile to load a file and replace it
' into the template in place of a variable
' Remarks: None
'===============================================================================
public sub ReplaceBlock(s, inFile)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -