이 템플릿 엔진은 HTML과 결합되어 있어 더욱 편리 합니다 .
클래스 템플릿
비공개 c_Char, c_Path, c_FileName, c_Content, c_PageUrl, c_CurrentPage, c_PageStr, RecrePageStr
비공개 태그 이름
' ***************************************
'인코딩 설정
' ***************************************
공공 자산 Let Char(ByVal Str)
c_Char = Str
끝 속성
공공 재산 문자 받기
숯 = c_Char
끝 속성
' ***************************************
'템플릿 폴더 경로 설정
' ***************************************
공용 속성 Let Path(ByVal Str)
c_Path = Str
끝 속성
공용 속성 가져오기 경로
경로 = c_Path
끝 속성
' ***************************************
'템플릿 파일 이름 설정
' ***************************************
공용 속성 Let FileName(ByVal Str)
c_FileName = Str
끝 속성
공용 속성 파일 이름 가져오기
파일 이름 = c_파일 이름
끝 속성
' ***************************************
' 템플릿 파일의 특정 경로를 가져옵니다.
' ***************************************
공용 속성 FilePath 가져오기
Len(Path) > 0이면 Path = 바꾸기(Path, /, /)
If Right(Path, 1) <> / Then Path = Path & /
FilePath = 경로 및 파일 이름
끝 속성
' ***************************************
'페이징 URL 설정
' ***************************************
공용 속성 Let PageUrl(ByVal Str)
c_PageUrl = Str
끝 속성
공용 속성 PageUrl 가져오기
PageUrl = c_PageUrl
끝 속성
' ***************************************
'현재 페이지 페이징 설정
' ***************************************
공용 속성 Let CurrentPage(ByVal Str)
c_CurrentPage = Str
끝 속성
공용 속성 현재 페이지 가져오기
현재페이지 = c_CurrentPage
끝 속성
' ***************************************
'출력 내용
' ***************************************
공공 재산은 플러시됩니다
응답.쓰기(c_Content)
끝 속성
' ***************************************
'클래스 초기화
' ***************************************
비공개 하위 클래스_초기화
태그이름 = pjblog
c_Char = UTF-8
바꾸기페이지Str = 배열(, )
서브 끝
' ***************************************
' 충돌하는 문자 필터링
' ***************************************
비공개 함수 doQuote(ByVal Str)
doQuote = 바꾸기(Str, Chr(34), )
기능 종료
' ***************************************
' 수업 종료
' ***************************************
비공개 하위 클래스_종료
서브 끝
' ***************************************
'파일 로드 방법
' ***************************************
개인 함수 LoadFromFile(ByVal cPath)
희미한 물체
obj = Server.CreateObject(ADODB.Stream) 설정
객체와 함께
.유형 = 2
.모드 = 3
.열려 있는
.Charset = 문자
.위치 = .크기
.LoadFrom파일 서버.MapPath(cPath)
LoadFromFile = .ReadText
.닫다
끝
obj = 없음 설정
기능 종료
'************************************************
' 정규적으로 일치하는 개체를 가져옵니다.
'************************************************
공용 함수 GetMatch(ByVal Str, ByVal Rex)
딤 레그, 매기
Reg 설정 = 새 RegExp
등록과 함께
.IgnoreCase = 참
.글로벌=참
.패턴 = 렉스
Mag = .Execute(Str) 설정
Mag.Count > 0이면
GetMatch = Mag로 설정
또 다른
GetMatch = Server.CreateObject(Scripting.Dictionary) 설정
종료 조건
끝
Reg 설정 = 없음
기능 종료
' ***************************************
'문서 열기
' ***************************************
공개 서브 오픈
c_Content = LoadFromFile(파일 경로)
서브 끝
' ***************************************
'버퍼 실행
' ***************************************
공개 하위 버퍼
c_Content = 그리드뷰(c_Content)
ExecuteFunction 호출
서브 끝
' ***************************************
'그리드뷰
' ***************************************
프라이빗 함수 GridView(ByVal o_Content)
차원 일치, 하위 일치, 하위 텍스트
치수 속성, 컨텐츠
일치 항목 설정 = GetMatch(o_Content, /< & TagName & /:(/d+?)(.+?)/>([/s/S]+?)<// & TagName & /:/1/>)
Matches.Count > 0이면
일치하는 각 하위 일치에 대해
속성 = SubMatches.SubMatches(1) ' kocms
Content = SubMatches.SubMatches(2) ' <열>...</열>
SubText = Process(Attribute, Content) '모든 프로세스 실행 결과를 반환합니다.
o_Content = 바꾸기(o_Content, SubMatches.value, < & SubText(2) & SubText(0) & > & SubText(1) & </ & SubText(2) & >, 1, -1, 1) ' 레이블 변수 바꾸기
다음
종료 조건
일치 항목 설정 = 없음
If Len(ReplacePageStr(0)) > 0 Then ' 레이블 변수에 값이 있는지 확인하고 값이 있으면 바꿉니다.
o_Content = 바꾸기(o_Content, 바꾸기PageStr(0), 바꾸기페이지Str(1), 1, -1, 1)
RecPageStr = Array(, ) '교체 후 배열 변수를 지웁니다.
종료 조건
GridView = o_Content
기능 종료
' ***************************************
' 속성 결정
' ***************************************
Private 함수 처리(ByVal 속성, ByVal 콘텐츠)
차원 일치, 하위 일치, 텍스트
희미한 MatchTag, MatchContent
Dim 데이터 소스, 이름, 요소, 페이지, ID
데이터 소스 = : 이름 = : 요소 = : 페이지 = 0 : ID =
일치 항목 설정 = GetMatch(Attribute, /s(.+?)/=/(.+?)/)
Matches.Count > 0이면
일치하는 각 하위 일치에 대해
MatchTag = SubMatches.SubMatches(0) ' 속성 이름을 가져옵니다.
MatchContent = SubMatches.SubMatches(1) ' 속성 값 가져오기
If Lcase(MatchTag) = name Then Name = MatchContent ' 이름 속성 값을 가져옵니다.
Lcase(MatchTag) = datasource인 경우 datasource = MatchContent' 데이터 소스 속성 값을 가져옵니다.
If Lcase(MatchTag) = 요소 Then Element = MatchContent ' 요소 속성 값 가져오기
Lcase(MatchTag) = 페이지인 경우 Then page = MatchContent ' 페이지 속성 값을 가져옵니다.
If Lcase(MatchTag) = id Then id = MatchContent ' id 속성 값을 가져옵니다.
다음
Len(이름) > 0이고 Len(MatchContent) > 0인 경우
Text = Analysis(datasource, Name, Content, page, id) '파싱 속성 수행
Len(데이터 소스) > 0이면 Attribute = 바꾸기(속성, 데이터 소스= & 데이터 소스 & , )
페이지 > 0이면 속성 = 교체(속성, 페이지= & 페이지 &, )
속성 = 바꾸기(속성, 이름= & 이름 & , , 1, -1, 1)
속성 = 바꾸기(속성, 요소= & 요소 & , , 1, -1, 1)
프로세스 = 배열(속성, 텍스트, 요소)
또 다른
프로세스 = 배열(속성, , div)
종료 조건
또 다른
프로세스 = 배열(속성, , div)
종료 조건
일치 항목 설정 = 없음
기능 종료
' ***************************************
' 구문 분석
' ***************************************
프라이빗 기능 분석(ByVal id, ByVal Name, ByVal Content, ByVal page, ByVal PageID)
희미한 데이터
Select Case Lcase(이름) '데이터 소스 선택
케이스 루프 데이터 = DataBind(id, Content, page, PageID)
데이터 사례 = DataFor(id, Content, page, PageID)
선택 종료
분석=데이터
기능 종료
' ***************************************
'데이터 소스 바인딩
' ***************************************
프라이빗 함수 DataBind(ByVal id, ByVal Content, ByVal 페이지, ByVal PageID)
희미한 텍스트, 일치, 하위 일치, 하위 텍스트
Execute Text = & id & (1) '데이터 소스 로드
일치 항목 설정 = GetMatch(Content, /<Columns/>([/s/S]+)/<//Columns/>)
Matches.Count > 0이면
일치하는 각 하위 일치에 대해
SubText = ItemTemplate(SubMatches.SubMatches(0), Text, page, PageID)' 모듈 교체 수행
콘텐츠 = 바꾸기(콘텐츠, SubMatches.value, SubText, 1, -1, 1)
다음
데이터바인드 = 콘텐츠
또 다른
데이터바인드=
종료 조건
일치 항목 설정 = 없음
기능 종료
' ***************************************
' 템플릿 인스턴스 일치
' ***************************************
전용 기능 ItemTemplate(ByVal TextTag, ByVal Text, ByVal 페이지, ByVal PageID)
차원 일치, 하위 일치, SubMatchText
희미한 SecMatch, SecSubMatch
Dim i, TempText
희미한 TextLen, TextLeft, TextRight
일치 항목 설정 = GetMatch(TextTag, /<ItemTemplate/>([/s/S]+)/<//ItemTemplate/>)
Matches.Count > 0이면
일치하는 각 하위 일치에 대해
SubMatchText = SubMatches.SubMatches(0)
'-------------------
' 루프 중첩 시작
'-------------------
SubMatchText = GridView(SubMatchText)
'-------------------
' 루프 중첩 끝
'-------------------
UBound(Text, 1) = 0이면
임시텍스트=
또 다른
임시텍스트=
'-------------------------------------------------
'페이징 시작
'-------------------------------------------------
Len(페이지) > 0이고 페이지 > 0이면
Len(CurrentPage) = 0 또는 CurrentPage = 0이면 CurrentPage = 1
TextLen = UBound(텍스트, 2)
TextLeft = (CurrentPage - 1) * 페이지
TextRight = 현재 페이지 * 페이지 - 1
TextLeft < 0이면 TextLeft = 0입니다.
TextRight > TextLen이면 TextRight = TextLen입니다.
c_PageStr = MultiPage(TextLen + 1, 페이지, CurrentPage, PageUrl, float:right, , False)
Int(Len(c_PageStr)) > 0이면
바꾸기PageStr = Array(<페이지: & Trim(페이지ID) & />, c_PageStr)
또 다른
바꾸기PageStr = Array(<페이지: & Trim(페이지ID) & />, )
종료 조건
또 다른
텍스트왼쪽 = 0
TextRight = UBound(텍스트, 2)
종료 조건
i = TextLeft에서 TextRight로
TempText = TempText & ItemReSec(i, SubMatchText, Text) '템플릿 내용 로드
다음
종료 조건
다음
ItemTemplate = TempText
또 다른
항목템플릿 =
종료 조건
일치 항목 설정 = 없음
기능 종료
' ***************************************
'템플릿 문자열 바꾸기
' ***************************************
전용 함수 ItemReSec(ByVal i, ByVal Text, ByVal Arrays)
차원 일치, 하위 일치
일치 항목 설정 = GetMatch(Text, /$(/d+?))
Matches.Count > 0이면
일치하는 각 하위 일치에 대해
Text = 바꾸기(Text, SubMatches.value, doQuote(Arrays(SubMatches.SubMatches(0), i)), 1, -1, 1) '교체 수행
다음
ItemReSec = 텍스트
또 다른
ItemReSec=
종료 조건
일치 항목 설정 = 없음
기능 종료
' ***************************************
'전역변수 함수
' ***************************************
비공개 하위 실행 기능
차원 일치, 하위 일치, 텍스트, ExeText
일치 항목 설정 = GetMatch(c_Content, /<function/:([0-9a-zA-Z_/.]*?)/((.*?)/(.+?)/(.*?)/)// />)
Matches.Count > 0이면
일치하는 각 하위 일치에 대해
텍스트 = SubMatches.SubMatches(0) & ( & SubMatches.SubMatches(1) & & SubMatches.SubMatches(2) & & SubMatches.SubMatches(3) & )
ExeText= 및 텍스트 실행
c_Content = 바꾸기(c_Content, SubMatches.value, ExeText, 1, -1, 1)
다음
종료 조건
일치 항목 설정 = 없음
서브 끝
' ***************************************
' 글로벌 라벨의 일반적인 교체
' ***************************************
공용 속성 Let 집합(ByVal t, ByVal s)
희미한 SetMatch, Bstr, SetSubMatch
Set SetMatch = GetMatch(c_Content, (/<Set/:([0-9a-zA-Z_/.]*?)/(((.*?) & t & (.*?))?/)// />))
SetMatch.Count > 0이면
SetMatch의 각 SetSubMatch에 대해
Bstr 실행 = & SetSubMatch.SubMatches(1) & ( & SetSubMatch.SubMatches(3) & & s & & SetSubMatch.SubMatches(4) & )
c_Content = 바꾸기(c_Content, SetSubMatch.Value, Bstr, 1, -1, 1)
다음
종료 조건
SetMatch = 없음 설정
Set SetMatch = GetMatch(c_Content, (/<Set/: & t & ///>))
SetMatch.Count > 0이면
SetMatch의 각 SetSubMatch에 대해
c_Content = 바꾸기(c_Content, SetSubMatch.Value, s, 1, -1, 1)
다음
종료 조건
SetMatch = 없음 설정
끝 속성
수업 종료