韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

aspTemplate : 類似 phpLib::Template 的分離層完成

aspTemplate : 類似 phpLib::Template 的分離層完成

更新時(shí)間:2021-01-08 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

MVC 模式在網(wǎng)站架構(gòu)中十分常見。它允許我們建立一個(gè)三層結(jié)構(gòu)的應(yīng)用程式,從代碼中分離出有用的層,幫助設(shè)計(jì)師和開發(fā)者協(xié)同工作以及提高我們維護(hù)和擴(kuò)展既有程式的能力。
PHP 中有一個(gè)很著名的類庫 phpLib,其中有 Template 模板類。能夠很方便地實(shí)現(xiàn)代碼分離在 ASP 中是否也可以這樣做呢?當(dāng)然可以,這就是 aspTemplate 的初衷。它完全實(shí)現(xiàn)了 phpLib Template 的全部功能,你可以象使用 phpLib Template 一樣使用它,連習(xí)慣也基本不用改。:)

<%

'#######################################################################
'## NAME: aspTemplate
'## BY: BigHan
'## DATE: Nov. 28, 2003
'## SITE: http://aspTemplate.yeah.net/
'## EMAIL: aspTemplate@21cn.com
'##
'## (C) Copyright 2003-2004 bighan
'#######################################################################



Class aspTemplate

'####
'## name of this class
'## var string
'## @access Private
'## @see property: Name
'####
Private m_strName

'####
'## version of this class
'## var string
'## @access Private
'## @see property: Version
'####
Private m_strVersion

'####
'## Determines how much debugging output Template will produce.
'## This is a bitwise mask of available debug levels:
'## 0 = no debugging
'## 1 = debug variable assignments
'## 2 = debug calls to get variable
'## 4 = debug internals (outputs all function calls with parameters).
'##
'## @var int
'## @access Private
'## @see property: Debug
'####
Private m_intDebug

'####
'## The base directory from which template files are loaded.
'##
'## @var string
'## @access private
'## @see property: Root, Dir; method: SetRoot, set_root
'####
Private m_strRoot

'####
'## Determines how to output variable tags with no assigned value in templates.
'##
'## @var string
'## @access private
'## @see property Unknown; method: SetUnknowns, set_unknowns
'####
Private m_strUnknowns

'####
'## Determines how Template handles error conditions.
'## "yes" = the error is reported, then execution is halted
'## "report" = the error is reported, then execution continues by returning "false"
'## "no" = errors are silently ignored, and execution resumes reporting "false"
'##
'## @var string
'## @access private
'## @see property IsHalt; method: halt
'####
Private m_strHaltError

'####
'## The last error message is retained in this variable.
'##
'## @var string
'## @access private
'## @see property LastError
'##
Private m_strLastError

'####
'## Opening delimiter (usually "{")
'##
'## @var string
'## @access private
'## @see property BeginTag
'####
Private m_strBeginTag

'####
'## Closing delimiter (usually "}")
'##
'## @var string
'## @access private
'## @see private EndTag
'####
Private m_strEndTag

'####
'## A hash of strings forming a translation table which translates variable names
'## into names of files containing the variable content.
'## m_oFile.Item(varname) = "filename";
'##
'## @var object
'## @access private
'## @see method: SetFile, SetFiles, set_file
'####
Private m_oFile

'####
'## Regular Expression Object
'##
'## @var object
'## @access private
'####
Private m_oRegExp

'####
'## A hash of strings forming a translation table which translates variable names
'## into regular expressions for themselves.
'## m_oVarKeys.Item(varname) = "{varname}"
'##
'## @var object
'## @access private
'## @see method: SetVar, SetVars, SetAppendVar, SetAppendVars, set_var
'####
Private m_oVarKeys

'####
'## A hash of strings forming a translation table which translates variable names
'## into values for their respective varkeys.
'## m_oVarVals.Item(varname) = "value"
'##
'## @var object
'## @access private
'## @see method: SetVar, SetVars, SetAppendVar, SetAppendVars, set_var
'####
Private m_oVarVals

'####
'## get class name attribute.
'##
'## usage: oTemplate.Name
'## access public
'##
Public Property Get Name()
'############################################################
Name = m_strName
End Property

'####
'## get class version attribute.
'##
'## usage: oTemplate.Version
'## access public
'##
Public Property Get Version()
'############################################################
Version = m_strVersion
End Property

'####
'## get/set m_intDebug attribute.
'##
'## usage: oTemplate.Debug = A_intDebug
'## access public
'##
Public Property Let Debug(ByVal A_intDebug)
'############################################################
m_intDebug = CInt(A_intDebug)
End Property

Public Property Get Debug()
Debug = m_intDebug
End Property

'####
'## Sets the policy for dealing with unresolved variable names.
'##
'## unknowns defines what to do with undefined template variables
'## "remove" = remove undefined variables
'## "comment" = replace undefined variables with comments
'## "keep" = keep undefined variables
'##
'## Note: "comment" can cause unexpected results when the variable tag is embedded
'## inside an HTML tag, for example a tag which is expected to be replaced with a URL.
'##
'## usage: oTemplate.Unknown = A_unknowns
'##
'## @param A_unknowns new value for unknowns
'## @see unknowns, SetUnknowns, set_unknowns
'## @access public
'##
Public Property Let Unknown(ByVal A_unknowns)
'############################################################
If Debug = 4 Then Response.Write "<p><b>Unknown:</b> unknown = " & A_unknowns & "</p>" & VbCrLf
A_unknowns = LCase(A_unknowns)
Select Case A_unknowns
Case "keep"
m_strUnknowns = "keep"
Case "remove"
m_strUnknowns = "remove"
Case "comment"
m_strUnknowns = "comment"
Case Else
m_strUnknowns = "remove"
End Select
End Property

Public Property Get Unknown()
Unknown = m_strUnknowns
End Property

'####
'## Checks that root is a valid directory and if so sets this directory as the
'## base directory from which templates are loaded by storing the value in
'## Root. Relative filenames are prepended with the path in Root.
'##
'## usage: oTemplate.Root = A_root
'##
'## @param A_root string containing new template directory
'## @see m_strRoot, SetRoot, set_root
'## @access public
'##
Public Property Let Root(ByVal A_root)
'############################################################
If Debug = 4 Then Response.Write "<p><b>Root:</b> root = " & A_root & "</p>" & VbCrLf
Dim MM_FSO
If Len(A_root) > 0 Then
Set MM_FSO = CreateObject("Scripting.FileSystemObject")
If MM_FSO.FolderExists(Server.MapPath(A_root)) Then
If Right(A_root, 1) <> "/" Then
m_strRoot = A_root & "/"
Else
m_strRoot = A_root
End If
Else
Call halt("The folder " & A_root & " does not exist.")
End If
End If
End Property

