static ClassDescriptor GetClassDescriptorFrom(IDirInfo dir) { ClassDescriptor classDescriptor = new ClassDescriptor(); classDescriptor.Name = UrlToClassName(dir.Url); foreach (string file in dir.Files) { string fileName = Normalize(file); string url = dir.Url + "/" + file.ToLowerInvariant(); classDescriptor.Members.Add(new MemberDescriptor( "string", fileName, "\"" + url + "\"")); } foreach (IDirInfo subDir in dir.Directories) { string name = subDir.Name; string name1 = name; if (dir.Files.Exists(delegate (string fileName) { return fileName == name1; })) { name = subDir.Name + "Directory"; } classDescriptor.Members.Add(new MemberDescriptor(UrlToClassName(subDir.Url), Normalize(name))); } return classDescriptor; }
public string[] Execute(ClassDescriptor[] classDescriptors) { List<string> classes = new List<string>(classDescriptors.Length); foreach (ClassDescriptor descriptor in classDescriptors) { classes.Add(descriptorToClassService.Execute(descriptor)); } return classes.ToArray(); }
public void Execute_WhenHasStringMember_Works() { ClassDescriptor cls = new ClassDescriptor(); cls.Name = "the_class"; cls.Members.Add(new MemberDescriptor("string", "member_name", "\"value\"")); IDescriptorToClassService service = new DescriptorToClassService(); string classDef = service.Execute(cls); Assert.IsTrue(classDef.IndexOf("class the_class") > -1); Assert.IsTrue(classDef.IndexOf("string member_name = \"value\";") > -1); }
public void Execute_WhenHasClassBasedMember_Works() { ClassDescriptor cls = new ClassDescriptor(); cls.Name = "the_class"; cls.Members.Add(new MemberDescriptor("the_type", "member_name")); IDescriptorToClassService service = new DescriptorToClassService(); string classDef = service.Execute(cls); Assert.IsTrue(classDef.IndexOf("class the_class") > -1); Assert.IsTrue(classDef.IndexOf("the_type member_name = new the_type();") > -1); }
public string Execute(ClassDescriptor classDescriptor) { StringBuilder classBuilder = new StringBuilder(); classBuilder.AppendFormat(@" public partial class {0} {1} {{ ", classDescriptor.Name, classDescriptor.Bases); foreach (MemberDescriptor member in classDescriptor.Members) { classBuilder.AppendFormat(@" public readonly {0} {1} = {2}; ", member.Type, member.Name, member.Value); } classBuilder.AppendLine(" }"); return classBuilder.ToString(); }