You are on page 1of 4

Search mode:

+ contains Upper char: case sensitive.


+ "" or '': exact phrase.
+ or, ",", /, |, space: OR.
- and, +, &: AND.
- -word: not include this word
- ???

===================================================================================
===

BACKUP 2: NOK

Sub SearchMap (mApps As Map, SearchFor As String) As ResumableSub


ProgressDialogShow2("Searching...", False)
Sleep(0)
Dim CaseSensitive As Boolean
If SearchFor.CompareTo(SearchFor.ToLowerCase) < 0 Then
CaseSensitive = True
End If
Dim mFound As Map
mFound.Initialize
mFound.Put(KEY_DATA_TYPE, TYPE_TREE_ROOT)
For Each sPackageName As String In mApps.Keys
bFound = False
Dim xPackage As Object = mApps.Get(sPackageName)
If GetType(xPackage) = TYPE_MAP_COLLECTION Then
Dim mPackage As Map = xPackage
If MapContains(mPackage, SearchFor, CaseSensitive) Then
mFound.Put(sPackageName, mPackage)
End If
End If
Sleep(0)
Next
ProgressDialogHide
Return mFound
End Sub

Sub MapContains (mObj As Map, SearchFor As String, CaseSensitive As Boolean) As


Boolean
If Not(bFound) Then
For Each sKey As String In mObj.Keys
If SearchText(sKey, SearchFor, CaseSensitive) And
Not(IsSearchExclusionItem(sKey)) Then
bFound = True
Exit
Else
Dim xChild As Object = mObj.Get(sKey)
If GetType(xChild) = TYPE_MAP_COLLECTION Then
MapContains(xChild, SearchFor, CaseSensitive)
Else
Dim sChild As String = xChild
If SearchText(sChild, SearchFor, CaseSensitive) And
Not(IsSearchExclusionItem(sChild)) Then
bFound = True
Exit
End If
End If
End If
Next
End If
Return bFound
End Sub

Sub SearchText (Text As String, SearchFor As String, CaseSensitive As Boolean) As


Boolean
Dim Const DELIMITER As String = $"\s(?=(?:[^"]*"[^"]*")*[^"]*$)"$
Dim i As Int
Dim bFound As Boolean
SearchFor = SearchFor.Trim
If Not(CaseSensitive) Then
Text = Text.ToLowerCase
SearchFor = SearchFor.ToLowerCase
End If
Dim arrSearchFor() As String = Regex.Split(DELIMITER, SearchFor)
For i = 0 To arrSearchFor.Length - 1
arrSearchFor(i) = arrSearchFor(i).Trim
If arrSearchFor(i).StartsWith("""") And arrSearchFor(i).EndsWith("""") Then
arrSearchFor(i) = arrSearchFor(i).SubString2(1, arrSearchFor(i).Length
- 1)
End If
If Text.Contains(arrSearchFor(i)) Then
bFound = True
Exit
End If
Next
Return bFound
End Sub

===================================================================================
===

BACKUP 1: NOK

Sub SearchMap (mApps As Map, SearchFor As String) As Map


Dim mFound As Map
mFound.Initialize
mFound.Put(KEY_DATA_TYPE, TYPE_TREE_ROOT)
For Each sPackageName As String In mApps.Keys
bFound = False
Dim xPackage As Object = mApps.Get(sPackageName)
If GetType(xPackage) = TYPE_MAP_COLLECTION Then
Dim mPackage As Map = xPackage
If MapContains(mPackage, SearchFor) Then
mFound.Put(sPackageName, mPackage)
End If
End If
' Sleep(0)
Next
Return mFound
End Sub

Sub MapContains (mObj As Map, SearchFor As String) As Boolean


If Not(bFound) Then
For Each sKey As String In mObj.Keys
If SearchText(sKey, SearchFor) And Not(IsSearchExclusionItem(sKey))
Then
bFound = True
Exit
Else
Dim xChild As Object = mObj.Get(sKey)
If GetType(xChild) = TYPE_MAP_COLLECTION Then
MapContains(xChild, SearchFor)
Else
Dim sChild As String = xChild
If SearchText(sChild, SearchFor) And
Not(IsSearchExclusionItem(sChild)) Then
bFound = True
Exit
End If
End If
End If
Next
End If
Return bFound
End Sub

Sub SearchText (Text As String, SearchFor As String) As Boolean


Dim Const DELIMITER As String = $"\s(?=(?:[^"]*"[^"]*")*[^"]*$)"$
Dim CaseSensitive As Boolean, i As Int
Dim bFound As Boolean
SearchFor = SearchFor.Trim
If SearchFor.CompareTo(SearchFor.ToLowerCase) < 0 Then
CaseSensitive = True
End If
Dim arrSearchFor() As String = Regex.Split(DELIMITER, SearchFor)
For i = 0 To arrSearchFor.Length - 1
arrSearchFor(i) = arrSearchFor(i).Trim
If arrSearchFor(i).StartsWith("""") And arrSearchFor(i).EndsWith("""") Then
arrSearchFor(i) = arrSearchFor(i).SubString2(1, arrSearchFor(i).Length
- 1)
End If
If TextContains(Text, arrSearchFor(i), CaseSensitive) Then
bFound = True
Exit
End If
Next
Return bFound
End Sub

Sub TextContains (Text As String, SearchFor As String, CaseSensitive As Boolean) As


Boolean
Dim bFound As Boolean
If Not(CaseSensitive) Then
Text = Text.ToLowerCase
SearchFor = SearchFor.ToLowerCase
End If
bFound = Text.Contains(SearchFor)
Return bFound
End Sub

===================================================================================
===

BACKUP 0: OK

Sub SearchMap (mApps As Map, SearchFor As String) As Map


Dim mFound As Map
mFound.Initialize
mFound.Put(KEY_DATA_TYPE, TYPE_TREE_ROOT)
For Each sPackageName As String In mApps.Keys
bFound = False
Dim xPackage As Object = mApps.Get(sPackageName)
If GetType(xPackage) = TYPE_MAP_COLLECTION Then
Dim mPackage As Map = xPackage
If MapContains(mPackage, SearchFor) Then
mFound.Put(sPackageName, mPackage)
End If
End If
Next
Return mFound
End Sub

Sub MapContains (mObj As Map, SearchFor As String) As Boolean


Dim sText As String, sSearch As String
sSearch = SearchFor.ToLowerCase
If Not(bFound) Then
For Each sKey As String In mObj.Keys
sText = sKey.ToLowerCase
If sText.Contains(sSearch) And Not(IsSearchExclusionItem(sKey)) Then
bFound = True
Exit
Else
Dim xChild As Object = mObj.Get(sKey)
If GetType(xChild) = TYPE_MAP_COLLECTION Then
MapContains(xChild, SearchFor)
Else
Dim sChild As String = xChild
sText = sChild.ToLowerCase
If sText.Contains(sSearch) And
Not(IsSearchExclusionItem(sChild)) Then
bFound = True
Exit
End If
End If
End If
Next
End If
Return bFound
End Sub

===================================================================================
===

You might also like