Public Property Get Root()
Root = m_strRoot
End Property

'####
'##
'## alias of Root
'##
Public Property Let Dir(ByVal A_root)
'############################################################
Root = A_root
End Property

Public Property Get Dir()
Dir = Root
End Property

'####
'## Set/Get class m_strHaltError attribute.
'##
'## "yes" = the error is reported, then execution is halted.
'## "no" = errors are silently ignored.
'## "report" = the error is reported, then execution continues.
'##
'## usage: oTemplate.IsHalt = A_strHalt
'##
'## @param A_strHalt new value for m_strHaltError
'## @see Halt
'## @access public
'##
Public Property Let IsHalt(ByVal A_strHalt)
'############################################################
A_strHalt = LCase(A_strHalt)
Select Case A_strHalt
Case "yes"
m_strHaltError = "yes"
Case "no"
m_strHaltError = "no"
Case "report"
m_strHaltError = "report"
End Select
End Property

Public Property Get IsHalt()
IsHalt = m_strHaltError
End Property

'####
'## Set/Get class m_strBeginTag attribute.
'##
'## Note: Don't conflict of HTML tag
'##
'## usage: oTemplate.BeginTag = A_tag
'##
'## @param A_tag new value for m_strBeginTag
'## @access public
'##
Public Property Let BeginTag(ByVal A_tag)
'############################################################
If Debug = 4 Then Response.Write "<p><b>BeginTag:</b> BeginTag = " & A_tag & "</p>" & VbCrLf
m_strBeginTag = A_tag
End Property

Public Property Get BeginTag()
BeginTag = m_strBeginTag
End Property

'####
'## Set/Get class m_strEndTag attribute.
'##
'## Note: Don't conflict of HTML tag
'##
'## usage: oTemplate.EndTag = A_tag
'##
'## @param A_tag new value for m_strEndTag
'## @access public
'##
Public Property Let EndTag(ByVal A_tag)
'############################################################
If Debug = 4 Then Response.Write "<p><b>EndTag:</b> EndTag = " & A_tag & "</p>" & VbCrLf
m_strEndTag = A_tag
End Property

Public Property Get EndTag()
EndTag = m_strEndTag
End Property

'####
'## Get class last error messages.
'##
'## usage: oTemplate.LastError
'##
'## @access public
'##
Public Property Get LastError()
'############################################################
LastError = m_strLastError
End Property

'####
'##
'## @see Root
'##
Public Sub SetRoot(ByVal A_root)
'############################################################
Root = A_root
End Sub

'## @same phplib::template->set_root
Public Sub set_root(ByVal A_root)
Root = A_root
End Sub

'####
'##
'## @see Unknown
'##
Public Sub SetUnknowns(ByVal A_unknowns)
'############################################################
Unknown = A_unknowns
End Sub

'## @same phplib::template->set_root
Public Sub set_unknowns(ByVal A_unknowns)
Unknown = A_unknowns
End Sub

'####
'## Defines a filename for the initial value of a variable.
'##
'## It may be passed either a varname and a file name as two strings or
'## a hash of strings with the key being the varname and the value
'## being the file name.
'##
'## The new mappings are stored in the object m_oFile.
'## The files are not loaded yet, but only when needed.
'##
'##
'## usage: oTemplate.SetFile A_varname, A_filename
'## or
'## usage: oTemplate.SetFile array(A_varname1, A_filename1 _
'## ,A_varname2, A_filename2 _
'## ,.... .... , ,,,. ,,,, ) _
'## , ""
'## @see SetFiles
'## @param A_varname either a string containing a varname or a hash of varname/file name pairs.
'## @param A_filename if varname is a string this is the filename otherwise filename is not required
'## @access public
'##
Public Sub SetFile(ByVal A_varname, ByVal A_filename)
'############################################################
Dim MM_strFiles
If Not IsArray(A_varname) Then
If Debug = 4 Then Response.Write "<p><b>SetFile:</b> (with scalar) varname = "& A_varname &", filename = "& A_filename &"</p>" & VbCrLf
If A_filename = "" Then
Call halt("SetFile: For varname " & A_filename & " filename is empty.")
Exit Sub
End If
MM_strFiles = filename(A_filename)
m_oFile.Add A_varname, MM_strFiles
Else
Call SetFiles(A_varname)
End If
End Sub

'####
'## Defines a multi-filename for the initial value of a variable.
'##
'## usage: oTemplate.SetFiles array(A_varname1, A_filename1 _
'## ,A_varname2, A_filename2 _
'## ,.... .... , ,,,. ,,,, )
'## @param array A_varname
'## @access public
'## @see SetFile
'##
Public Sub SetFiles(ByVal A_varname)
'############################################################
Dim i, num
If IsArray(A_varname) Then
num = Ubound(A_varname)
if ((num +1) mod 2) <> 0 Then
Call halt("SetFiles: For varname array's element not gemination.")
Exit Sub
Else
For i = 0 To num Step 2
Call SetFile(A_varname(i), A_varname(i+1))
Next
End If
Else
Call SetFile(A_varname, "")
End If
End Sub

'## @same phplib::template->set_file
Public Sub set_file(ByVal A_varname, ByVal A_filename)
Call SetFile(A_varname, A_filename)
End Sub

'####
'## A variable $parent may contain a variable block defined by:
'## &lt;!-- BEGIN A_varname --&gt; content &lt;!-- END A_varname --&gt;. This function removes
'## that block from $parent and replaces it with a variable reference named $name.
'## The block is inserted into the varkeys and varvals hashes. If A_name is
'## omitted, it is assumed to be the same as A_varname.
'##
'## Blocks may be nested but care must be taken to extract the blocks in order
'## from the innermost block to the outermost block.
'##
'## usage: oTemplate.SetBlock string A_parent, string A_parent, string A_name
'##
'## @param A_parent a string containing the name of the parent variable
'## @param A_varname a string containing the name of the block to be extracted
'## @param A_name the name of the variable in which to store the block
'## @access public
'##
Public Sub SetBlock(ByVal A_parent, ByVal A_varname, ByVal A_name)
'############################################################
Dim MM_String, MM_MatchString
If Debug = 4 Then Response.Write "<p><b>SetBlock:</b> parent = " & A_parent & ", varname = " & A_varname & ", name = " & A_name & "</p>" & VbCrLf
If Not loadfile(A_parent) Then
Call halt("SetBlock: unable to load " & A_parent & ".")
Exit Sub
End If
if A_name = "" Then A_name = A_varname
MM_String = GetVar(A_parent)
m_oRegExp.IgnoreCase = True
m_oRegExp.Global = True
m_oRegExp.Pattern = "<!--\s+BEGIN\s+(" & A_varname & ")\s+-->([\s\S.]*)<!--\s+END\s+\1\s+-->"
Set Matches = m_oRegExp.Execute(MM_String)
For Each Match In Matches
MM_MatchString = Match.SubMatches(1)
MM_String = m_oRegExp.Replace(MM_String, BeginTag & A_name & EndTag)
Call SetVar(A_varname,MM_MatchString)
Call SetVar(A_parent,MM_String)
Next
End Sub

