Editor/Search/Utility.cs
using System.Collections.Generic;
using System.Text;
namespace Todo.Search;
public static class Utility
{
public static void GetSearchStubs( out string genericSearch, out List<string> flagStubs )
{
List<string> generic = new();
List<string> flags = new();
string[] searchStubs = TodoDock.Instance.SearchText.Split( " " );
foreach ( var stub in searchStubs )
{
if ( string.IsNullOrWhiteSpace( stub ) )
continue;
string normalizedStub = stub.Trim().ToLower();
if ( stub.Contains( ':' ) is true )
{
flags.Add( normalizedStub );
continue;
}
generic.Add( normalizedStub );
}
genericSearch = new StringBuilder().AppendJoin( " ", generic ).ToString();
flagStubs = flags;
}
public static bool Contains( string target, string searchText )
{
return target.Contains( searchText, System.StringComparison.CurrentCultureIgnoreCase );
}
public static bool GetFlagArguments( List<string> flagStubs, string flagName, out List<string> flagArguments )
{
List<string> arguments = new();
foreach ( var flagStub in flagStubs )
{
string[] splitFlag = flagStub.Split( ":" );
if ( splitFlag.Length < 1 )
continue;
string flag = splitFlag[0];
string argument = splitFlag[1];
if ( (flag == flagName) is false )
continue;
arguments.Add( argument );
}
flagArguments = arguments;
return flagArguments.Count > 0;
}
}