Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

283 lines
7.3 KiB

Attribute VB_Name = "StringContentsTest"
Option Explicit
Private p_arrVerbalOperatorsAnd() As String
Private p_arrVerbalOperatorsOr() As String
Private p_arrVerbalOperatorsNot() As String
Private Const OPERATOR_DELIMITER_C As String = ";"
Public Function ContainsGarbage( _
ByVal i_strText As String _
) As Boolean
Static blnGarbageCharsInitialized As Boolean
Static arrGarbageChars() As String
Dim char As Variant
ContainsGarbage = False
If (Not blnGarbageCharsInitialized) Then
p_LoadGarbageChars arrGarbageChars
blnGarbageCharsInitialized = True
End If
For Each char In arrGarbageChars
If (InStr(i_strText, char) <> 0) Then
ContainsGarbage = True
Exit Function
End If
Next
ContainsGarbage = Not XMLValidString(i_strText)
End Function
Private Sub p_LoadGarbageChars( _
ByRef o_arrGarbageChars() As String _
)
ReDim o_arrGarbageChars(4)
o_arrGarbageChars(0) = vbCr
o_arrGarbageChars(1) = vbLf
o_arrGarbageChars(2) = vbTab
o_arrGarbageChars(3) = chr(146)
o_arrGarbageChars(4) = chr(145)
End Sub
Public Function ContainsVerbalOperator( _
ByVal i_strText As String _
) As Boolean
Dim str As Variant
Dim arrStr() As String
Dim intIndex As Long
ContainsVerbalOperator = False
arrStr = Split(LCase$(i_strText))
For Each str In p_arrVerbalOperatorsAnd
For intIndex = LBound(arrStr) To UBound(arrStr)
If (arrStr(intIndex) = str) Then
ContainsVerbalOperator = True
Exit Function
End If
Next
Next
For Each str In p_arrVerbalOperatorsOr
For intIndex = LBound(arrStr) To UBound(arrStr)
If (arrStr(intIndex) = str) Then
ContainsVerbalOperator = True
Exit Function
End If
Next
Next
For Each str In p_arrVerbalOperatorsNot
For intIndex = LBound(arrStr) To UBound(arrStr)
If (arrStr(intIndex) = str) Then
ContainsVerbalOperator = True
Exit Function
End If
Next
Next
End Function
Public Function IsVerbalOperator( _
ByVal i_strText As String _
) As Boolean
Dim str As String
Dim strOperator As Variant
IsVerbalOperator = False
str = LCase$(i_strText)
For Each strOperator In p_arrVerbalOperatorsAnd
If (str = strOperator) Then
IsVerbalOperator = True
Exit Function
End If
Next
For Each strOperator In p_arrVerbalOperatorsOr
If (str = strOperator) Then
IsVerbalOperator = True
Exit Function
End If
Next
For Each strOperator In p_arrVerbalOperatorsNot
If (str = strOperator) Then
IsVerbalOperator = True
Exit Function
End If
Next
End Function
Public Sub GetVerbalOperators( _
ByRef o_arrStrAnd() As String, _
ByRef o_arrStrOr() As String, _
ByRef o_arrStrNot() As String _
)
o_arrStrAnd = p_arrVerbalOperatorsAnd
o_arrStrOr = p_arrVerbalOperatorsOr
o_arrStrNot = p_arrVerbalOperatorsNot
End Sub
Public Sub SetVerbalOperators( _
ByVal i_strAnd As String, _
ByVal i_strOr As String, _
ByVal i_strNot As String _
)
p_SetVerbalOperators i_strAnd, p_arrVerbalOperatorsAnd
p_SetVerbalOperators i_strOr, p_arrVerbalOperatorsOr
p_SetVerbalOperators i_strNot, p_arrVerbalOperatorsNot
End Sub
Private Sub p_SetVerbalOperators( _
ByVal i_str As String, _
ByRef o_arrOperators() As String _
)
Dim strOperator As Variant
Dim arrStr() As String
Dim intIndex As Long
arrStr = Split(i_str, OPERATOR_DELIMITER_C)
If (UBound(arrStr) = -1) Then
Exit Sub
End If
ReDim o_arrOperators(UBound(arrStr) - LBound(arrStr))
For Each strOperator In arrStr
strOperator = Trim$(LCase$(strOperator))
If (strOperator <> "") Then
o_arrOperators(intIndex) = strOperator
intIndex = intIndex + 1
End If
Next
If (intIndex > 0) Then
ReDim Preserve o_arrOperators(intIndex - 1)
End If
End Sub
Public Function ContainsIndependentOperatorShortcut( _
ByVal i_strText As String _
) As Boolean
Static blnOperatorShortcutsInitialized As Boolean
Static arrOperatorShortcuts() As String
Dim char As Variant
Dim arrStr() As String
Dim intIndex As Long
' "a + b" qualifies
' "a+b", "a+ b", "a +b", don't qualify.
arrStr = Split(i_strText)
ContainsIndependentOperatorShortcut = False
If (Not blnOperatorShortcutsInitialized) Then
p_LoadOperatorShortcuts arrOperatorShortcuts
blnOperatorShortcutsInitialized = True
End If
For Each char In arrOperatorShortcuts
For intIndex = LBound(arrStr) To UBound(arrStr)
If (arrStr(intIndex) = char) Then
ContainsIndependentOperatorShortcut = True
Exit Function
End If
Next
Next
End Function
Public Function ContainsOperatorShortcut( _
ByVal i_strText As String _
) As Boolean
Static blnOperatorShortcutsInitialized As Boolean
Static arrOperatorShortcuts() As String
Dim char As Variant
' "a + b", "a+b", "a+ b", "a +b", all qualify.
ContainsOperatorShortcut = False
If (Not blnOperatorShortcutsInitialized) Then
p_LoadOperatorShortcuts arrOperatorShortcuts
blnOperatorShortcutsInitialized = True
End If
For Each char In arrOperatorShortcuts
If (InStr(i_strText, char) <> 0) Then
ContainsOperatorShortcut = True
Exit Function
End If
Next
End Function
Public Function RemoveOperatorShortcuts( _
ByVal i_strText As String _
) As String
Static blnOperatorShortcutsInitialized As Boolean
Static arrOperatorShortcuts() As String
Dim intIndex1 As Long
Dim intLength As Long
Dim intIndex2 As Long
Dim str As String
If (Not blnOperatorShortcutsInitialized) Then
p_LoadOperatorShortcuts arrOperatorShortcuts
blnOperatorShortcutsInitialized = True
End If
str = i_strText
intLength = Len(str)
For intIndex1 = 1 To intLength
For intIndex2 = LBound(arrOperatorShortcuts) To UBound(arrOperatorShortcuts)
If (Mid$(str, intIndex1, 1) = arrOperatorShortcuts(intIndex2)) Then
str = Mid$(str, 1, intIndex1 - 1) & " " & Mid$(str, intIndex1 + 1)
End If
Next
Next
RemoveOperatorShortcuts = str
End Function
Private Sub p_LoadOperatorShortcuts( _
ByRef o_arrOperatorShortcuts() As String _
)
ReDim o_arrOperatorShortcuts(6)
o_arrOperatorShortcuts(0) = """"
o_arrOperatorShortcuts(1) = "&"
o_arrOperatorShortcuts(2) = "|"
o_arrOperatorShortcuts(3) = "!"
o_arrOperatorShortcuts(4) = "+"
o_arrOperatorShortcuts(5) = "("
o_arrOperatorShortcuts(6) = ")"
End Sub