'## @same phplib::template->set_block
Public Sub set_block(ByVal A_parent, ByVal A_varname, ByVal A_name)
Call SetBlock(A_parent, A_varname, A_name)
End Sub

'####
'## This functions sets the value of a variable.
'##
'## It may be called with either a varname and a value as two strings or an
'## an associative array with the key being the varname and the value being
'## the new variable value.
'##
'## The function inserts the new value of the variable into the $varkeys and
'## $varvals hashes. It is not necessary for a variable to exist in these hashes
'## before calling this function.
'##
'## usage: oTemplate.SetVar string A_varname, string A_value
'## or
'## usage: oTemplate.SetVar array( A_varname1, A_value1 _
'## ,A_varname2, A_value2 _
'## , ... , ... ) _
'## , ""
'##
'## @param A_varname either a string containing a varname or a hash of varname/value pairs.
'## @param A_value if A_varname is a string this contains the new value for the variable otherwise this parameter is ignored
'## @access public
'##
Public Sub SetVar(ByVal A_varname, ByVal A_value)
'############################################################
Dim MM_varname
If Not IsArray(A_varname) Then
If A_varname <> "" Then
If Debug = 1 Then Response.Write "<b>SetVar:</b> (with scalar) <b>" & A_varname & "</b> = " & Server.HTMLEncode(A_value) & "<br>" & VbCrLf
MM_varname = varname(A_varname)
if m_oVarKeys.Exists(A_varname) Then
m_oVarKeys.Remove A_varname
m_oVarKeys.Add A_varname, MM_varname
Else
m_oVarKeys.Add A_varname, MM_varname
End If
If m_oVarVals.Exists(A_varname) Then
m_oVarVals.Remove A_varname
m_oVarVals.Add A_varname, A_value
Else
m_oVarVals.Add A_varname, A_value
End If
End If
Else
Call SetVars(A_varname)
End If
End Sub

'####
'## usage: oTemplate.SetVar array( A_varname1, A_value1 _
'## ,A_varname2, A_value2 _
'## , ... , ... )
'## @param A_varname a hash of varname/value pairs.
'## @access public
'## @see SetVar
'##
Public Sub SetVars(ByVal A_varname)
'############################################################
Dim i, num
If IsArray(A_varname) Then
num = Ubound(A_varname)
if ((num +1) mod 2) <> 0 Then
Call halt("SetVars: For varname array's element not gemination.")
Exit Sub
Else
For i = 0 To num Step 2
Call SetVar(A_varname(i), A_varname(i+1))
Next
End If
Else
Call SetVar(A_varname, "")
End If
End Sub

'####
'## usage: oTemplate.SetAppendVar string A_varname, string A_value
'## or
'## usage: oTemplate.SetAppendVar array( A_varname1, A_value1 _
'## ,A_varname2, A_value2 _
'## , ... , ... ) _
'## , ""
'## @param A_varname either a string containing a varname or a hash of varname/value pairs.
'## @param A_value if A_varname is a string this contains the new value for the variable otherwise this parameter is ignored
'## @access public
'## @see SetVar
'##
Public Sub SetAppendVar(ByVal A_varname, ByVal A_value)
'############################################################
Dim MM_varname, MM_string
If Not IsArray(A_varname) Then
If A_varname <> "" Then
If Debug = 1 Then Response.Write "<b>SetAppendVar:</b> (with scalar) <b>" & A_varname & "</b> = " & Server.HTMLEncode(A_value) & "<br>" & VbCrLf
MM_varname = varname(A_varname)
if m_oVarKeys.Exists(A_varname) Then
m_oVarKeys.Remove A_varname
m_oVarKeys.Add A_varname, MM_varname
Else
m_oVarKeys.Add A_varname, MM_varname
End If
If m_oVarVals.Exists(A_varname) Then
MM_string = m_oVarVals.Item(A_varname) & A_value
m_oVarVals.Remove A_varname
m_oVarVals.Add A_varname, MM_string
Else
m_oVarVals.Add A_varname, A_value
End If
End If
Else
Call SetAppendVars(A_varname)
End If
End Sub

'####
'## usage: oTemplate.SetAppendVars array( A_varname1, A_value1 _
'## ,A_varname2, A_value2 _
'## , ... , ... )
'## @param A_varname a hash of varname/value pairs.
'## @access public
'## @see SetVar
'##
Public Sub SetAppendVars(ByVal A_varname)
'############################################################
Dim i, num
If IsArray(A_varname) Then
num = Ubound(A_varname)
if ((num +1) mod 2) <> 0 Then
Call halt("SetVars: For varname array's element not gemination.")
Exit Sub
Else
For i = 0 To num Step 2
Call SetAppendVar(A_varname(i), A_varname(i+1))
Next
End If
Else
Call SetAppendVar(A_varname, "")
End If
End Sub

'####
'##
'## @same phplib::template->set_var
'##
Public Sub set_var(ByVal A_varname, ByVal A_value, ByVal A_append)
'############################################################
If CBool(A_append) = True Then
If Not IsArray(A_varname) Then
Call SetAppendVar(A_varname, A_value)
Else
Call SetAppendVars(A_varname, A_value)
End If
Else
If Not IsArray(A_varname) Then
Call SetVar(A_varname, A_value)
Else
Call SetVars(A_varname, A_value)
End If
End If
End Sub

