generated from Templates/Dotnet_Library
49 lines
1.8 KiB
C#
49 lines
1.8 KiB
C#
namespace Parsing.Data;
|
|
|
|
using Parsing;
|
|
using Parsing.Tokenization;
|
|
|
|
public static class DataConversionHelpers
|
|
{
|
|
public static List<TNewType> ConvertData<TTokenType, TNewType, TOldType>(this List<IToken> tokenList, Func<TOldType, TNewType> converter) where TTokenType : IValueToken<TOldType>
|
|
{
|
|
var newList = new List<TNewType>();
|
|
foreach (var token in tokenList)
|
|
{
|
|
var typedToken = token as IValueToken<TOldType>;
|
|
if (typedToken == null)
|
|
{
|
|
throw new Exception("Invalid Token type encountered during value conversion");
|
|
}
|
|
|
|
newList.Add(converter(typedToken.GetValue()));
|
|
}
|
|
return newList;
|
|
}
|
|
|
|
public static List<TNewType> ConvertData<TTokenType, TNewType, TOldType>(this List<IToken> tokenList, Func<TOldType, List<TNewType>> converter) where TTokenType : IValueToken<TOldType>
|
|
{
|
|
var newList = new List<TNewType>();
|
|
foreach (var token in tokenList)
|
|
{
|
|
var typedToken = token as IValueToken<TOldType>;
|
|
if (typedToken == null)
|
|
{
|
|
throw new Exception("Invalid Token type encountered during value conversion");
|
|
}
|
|
|
|
newList.AddRange(converter(typedToken.GetValue()));
|
|
}
|
|
return newList;
|
|
}
|
|
|
|
public static List<List<TNewType>> ConvertData<TTokenType, TNewType, TOldType>(this List<List<IToken>> tokenListList, Func<TOldType, TNewType> converter) where TTokenType : IValueToken<TOldType>
|
|
{
|
|
var newListList = new List<List<TNewType>>();
|
|
foreach (var tokenList in tokenListList)
|
|
{
|
|
newListList.Add(tokenList.ConvertData<TTokenType, TNewType, TOldType>(converter));
|
|
}
|
|
return newListList;
|
|
}
|
|
} |