2 using System.Collections.Generic;
5 namespace Tizen.NUI.Xaml
7 internal static class TypeArgumentsParser
9 public static IList<XmlType> ParseExpression(string expression, IXmlNamespaceResolver resolver, IXmlLineInfo lineInfo)
11 var typeList = new List<XmlType>();
12 while (!string.IsNullOrWhiteSpace(expression))
14 var match = expression;
15 typeList.Add(Parse(match, ref expression, resolver, lineInfo));
20 static XmlType Parse(string match, ref string remaining, IXmlNamespaceResolver resolver, IXmlLineInfo lineinfo)
25 bool isGeneric = false;
27 for (pos = 0; pos < match.Length; pos++)
29 if (match[pos] == '(')
34 else if (match[pos] == ')')
36 else if (match[pos] == ',' && parensCount == 0)
38 remaining = match.Substring(pos + 1);
42 var type = match.Substring(0, pos).Trim();
44 IList<XmlType> typeArguments = null;
47 typeArguments = ParseExpression(
48 type.Substring(type.IndexOf('(') + 1, type.LastIndexOf(')') - type.IndexOf('(') - 1), resolver, lineinfo);
49 type = type.Substring(0, type.IndexOf('('));
52 var split = type.Split(':');
57 if (split.Length == 2)
68 var namespaceuri = resolver.LookupNamespace(prefix);
69 if (namespaceuri == null)
70 throw new XamlParseException($"No xmlns declaration for prefix '{prefix}'.", lineinfo, null);
71 return new XmlType(namespaceuri, name, typeArguments);