'####
'## This function fills in all the variables contained within the variable named
'## A_varname. The resulting value is returned as the function result and the
'## original value of the variable varname is not changed. The resulting string
'## is not "finished", that is, the unresolved variable name policy has not been
'## applied yet.
'##
'## Returns: the value of the variable $varname with all variables substituted.
'##
'## usage: SubString(string A_varname)
'##
'## @param A_varname the name of the variable within which variables are to be substituted
'## @access public
'## @return string
'##
Public Function SubString(ByVal A_varname)
'############################################################
Dim MM_String
If Debug = 4 Then Response.Write "<p><b>SubString:</b> varname = " & A_varname & "</p>" & VbCrLf
If Not loadfile(A_varname) Then
Call halt("SubString: unable to load " & A_varname & ".")
End If
MM_String = GetVar(A_varname)
m_oRegExp.IgnoreCase = True
m_oRegExp.Global = True
m_oRegExp.Pattern = "(" & BeginTag & ")([^ \t\r\n" & EndTag &"]+)" & EndTag
Set Matches = m_oRegExp.Execute(MM_String)
For Each Match In Matches
if m_oVarVals.Exists(Match.SubMatches(1)) Then
m_oRegExp.Pattern = Match.Value
MM_String = m_oRegExp.Replace(MM_String, m_oVarVals.Item(Match.SubMatches(1)))
End If
Next
SubString = MM_String
End Function

'####
'##
'## @same phplib::template->subst
'##
Public Function subst(ByVal A_varname)
subst = SubString(A_varname)
End Function

'####
'## This is shorthand for print SubString(A_varname). See SubString for further
'## details.
'##
'## usage: oTemplate.WriteSubString string A_varname
'##
'## @param A_varname the name of the variable within which variables are to be substituted
'## @access public
'## @see SubString
'##
Public Sub WriteSubString(ByVal A_varname)
'############################################################
If Debug = 4 Then Response.Write "<p><b>WriteSubString:</b> varname = " & A_varname & "</p>" & VbCrLf
Response.Write SubString(A_varname)
End Sub

'####
'##
'## @same phplib::template->psubst
'##
Public Sub psubst(ByVal A_varname)
Call WriteSubString(A_varname)
End Sub

'####
'## The function substitutes the values of all defined variables in the variable
'## named A_varname and stores or appends the result in the variable named A_target.
'##
'## It may be called with either a target and a varname as two strings or a
'## target as a string and an array of variable names in varname.
'##
'## The function inserts the new value of the variable into the oVarVeys and
'## $varvals hashes. It is not necessary for a variable to exist in these hashes
'## before calling this function.
'##
'## An optional third parameter allows the value for each varname to be appended
'## to the existing target variable instead of replacing it. The default is to
'## replace.
'##
'## If A_target and A_varname are both strings, the substituted value of the
'## variable A_varname is inserted into or appended to A_target.
'##
'## Returns: the last value assigned to A_target.
'##
'## usage: oTemplate.Parse string A_target, string A_varname, boolean A_append
'## usage: string = oTemplate.Parse( string A_target, string A_varname, boolean A_append )
'## or
'## usage: oTemplate.Parse string A_target, array(A_varname1, A_varname2, ...) , boolean A_append
'## usage: string = oTemplate.Parse( string A_target, array(A_varname1, A_varname2, ...), boolean A_append)
'##
'## @param A_target a string containing the name of the variable into which substituted $varnames are to be stored
'## @param A_varname if a string, the name the name of the variable to substitute or if an array a list of variables to be substituted
'## @param A_append if true, the substituted variables are appended to $target otherwise the existing value of $target is replaced
'## @access public
'## @return string
'## @see SubString
'##
'## @same phplib::template->pparse
'##
Public Function Parse(ByVal A_target, ByVal A_varname, ByVal A_append)
'############################################################
Dim MM_String, i, num
If Not IsArray(A_varname) Then
If Debug = 4 Then Response.Write "<p><b>Parse:</b> (with scalar) target = " & A_target & ", varname = " & A_varname & ", append = " & A_append & "</p>" & VbCrLf
MM_String = SubString(A_varname)
if A_append = True Then
MM_String = GetVar(A_target) & MM_String
Call SetVar(A_target, MM_String)
Else
Call SetVar(A_target, MM_String)
End If
Else
num = Ubound(A_varname)
For i = 0 To num
If Debug = 4 Then Response.Write "<p><b>Parse:</b> (with array) target = " & A_target & ", varname = " & A_varname(i) & ", append = " & A_append & "</p>" & VbCrLf
MM_String = SubString(A_varname(i))
if A_append = True Then
MM_String = GetVar(A_target) & MM_String
Call SetVar(A_target, MM_String)
Else
Call SetVar(A_target, MM_String)
End If
Next
End If

If Debug = 4 Then Response.Write "<p><b>Parse:</b> completed</p>" & VbCrLf
Parse = MM_String
End Function

'####
'## This is shorthand for print Parse(...) and is functionally identical.
'## See Parse for further details.
'##
'## Returns: always returns void.
'##
'## usage: oTemplate.Write string A_target, string A_varname
'##
'## @param A_target a string containing the name of the variable into which substituted $varnames are to be stored
'## @param A_varname if a string, the name the name of the variable to substitute or if an array a list of variables to be substituted
'## @access public
'## @return void
'## @see Parse
'##
Public Sub Write(ByVal A_target, ByVal A_varname)
'############################################################
Dim MM_string
If Debug = 4 Then Response.Write "<p><b>Write:</b> passing parameters to parse...</p>" & VbCrLf
MM_string = Parse(A_target, A_varname, False)
MM_string = Finish(MM_string)
Response.Write MM_string
End Sub

'####
'##
'## @see Write
'##
Public Sub AppendWrite(ByVal A_target, ByVal A_varname)
'############################################################
Dim MM_string
If Debug = 4 Then Response.Write "<p><b>Write:</b> passing parameters to parse...</p>" & VbCrLf
MM_string = Parse(A_target, A_varname, True)
MM_string = Finish(MM_string)
Response.Write MM_string
End Sub

'####
'##
'## @same phplib::template->pparse
'##
Public Sub pparse(ByVal A_target, ByVal A_varname, ByVal A_append)
'############################################################
If CBool(A_append) = True Then
Call AppendWrite(A_target, A_varname)
Else
Call Write(A_target, A_varname)
End If
End Sub

'####
'## This function returns an associative object of all defined variables with the
'## name as the key and the value of the variable as the value.
'##
'## This is mostly useful for debugging. Also note that $this->debug can be used
'## to echo all variable assignments as they occur and to trace execution.
'##
'## Returns: a hash of all defined variable values keyed by their names.
'##
'## usage: oTemplate.get_vars()
'##
'## @access public
'## @return object
'##
Public Function GetVars()
'############################################################
If Debug = 4 Then Response.Write "<p><b>GetVars:</b> constructing dictionary of vars...</p>" & VbCrLf
Set GetVars = m_oVarVals
End Function

'####
'##
'## @same phplib::template->get_vars
'##
Public Function get_vars()
Set get_vars = GetVars()
End Function

