LanguageSourceData_Misc.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System.Collections.Generic;
  2. namespace I2.Loc
  3. {
  4. public partial class LanguageSourceData
  5. {
  6. public static string EmptyCategory = "Default";
  7. public static char[] CategorySeparators = "/\\".ToCharArray();
  8. #region Keys
  9. public List<string> GetCategories( bool OnlyMainCategory = false, List<string> Categories = null )
  10. {
  11. if (Categories==null)
  12. Categories = new List<string>();
  13. foreach (TermData data in mTerms)
  14. {
  15. string sCategory = GetCategoryFromFullTerm( data.Term, OnlyMainCategory );
  16. if (!Categories.Contains(sCategory))
  17. Categories.Add(sCategory);
  18. }
  19. Categories.Sort();
  20. return Categories;
  21. }
  22. public static string GetKeyFromFullTerm( string FullTerm, bool OnlyMainCategory = false )
  23. {
  24. int Index = (OnlyMainCategory ? FullTerm.IndexOfAny(CategorySeparators) :
  25. FullTerm.LastIndexOfAny(CategorySeparators));
  26. return (Index<0 ? FullTerm :FullTerm.Substring(Index+1));
  27. }
  28. public static string GetCategoryFromFullTerm( string FullTerm, bool OnlyMainCategory = false )
  29. {
  30. int Index = (OnlyMainCategory ? FullTerm.IndexOfAny(CategorySeparators) :
  31. FullTerm.LastIndexOfAny(CategorySeparators));
  32. return (Index<0 ? EmptyCategory : FullTerm.Substring(0, Index));
  33. }
  34. public static void DeserializeFullTerm( string FullTerm, out string Key, out string Category, bool OnlyMainCategory = false )
  35. {
  36. int Index = (OnlyMainCategory ? FullTerm.IndexOfAny(CategorySeparators) :
  37. FullTerm.LastIndexOfAny(CategorySeparators));
  38. if (Index<0)
  39. {
  40. Category = EmptyCategory;
  41. Key = FullTerm;
  42. }
  43. else
  44. {
  45. Category = FullTerm.Substring(0, Index);
  46. Key = FullTerm.Substring(Index+1);
  47. }
  48. }
  49. #endregion
  50. #region Misc
  51. #endregion
  52. }
  53. }