All pastes #764810 Raw Edit

dwMarkupParser.asp

public text v1 · immutable
·published 2007-11-07 16:13 UTC
rendered paste body
<%
	Dim MARKUP_START_TAG
	Dim MARKUP_END_TAG
	Dim MARKUP_END
	Dim ATTRIBUTE_NAME_START_PREFIX
	Dim ATTRIBUTE_NAME_END_PREFIX
	Dim ATTRIBUTE_NAME_START_POSTFIX
	Dim ATTRIBUTE_NAME_END_POSTFIX
'	Dim NULL
	Dim DV_BROWSER
	Dim DV_FILED
	Dim NEWLINE
	
'	NULL							= 0
	
	DV_BROWSER						= 1
	DV_FILE							= 2
	
	NEWLINE							= vbCrLf
	
	MARKUP_START_TAG				= "" '"<"
	MARKUP_END_TAG					= "" '">"
	MARKUP_END						= "" '"/"

	ATTRIBUTE_NAME_START_PREFIX		= ""
	ATTRIBUTE_NAME_END_PREFIX		= ""
	ATTRIBUTE_NAME_START_POSTFIX	= "Begin"
	ATTRIBUTE_NAME_END_POSTFIX		= "End"

	
	Function ArrayAppendVariable(Dest, var)
		If Not IsArray(Dest) Then Dest = Array()
		Redim Preserve Dest(UBound(Dest) + 1)
		Dest(UBound(Dest)) = Obj
	End Function
	
	Function ArrayAppendObject(Dest, Obj)
		If Not IsArray(Dest) Then Dest = Array()
		Redim Preserve Dest(UBound(Dest) + 1)
		Set Dest(UBound(Dest)) = Obj
	End Function
	
	Class cNameValuePair
		Public Name
		Public Value
		Public Function ToString()
			If Name = "" Then
				ToString = Value
			Else
				ToString = Name & "=" & Value
			End If
		End Function
	End Class
	
	Class cNameValuePairList
		Public List
		
		Public Function Add(Name, Value)
			Dim Temp
			Set Temp 	= New cNameValuePair
			Temp.Name 	= Name
			Temp.Value 	= Value
			ArrayAppendObject List, Temp
		End Function
		
		Public Function GetValueFromName(Name)
			Dim I
			Dim Result
			Result = NULL
			If IsArray(List) And Name <> "" Then
				For I = LBound(List) To UBound(List)
					If List(I).Name = Needle Then Result = List(I).Value
				Next
			End If
			InNameValueArray = Result
		End Function

		Public Function GetIndexFromName(Name)
			Dim I
			Dim Result
			Result = -1
			If IsArray(List) And Name <> "" Then
				For I = LBound(List) To UBound(List)
					If List(I).Name = Name Then Result = I
				Next
			End If
			GetIndexFromName = Result
		End Function
		
		Public Function RawPut(Name, Value)
			Dim Index
			Index = GetIndexFromName(Name)
			If Index > -1 Then
				List(Index).Value = Value
			Else
				Add Name, Value
			End If
		End Function
		
		Public Function Put(NameValue)
			RawPut NameValue.Name, NameValue.Value
		End Function
		
		Public Function ToString()
			Dim Result
			Result = ""
			If IsArray(List) Then
				Dim I
				For I = LBound(List) To UBound(List)
					Result = Result & List(I).ToString() & " "
				Next
			End If
			ToString = Result
		End Function

		Private Function NameValuePairFromString(RawString)
			Dim Result
			Set Result = New cNameValuePair
			
			If InStr(RawString, "=") Then
				Dim Temp
				Temp = Split(RawString, "=")
				Result.Name = Temp(0)
				Result.Value = Temp(1)
			Else
				Result.Name = ""
				Result.Value = RawString
			End If
			Set NameValuePairFromString = Result
		End Function
		
		Public Function FromString(Src)
			Dim RawDataArray
			RawDataArray = Split(Trim(Src), " ")
			If IsArray(RawDataArray) Then
				Dim I
				For I = LBound(RawDataArray) To UBound(RawDataArray)
					Put NameValuePairFromString(RawDataArray(I))
				Next
			End If
		End Function
	End Class
	
	Function CreateParm(Name, Value)
		Dim Result
		Set Result 		= New cNameValuePair
		Result.Name 	= Name
		Result.Value 	= Value
		Set CreateParm	= Result
	End Function
	
	Function InNameValueArray(Haystack, Needle)
		Dim I
		Dim Result
		Result = -1
		If IsArray(Haystack) And Needle <> "" Then
			For I = LBound(Haystack) To UBound(Haystack)
				If Haystack(I).Name = Needle Then Result = I
			Next
		End If
		InNameValueArray = Result
	End Function
	
	Function NameValueArrayToString(Src)
		Dim Result
		Result = ""
		If IsArray(Src) Then
			Dim I
			For I = LBound(Src) To UBound(Src)
				Result = Result & Src(I).ToString() & " "
			Next
		End If
		NameValueArrayToString = Result
	End Function
	
	Class cMarkupElement
		'Recursive elements
		Public Children
		Public Parent
		Public ElementName
		Public Variables
		
		Public Function Constructor ()
			Response.Write "Testing Constructor"
		End Function
		
		Public Function Create(ElementName)
			Set Me.Variables 	= New cNameValuePairList
			Me.ElementName		= ElementName
		End Function
		
		Public Function ToString(Device)
			If Device = NULL 		Then NL 	= ""
			If Device = DV_BROWSER 	Then
				NL 	= "<br />"
				If MARKUP_START_TAG = "<" And MARKUP_END_TAG = ">" Then
					MARKUP_START_TAG 	= "&lt;"
					MARKUP_END_TAG		= "&gt;"
				End If
			End If
			If Device = DV_FILE		Then NL 	= NEWLINE
			If IsArray(Children) Then
				Dim Childs
				Childs = ""
				Dim I
				For I = LBound(Children) To UBound(Children)
					If Device = DV_BROWSER And MARKUP_START_TAG = "&lt;" And MARKUP_END_TAG = "&gt;" Then
						MARKUP_START_TAG 	= "<"
						MARKUP_END_TAG		= ">"
					End If
					Childs = Childs & Children(I).ToString(Device)
					If MARKUP_START_TAG = "<" And MARKUP_END_TAG = ">" Then
						MARKUP_START_TAG 	= "&lt;"
						MARKUP_END_TAG		= "&gt;"
					End If
				Next
				ToString = MARKUP_START_TAG & ATTRIBUTE_NAME_START_PREFIX & ElementName & ATTRIBUTE_NAME_START_POSTFIX & " " & Variables.ToString() & MARKUP_END_TAG & NL & Childs & MARKUP_START_TAG & MARKUP_END & ATTRIBUTE_NAME_END_PREFIX & ElementName & ATTRIBUTE_NAME_END_POSTFIX & MARKUP_END_TAG & NL
			Else
				ToString = MARKUP_START_TAG & ElementName & " " & Variables.ToString() & MARKUP_END & MARKUP_END_TAG & NL
			End If
			If Device = DV_BROWSER And MARKUP_START_TAG = "&lt;" And MARKUP_END_TAG = "&gt;" Then
				MARKUP_START_TAG 	= "<"
				MARKUP_END_TAG		= ">"
			End If
		End Function
		
		Public Function SetParm(Parm)
			Variables.Put Parm
		End Function
		
		Public Function GetParm(Name)
			GetParm = Variables.GetFromName(Name)
		End Function
		
		Public Function AppendChild(Element)
			Set Element.Parent = Me
			ArrayAppendObject Children, Element
		End Function
		
		Public Function SaveToFile(Filename)
			Set objFile = Server.CreateObject("Scripting.FileSystemObject")
			If objFile.FileExists(Filename) Then objFile.DeleteFile Filename, True 
			Set objStream = objFile.CreateTextFile(Filename, True, False)
			On Error Resume Next
			objStream.WriteLine ToString(DV_FILE)
			objStream.Close
		End Function
		
		Public Function GetFirstChild()
			If IsArray(Children) Then Set GetFirstChild = Children(0) Else Set GetFirstChild = Nothing
		End Function
	End Class
%>