'####
'## This function returns the value of the variable named by A_varname.
'## If A_varname references a file and that file has not been loaded yet, the
'## variable will be reported as empty.
'##
'## When called with an array of variable names this function will return a a
'## hash of variable values keyed by their names.
'##
'## Returns: a string or an array containing the value of $varname.
'##
'## usage: GetVar(string A_varname)
'## or
'## usage: GetVar(array A_varname)
'##
'## @param A_varname if a string, the name the name of the variable to get the value of, or if an array a list of variables to return the value of
'## @access public
'## @return string or object
'##
Public Function GetVar(ByVal A_varname)
'############################################################
Dim MM_String, MM_oVars, i, num
If Not IsArray(A_varname) Then
'MM_String = ""
if A_varname <> "" Then
If m_oVarVals.Exists(A_varname) Then
MM_String = m_oVarVals.Item(A_varname)
End If
End If
If Debug = 2 Then Response.Write "<b>GetVar:</b> (with scalar) <b>" & A_varname & "</b> = " & Server.HTMLEncode(MM_String) & "<br>" & VbCrLf
GetVar = MM_String
Else
Set MM_oVars = CreateObject("Scripting.Dictionary")
num = UBound(A_varname)
For i=0 To num
If m_oVarVals.Exists(A_varname(i)) Then
MM_String = m_oVarVals.Item(A_varname(i))
MM_oVars.Add A_varname(i), MM_String
End If
If Debug = 2 Then Response.Write "<b>GetVar:</b> (with array) <b>" & A_varname(i) & "</b> = " & Server.HTMLEncode(MM_String) & "<br>" & VbCrLf
Next
Set GetVar = MM_oVars
End If
End Function

'####
'##
'## @same phplib::template->get_var
'##
Public Function get_var(ByVal A_varname)
If Not IsArray(A_varname) Then
get_var = GetVar(A_varname)
Else
Set get_var = GetVar(A_varname)
End If
End Function

'####
'## This functions clears the value of a variable.
'##
'## It may be called with either a varname as a string or an array with the
'## values being the varnames to be cleared.
'##
'## The function sets the value of the variable in the oVarKeys and oVarVals
'## hashes to "". It is not necessary for a variable to exist in these hashes
'## before calling this function.
'##
'##
'## usage: oTemplate.ClearVar string A_varname
'## or
'## usage: oTemplate.ClearVar array (A_varname1, A_varname2, ...)
'##
'## @param $varname either a string containing a varname or an array of varnames.
'## @access public
'## @return void
'##
Public Sub ClearVar(ByVal A_varname)
'############################################################
Dim i, num
If Not IsArray(A_varname) Then
If A_varname <> "" Then
If Debug = 1 Then Response.Write "<b>clear_var:</b> (with scalar) <b>" & A_varname & "</b><br>" & VbCrLf
Call SetVar(A_varname, "")
End If
Else
num = UBound(A_varname)
For i=0 To num
If Debug = 1 Then Response.Write "<b>clear_var:</b> (with array) <b>" & A_varname(i) & "</b><br>" & VbCrLf
Call SetVar(A_varname(i), "")
Next
End If
End Sub

'####
'##
'## @same phplib::template->clear_var
'##
Public Sub clear_var(ByVal A_varname)
Call ClearVar(A_varname)
End Sub

'####
'## This functions unsets a variable completely.
'##
'## It may be called with either a varname as a string or an array with the
'## values being the varnames to be cleared.
'##
'## The function removes the variable from the oVarKeys and oVarVals hashes.
'## It is not necessary for a variable to exist in these hashes before calling
'## this function.
'##
'##
'## usage: oTemplate.unSetVar string A_varname
'## or
'## usage: oTemplate.unSetVar array(A_varname1, A_varname2, ...)
'##
'## @param A_varname either a string containing a varname or an array of varnames.
'## @access public
'##
Public Sub unSetVar(ByVal A_varname)
'############################################################
Dim i, num
If Not IsArray(A_varname) Then
If A_varname <> "" Then
If Debug = 1 Then Response.Write "<b>unSetVar:</b> (with scalar) <b>" & A_varname & "</b><br>" & VbCrLf
If m_oVarKeys.Exists(A_varname) Then
m_oVarKeys.Remove A_varname
End If
If m_oVarVals.Exists(A_varname) Then
m_oVarVals.Remove A_varname
End If
End If
Else
num = UBound(A_varname)
For i=0 To num
If A_varname(i) <> "" Then
If Debug = 1 Then Response.Write "<b>unSetVar:</b> (with array) <b>" & A_varname & "</b><br>" & VbCrLf
If m_oVarKeys.Exists(A_varname(i)) Then
m_oVarKeys.Remove A_varname(i)
End If
If m_oVarVals.Exists(A_varname(i)) Then
m_oVarVals.Remove A_varname(i)
End If
End If
Next
End If
End Sub

'####
'##
'## @same phplib::template->unset_var
'##
Public Sub unset_var(ByVal A_varname)
Call unSetVar(A_varname)
End Sub


'####
'## This function returns a hash of unresolved variable names in A_varname, keyed
'## by their names.
'##
'## Returns: a hash of varname/varname pairs or false on error.
'##
'## usage: GetUndefined(string A_varname)
'##
'## @param A_varname a string containing the name the name of the variable to scan for unresolved variables
'## @access public
'## @return array
'##
Public Function GetUndefined(ByVal A_varname)
'############################################################
Dim MM_String, MM_result
If Debug = 4 Then Response.Write "<p><b>GetUndefined:</b> varname = " & A_varname & "</p>" & VbCrLf
If Not loadfile(A_varname) Then
Call halt("get_undefined: unable to load " & A_varname & ".")
GetUndefined = False
Exit Function
End If
MM_String = GetVar(A_varname)
'Set MM_result = CreateObject("Scripting.Dictionary")
m_oRegExp.IgnoreCase = True
m_oRegExp.Global = True
m_oRegExp.Pattern = "(" & BeginTag & ")([^ \t\r\n" & EndTag &"]+)" & EndTag
Set Matches = m_oRegExp.Execute(MM_String)
i = 0
For Each Match In Matches
if Not m_oVarVals.Exists(Match.SubMatches(1)) Then
If Debug = 4 Then Response.Write "<p><b>get_undefined:</b> undefined: " & SubMatches(1) & "</p>" & VbCrLf
'MM_result.Add Match.SubMatches(1), Match.SubMatches(1)
MM_result(i) = Match.SubMatches(1)
i = i + 1
End If
Next
'if MM_result.Count > 0 Then
' Set GetUndefined = MM_result
If IsArray(MM_result) Then
GetUndefined = MM_result
Else
GetUndefined = False
End If
End Function

