67 lines
1.8 KiB
C#
67 lines
1.8 KiB
C#
|
using System.Collections.Generic;
|
|||
|
|
|||
|
namespace I2.Loc
|
|||
|
{
|
|||
|
public partial class LanguageSourceData
|
|||
|
{
|
|||
|
public static string EmptyCategory = "Default";
|
|||
|
public static char[] CategorySeparators = "/\\".ToCharArray();
|
|||
|
|
|||
|
#region Keys
|
|||
|
|
|||
|
public List<string> GetCategories( bool OnlyMainCategory = false, List<string> Categories = null )
|
|||
|
{
|
|||
|
if (Categories==null)
|
|||
|
Categories = new List<string>();
|
|||
|
|
|||
|
foreach (TermData data in mTerms)
|
|||
|
{
|
|||
|
string sCategory = GetCategoryFromFullTerm( data.Term, OnlyMainCategory );
|
|||
|
if (!Categories.Contains(sCategory))
|
|||
|
Categories.Add(sCategory);
|
|||
|
}
|
|||
|
Categories.Sort();
|
|||
|
return Categories;
|
|||
|
}
|
|||
|
|
|||
|
public static string GetKeyFromFullTerm( string FullTerm, bool OnlyMainCategory = false )
|
|||
|
{
|
|||
|
int Index = OnlyMainCategory ? FullTerm.IndexOfAny(CategorySeparators) :
|
|||
|
FullTerm.LastIndexOfAny(CategorySeparators);
|
|||
|
|
|||
|
return Index<0 ? FullTerm :FullTerm.Substring(Index+1);
|
|||
|
}
|
|||
|
|
|||
|
public static string GetCategoryFromFullTerm( string FullTerm, bool OnlyMainCategory = false )
|
|||
|
{
|
|||
|
int Index = OnlyMainCategory ? FullTerm.IndexOfAny(CategorySeparators) :
|
|||
|
FullTerm.LastIndexOfAny(CategorySeparators);
|
|||
|
|
|||
|
return Index<0 ? EmptyCategory : FullTerm.Substring(0, Index);
|
|||
|
}
|
|||
|
|
|||
|
public static void DeserializeFullTerm( string FullTerm, out string Key, out string Category, bool OnlyMainCategory = false )
|
|||
|
{
|
|||
|
int Index = OnlyMainCategory ? FullTerm.IndexOfAny(CategorySeparators) :
|
|||
|
FullTerm.LastIndexOfAny(CategorySeparators);
|
|||
|
|
|||
|
if (Index<0)
|
|||
|
{
|
|||
|
Category = EmptyCategory;
|
|||
|
Key = FullTerm;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Category = FullTerm.Substring(0, Index);
|
|||
|
Key = FullTerm.Substring(Index+1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Misc
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
}
|
|||
|
}
|