mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
simplify SubstituteInType, just try all strings that match [\w|\.]+
This commit is contained in:
parent
eb6b494fb8
commit
e8b59d4fdb
@ -35,15 +35,45 @@ namespace Twiglet.CS2J.Translator.TypeRep
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class TypeVarMapper
|
||||||
|
{
|
||||||
|
private Dictionary<string,TypeRepTemplate> myArgMap;
|
||||||
|
|
||||||
|
public TypeVarMapper(Dictionary<string,TypeRepTemplate> inArgMap)
|
||||||
|
{
|
||||||
|
myArgMap = inArgMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ReplaceFromMap(Match m)
|
||||||
|
{
|
||||||
|
if (myArgMap.ContainsKey(m.Value))
|
||||||
|
{
|
||||||
|
return myArgMap[m.Value].mkSafeTypeName();
|
||||||
|
}
|
||||||
|
return m.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static string SubstituteInType(String type, Dictionary<string,TypeRepTemplate> argMap)
|
public static string SubstituteInType(String type, Dictionary<string,TypeRepTemplate> argMap)
|
||||||
|
{
|
||||||
|
if (String.IsNullOrEmpty(type))
|
||||||
|
return type;
|
||||||
|
|
||||||
|
TypeVarMapper mapper = new TypeVarMapper(argMap);
|
||||||
|
return Regex.Replace(type, @"([\w|\.]+)*", new MatchEvaluator(mapper.ReplaceFromMap));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static string OldSubstituteInType(String type, Dictionary<string,TypeRepTemplate> argMap)
|
||||||
{
|
{
|
||||||
if (String.IsNullOrEmpty(type))
|
if (String.IsNullOrEmpty(type))
|
||||||
return type;
|
return type;
|
||||||
|
|
||||||
string ret = type;
|
string ret = type;
|
||||||
// type is either "string" or "string<type,type,...>"
|
// type is either "string" or "string*[type,type,...]*" or string[]
|
||||||
Match match = Regex.Match(type, @"^([\w|\.]+)(?:\s*\[\s*([\w|\.]+)(?:\s*,\s*([\w|\.]+))*\s*\])?$");
|
// Match match = Regex.Match(type, @"^([\w|\.]+)(?:\s*\*\[\s*([\w|\.]+)(?:\s*,\s*([\w|\.]+))*\s*\]\*)?$");
|
||||||
|
Match match = Regex.Match(type, @"([\w|\.]+)*");
|
||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
CaptureCollection captures = match.Captures;
|
CaptureCollection captures = match.Captures;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user