'####
'##
'## @same phplib::template->get_undefined
'##
Public Function get_undefined(ByVal A_varname)
'############################################################
get_undefined = GetUndefined
End Function

'============================================================
'方法: finish (兼容 phplib)
'目的: 檢查完成
'參數(shù): A_varname - string
'返回: string
'############################################################
Public Function Finish(ByVal A_String)
'############################################################
Dim MM_String
Select Case Unknown
case "keep"
MM_String = A_String
case "remove"
m_oRegExp.IgnoreCase = True
m_oRegExp.Global = True
m_oRegExp.Pattern = "(" & BeginTag & ")([^ \t\r\n" & EndTag &"]+)" & EndTag
MM_String = m_oRegExp.Replace(A_String, "")
case "comment"
m_oRegExp.IgnoreCase = True
m_oRegExp.Global = True
m_oRegExp.Pattern = "(" & BeginTag & ")([^ \t\r\n" & EndTag &"]+)" & EndTag
Set Matches = m_oRegExp.Execute(A_String)
For Each Match In Matches
MM_String = m_oRegExp.Replace(A_String, "<!-- Template variable " & Match.SubMatches(1) &" undefined -->")
Next
End Select
Finish = MM_String
End Function


'####
'## This function returns the finished version of the value of the variable named
'## by $varname. That is, the policy regarding unresolved variable names will be
'## applied to the variable A_varname and the result returned.
'##
'## Returns: a finished string derived from the variable A_varname.
'##
'## usage: oTemplate.GetVariable(string A_varname)
'##
'## @param A_varname a string containing the name of the variable to finish
'## @access public
'## @return string
'## @see SetUnknowns
'## @see Finish
'##
Public Function GetVariable(ByVal A_varname)
'############################################################
GetVariable = Finish(GetVar(A_varname))
End Function

'Public Function get(ByVal A_varname)
'沖突不支持
'End Function

'####
'## This function prints the finished version of the value of the variable named
'## by $varname. That is, the policy regarding unresolved variable names will be
'## applied to the variable A_varname then it will be printed.
'##
'## usage: oTemplate.WriteVariable string A_varname
'##
'## @param A_varname a string containing the name of the variable to finish and print
'## @access public
'## @see SetUnknowns
'## @see Finish
'##
Public Sub WriteVariable(ByVal A_varname)
'############################################################
Response.Write Finish(GetVal(A_varname))
End Sub

'####
'##
'## @see WriteVariable
'## @same phplib::template->p
'##
Public Sub p(ByVal A_varname)
Call WriteVariable(A_varname)
End Sub

'####
'## When called with a relative pathname, this function will return the pathname
'## with Root prepended. Absolute pathnames are returned unchanged.
'##
'## Returns: a string containing an absolute pathname.
'##
'## usage: filename(string A_filename)
'##
'## @param A_filename a string containing a filename
'## @access private
'## @return string
'## @see Root, SetRoot
'##
'## @same phplib::template->filename
'##
Private Function filename(ByVal A_filename)
'############################################################
Dim MM_FSO
If Debug = 4 Then Response.Write "<p><b>filename:</b> filename = " & A_filename & "</p>" & VbCrLf
'If Len(A_filename) > 0 Then
Set MM_FSO = CreateObject("Scripting.FileSystemObject")
If Left(A_filename, 1) = "/" Then
A_filename = Right(A_filename, len(A_filename) - 1)
End If
A_filename = Root & A_filename
A_filename = Server.MapPath(A_filename)
If Not MM_FSO.FileExists(A_filename) Then
Call halt("filename: file " & A_filename & " does not exist.")
End If
filename = A_filename
'Else
' Call halt("filename: filename is empty")
'End If
End Function

'####
'## If a variable's value is undefined and the variable has a filename stored in
'## ofile.Item(A_varname) then the backing file will be loaded and the file's
'## contents will be assigned as the variable's value.
'##
'## Note that the behaviour of this function changed slightly after the 7.2d
'## release. Where previously a variable was reloaded from file if the value
'## was empty, now this is not done. This allows a variable to be loaded then
'## set to "", and also prevents attempts to load empty variables. Files are
'## now only loaded if oVarVals.Item(A_varname) is unset.
'##
'## Returns: true on success, false on error.
'##
'## usage: loadfile(string A_varname)
'##
'## @param A_varname a string containing the name of a variable to load
'## @access private
'## @return boolean
'## @see SetFile, SetFiles
'##
'## @same phplib::template->loadfile
'##
Private Function loadfile(ByVal A_varname)
'############################################################
Dim MM_FSO, MM_oFile, MM_filename, MM_FileSting, MM_bool
If Debug = 4 Then Response.Write "<p><b>loadfile:</b> varname = " & A_varname & "</p>" & VbCrLf
MM_bool = true
If Not m_oFile.Exists(A_varname) Then
loadfile = MM_bool
If Debug = 4 Then Response.Write "<p><b>loadfile:</b> varname " & A_varname & " does not reference a file</p>" & VbCrLf
Exit Function
End If
If m_oVarVals.Exists(A_varname) Then
loadfile = MM_bool
If Debug = 4 Then Response.Write "<p><b>loadfile:</b> varname " & A_varname & " is already loaded</p>" & VbCrLf
Exit Function
End If
MM_filename = m_oFile.Item(A_varname)
Set MM_FSO = CreateObject("Scripting.FileSystemObject")
Set MM_oFile = MM_FSO.OpenTextFile(MM_filename)
MM_FileSting = MM_oFile.ReadAll
'MM_FileSting = Trim(MM_FileSting)
If MM_FileSting = "" Then
MM_bool = false
Call halt("loadfile: While loading " & A_varname & ", " & MM_filename & " does not exist or is empty.")
Else
If Debug = 4 Then Response.Write "<b>loadfile:</b> loaded " & MM_filename & " into " & A_varname & "<br>" & VbCrLf
Call SetVar(A_varname, MM_FileSting)
End If
MM_oFile.Close
Set MM_oFile = Nothing
set FSO = nothing
loadfile = MM_bool
End Function

'####
'## This function will construct a regexp for a given variable name with any
'## special chars quoted.
'##
'## Returns: a string containing an escaped variable name.
'##
'## usage: varname(string A_varname)
'##
'## @param A_varname a string containing a variable name
'## @access private
'## @return string
'## @same phplib::template->varname
'##
Private Function varname(ByVal A_varname)
'############################################################
varname = BeginTag & A_varname & EndTag
End Function

