예제 #1
0
        public static SwiftClassName FromFullyQualifiedName(string fullyQualifiedName, OperatorType oper, params char [] nesting)
        {
            string [] parts = Ex.ThrowOnNull(fullyQualifiedName, "fullyQualifiedName").Split('.');
            if (parts.Length < 2)
            {
                throw new ArgumentException(String.Format("Fully qualified name '{0}' requires at least a module and one name.",
                                                          fullyQualifiedName));
            }
            if (nesting.Length != parts.Length - 1)
            {
                throw new ArgumentException(String.Format("Nesting should have {0} elements, but has {1}.",
                                                          parts.Length - 1, nesting.Length), "nesting");
            }
            SwiftName            module        = new SwiftName(parts [0], false);
            List <SwiftName>     nestingNames  = parts.Skip(1).Select(name => new SwiftName(name, false)).ToList();
            List <MemberNesting> actualNesting = nesting.Select(c => Decomposer.ToMaybeMemberNesting(c, true).Value).ToList();

            return(new SwiftClassName(module, actualNesting, nestingNames, oper));
        }