'####
'## This function is called whenever an error occurs and will handle the error
'## according to the policy defined in IsHalt. Additionally the
'## error message will be saved in m_strLastError.
'##
'## Returns: always returns false.
'##
'## usage: halt(string A_message)
'##
'## @param $msg a string containing an error message
'## @access private
'## @return void
'## @see IsHalt
'##
Private Sub halt(ByVal A_message)
'############################################################
m_strLastError = A_message
If IsHalt <> "no" Then Call haltmsg(A_message)
If IsHalt = "yes" Then
Response.Write "<b>Halted.</b>"
Response.End
End If
End Sub

'####
'## This function prints an error message.
'## It can be overridden by your subclass of Template. It will be called with an
'## error message to display.
'##
'## usage: haltmsg(string A_message)
'##
'## @param A_message a string containing the error message to display
'## @access public
'## @return void
'## @see halt
'##
Public Sub haltmsg(ByVal A_message)
'############################################################
Response.Write "<b>Template Error:</b>" & A_message & "<br>"
End Sub

'####
'## Class constructor, set class default attributes, you can change it
'## @see Property Let Debug
'## @see Property Let Unknown
'## @see Property Let IsHalt
'## @see Property Let BeginTag
'## @see Property Let EndTag
'####
Private Sub class_Initialize
Debug = 0
Unknown = "remove"
IsHalt = "yes"
m_strLastError = ""
BeginTag = "{"
EndTag = "}"
m_strRoot = "templates/"
Set m_oFile = CreateObject("Scripting.Dictionary")
Set m_oVarKeys = CreateObject("Scripting.Dictionary")
Set m_oVarVals = CreateObject("Scripting.Dictionary")
Set m_oRegExp = New RegExp

m_strName = "aspTemplate"
m_strVersion = "1.0.0"

If Debug = 4 Then Response.Write "<p><b>Template:</b> root = " & m_strRoot & ", unknowns = " & Unknown & "</p>" & VbCrLf

End Sub

'####
'## Class destructor, free memory.
'####
Private Sub class_Terminate
Set m_oFile = Nothing
Set m_oVarKeys = Nothing
Set m_oVarVals = Nothing
Set m_oRegExp = Nothing
End Sub

End Class

%>



文檔下載: http://asptemplate.yeah.net/

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
国产有码在线| 91大神在线观看线路一区| 国产精品456露脸| 久久99久久久| 中文字幕一区二区三区四区五区人| 中文字幕在线播放不卡一区| 欧美激情中文字幕在线| jizzjizzjizz中国| 日本中文字幕免费观看| 狠狠人妻久久久久久综合蜜桃| 日韩欧美中文字幕一区二区三区| 亚洲精品天天看| 国产日韩在线| 亚洲最新av在线网站| 你懂的国产视频| 欧美18—19性高清hd4k| 一个人看的www在线免费视频| 天堂网在线免费观看| 日韩一区二区三区在线免费观看| 国产欧美日韩不卡免费| 五月婷婷综合色| 九七影院97影院理论片久久| 亚洲男人天堂2020| 在线播放免费视频| 国产在线精品国自产拍免费| 久久久久久久久久97| 九色视频网站| 欧美色123| 成人在线播放av| 日韩一区二区在线观看视频播放| 国产日韩在线免费| 日韩精彩视频| 国产色在线观看| 亚洲国产精品t66y| 在线免费黄色av| 懂色av一区二区夜夜嗨| 一本大道香蕉久在线播放29| 久久毛片高清国产| 日本最新高清不卡中文字幕| 老头老太做爰xxx视频| 朝桐光av在线一区二区三区| 中文字幕欧美人妻精品一区| 高清一区二区三区四区| 中文字幕视频一区二区| 欧美日韩1区2区| 亚洲美女又黄又爽在线观看| 亚洲系列第一页| 性亚洲最疯狂xxxx高清| 二区三区在线视频| 精品日韩一区二区三区免费视频| 欧美在线影院在线视频| 久久综合图区亚洲综合图区| 成人99免费视频| 国产综合中文字幕| 国产成人精品av在线| 亚洲精品国产综合区久久久久久久| 国产精品suv一区二区88| 久久久国产精品人人片| 欧美精品hd| 操你啦视频在线| 深夜激情久久| 久久精品视频中文字幕| 国产精品入口免费麻豆| 在线看片黄色| 精品国产在天天线2019| 国产在线观看欧美| 国产精品白丝在线| 亚洲一区二区三区四区不卡| 91精品国产高潮对白| 久久精品视频5| 久久精品免费电影| 国产中文在线| 国产寡妇色xxⅹ交肉视频| 欧美性色xo影院| 国产精品高清在线观看| 激情在线视频播放| 老鸭窝一区二区久久精品| 日韩在线播放av| 少妇精品久久久久久久久久| 日韩免费三级| 欧美一区二区三区四区在线观看地址| 国产亚洲欧美日韩在线观看一区二区| 日韩精品中文字幕一区二区三区| 香蕉久久夜色精品国产使用方法| 女人公敌韩国| 日韩综合在线视频| 国产精品成人免费一区二区视频| 一区二区三区视频在线看| 欧美综合二区| 精品捆绑调教一区二区三区| 青青草原国产在线| 91观看网站| 婷婷久久免费视频| gai在线观看免费高清| 国产精品国产三级国产普通话99| 亚洲无av在线中文字幕| 欧美黑人经典片免费观看| 你懂的视频网址| 成熟亚洲日本毛茸茸凸凹| 亚洲狼人综合| 日韩午夜免费视频| 日韩有码在线视频| 另类的小说在线视频另类成人小视频在线| 电影av一区| 久久久亚洲精选| 天天干天天舔天天操| 国产aⅴ爽av久久久久| 欧美日韩精品在线视频| 国产精品自拍三区| 国产免费一区二区三区香蕉精| 日本精品久久久久影院| 国产精品福利导航| 国产女女做受ⅹxx高潮| 视频一区在线免费观看| 亚洲国产成人久久综合| 精品国产欧美| 亚洲小说区图片| 亚洲黄色免费av| 黑吊大战白xxxxxx| 国产情侣第一页| 色爱区综合激月婷婷| 日本精品一二区| 黄色性生活一级片| 18精品爽国产三级网站| 国产专区一区| 黄色a级片免费看| eeuss第一页| av视屏在线播放| 国产精品一区二区久久久| 欧美freesex交免费视频| 日韩专区中文字幕一区二区| 国产原创视频在线观看| 国产精品免费精品一区| 一区二区三区欧洲区| 亚洲夂夂婷婷色拍ww47| 亚洲欧洲二区| 亚洲欧美变态国产另类| 黑人巨大国产9丨视频| 91综合精品国产丝袜长腿久久| 69日小视频在线观看| 久久久久99精品成人片我成大片| 天堂社区在线视频| 久久九九精品99国产精品| 中文字幕亚洲欧洲| 久久亚洲无码视频| 在线观看wwwxxxx| 亚洲精品无播放器在线播放| 成人免费一区二区三区视频网站| 337p亚洲精品色噜噜狠狠p| 日本乱人伦一区| 日本黑人久久| 欧美理论影院| 四虎电影院在线观看| 国产精品日韩一区二区免费视频| 欧美a免费在线| 亚洲天堂岛国片| 亚洲成人在线免费| 人妻aⅴ无码一区二区三区| 欧妇女乱妇女乱视频| 韩国中文字幕在线| 欧美日韩一区三区四区| 国产精品沙发午睡系列990531| 好看的日韩精品| 欧洲精品久久| 欧美激情一级片一区二区| 综合伊思人在钱三区| 666精品在线| 亚洲精品久久7777| hd国产人妖ts另类视频| 日韩在线观看免费| 国产精品第二十页| 久久99精品久久久久久| 日韩成人午夜精品| 日韩高清国产一区在线| 亚洲网色网站| 久久久精品人妻一区二区三区四| 夜夜嗨av一区二区三区免费区| 国产第一页在线视频| 在线观看中文字幕视频| 欧美视频日韩| 亚洲av成人精品日韩在线播放| 欧美激情久久久| 无码人妻一区二区三区免费n鬼沢| 国产亚洲成av人片在线观看桃| 色琪琪综合男人的天堂aⅴ视频| 久久一区二区三区av| 国产三级国产精品国产专区50| 亚洲一区二区不卡视频| 亚洲综合精品四区| 欧美成人精品二区三区99精品| 美女精品久久| 精品人妻一区二区三区香蕉| 久久久久久久久久久久久av| 麻豆视频在线观看免费网站| av中文资源在线| 影音先锋一区二区资源站| 久久久久亚洲av无码a片| 女性隐私黄www网站视频| videos性欧美另类高清| 欧美日韩国产综合一区二区三区| 97人人澡人人爽人人模亚洲| 明星乱亚洲合成图.com| 91色|porny| 性日韩欧美在线视频| 熟妇高潮一区二区高潮| 欧美日本亚洲| 污视频在线观看网站| 综合 欧美 亚洲日本| 欧美精品乱人伦久久久久久| 国产成人精品一区二区色戒| 午夜精品福利久久久| 一区二区三区偷拍| 人妻少妇精品一区二区三区| 品久久久久久久久久96高清| av一线二线| 国产极品粉嫩福利姬萌白酱| 亚洲毛片播放| 久久婷婷五月综合色国产香蕉| 亚洲色偷偷综合亚洲av伊人| 国产香蕉在线| 国产色婷婷国产综合在线理论片a| 亚洲美女高潮久久久| 怡红院怡春院首页| 亚洲草久电影| 国产91精品黑色丝袜高跟鞋| 天天操中文字幕| 欧美一区午夜视频在线观看| 日韩av手机在线播放| 精品国产乱码久久久久久108| www.成人影院| 亚洲看片免费| 国产欧美一区二区三区不卡高清| 欧美aaaxxxx做受视频| 亚洲一区二区三区免费观看| 欧美日韩国产精品一区二区亚洲| 欧美午夜精品免费| 在线播放你懂的| 午夜久久久久久久久| 亚洲天堂av免费在线观看| 97在线精品国自产拍中文| 午夜亚洲国产au精品一区二区| 欧美贵妇videos办公室| 日韩**一区毛片| 东京热无码av男人的天堂| 精久久久久久| 先锋影音av资源在线| 日韩欧美影院| 日日夜夜精品一区| 中文字幕一区二区三区人妻电影| 欧美日韩不卡一区| 五月天激情小说综合| 精品欧美日韩一区二区| 免费国产黄色网址| 91精品国产91| 成人黄色理论片| 中文字幕乱视频| 国产精品毛片高清在线完整版| 少妇激情一区二区三区| 精品伊人久久久久7777人| 中文字幕一区二区人妻痴汉电车| 日韩欧美国产成人一区二区| 欧美国产日本韩| 成年人视频在线观看免费| 中文字幕理伦片免费看| 久久久久国产一区二区| 欧美色图国产精品| 第四色婷婷基地| 男人天堂手机在线观看| 女人天堂在线视频| 久久国产精品亚洲| 国产精品二区一区二区aⅴ| 熟女少妇在线视频播放| 天天插天天射| 91免费精品视频| 无码国产精品一区二区高潮| 午夜免费电影一区在线观看| 欧美视频久久久| 精品国免费一区二区三区| 国产探花在线视频| 亚洲欧美激情另类| 精品三级国产| 欧美一区二区大胆人体摄影专业网站| 日韩视频一区二区三区| 成人精品动漫一区二区三区| 日日躁天天躁狠狠躁| 日韩毛片在线免费看| 国产露脸国语对白在线| 91亚洲国产成人精品一区| 亚洲精选中文字幕| 日本乱人伦aⅴ精品| 成人看片黄a免费看在线| 国产毛片一区二区三区va在线| 精品国产影院| 日本1区2区3区中文字幕| 91禁在线观看| 欧美一区二区三区影视| 午夜在线免费观看视频| 日本美女视频一区| 波多野结衣乳巨码无在线观看| 精品人妻无码一区二区三区| 国严精品久久久久久亚洲影视| 亚洲影院在线播放| 国产伦精品一区二区三区免费| 好妞色妞国产在线视频| 久久精品无码中文字幕| 91在线免费视频观看| 欧美xxxx做受欧美护士| 99在线精品观看| 一区二区三区在线电影| 色综合天天综合网国产成人网| 欧美在线观看视频网站| 国产69精品久久| 一道在线中文一区二区三区| 日韩欧美二区三区| 欧美日本在线看| 91在线中文字幕| 国产激情偷乱视频一区二区三区| 午夜久久久久久噜噜噜噜| 国产做受高潮69| 日韩免费一区二区三区在线播放| 久久久国产精品一区二区三区| 国产精品va在线观看视色| 亚洲激情视频网| 欧美精品乱码视频一二专区| 亚洲精品国偷拍自产在线观看蜜桃| 福利91精品一区二区三区| 野外做受又硬又粗又大视频√| 久久久久国产精品一区二区|