private static void GenerateComponent(ComponentDefinition componentDefinition) { // Paths var componentsPath = componentDefinition.Directory; if (componentsPath.EndsWith("Components")) { componentsPath = PathExtension.SystemPath(componentsPath); } else { componentsPath = PathExtension.SystemPath(Path.Combine(componentsPath, "Components")); } if (!Directory.Exists(componentsPath)) { Directory.CreateDirectory(componentsPath); } var template = CodeGeneratorUtils.LoadTemplate("Component"); var processors = ProcessorsSelector.Selectors <ICodeGeneratorComponentProcessors>(); foreach (var processor in processors) { template = processor.Process(componentDefinition, template); } var upperedComponentName = componentDefinition.ComponentName.ToUpperFirstChar(); var componentPath = Path.Combine(componentsPath, $"{upperedComponentName}.cs"); GenerateComponentFile(upperedComponentName, componentPath, template); }
public string Process(ComponentDefinition componentDefinition, string template) { var dotCompoennts = ".Components"; var namespaceName = componentDefinition.Namespace; if (namespaceName.EndsWith(dotCompoennts)) { namespaceName = namespaceName.Substring(0, namespaceName.Length - dotCompoennts.Length); } return(s_namespaceRegex.Replace(template, namespaceName)); }
public string Process(ComponentDefinition componentDefinition, string template) { // Namespaces var usingNamespaces = componentDefinition.Fields .Where(f => f.type.Type != null) .Select(f => f.type.Type.Namespace) .Distinct() .Except(typeof(IPrimitiveType).Namespace.Yield()); StringBuilder usingsBuilder = new StringBuilder(); foreach (var usingNamespace in usingNamespaces) { usingsBuilder.Append("using "); usingsBuilder.Append(usingNamespace); usingsBuilder.AppendLine(";"); } template = s_usingsRegex.Replace(template, usingsBuilder.ToString()); return(template); }
public string Process(ComponentDefinition componentDefinition, string template) { var fieldsBuilder = new StringBuilder(); foreach (var field in componentDefinition.Fields) { if (field.type.Type != null) { if (typeof(IPrimitiveType).IsAssignableFrom(field.type.Type)) { IPrimitiveType primitiveType = Activator.CreateInstance(field.type.Type) as IPrimitiveType; fieldsBuilder.AppendLine(primitiveType.GetFieldDeclaration(field.name, FieldAccessType(field.accessType))); } else { fieldsBuilder.AppendLine($"\t\t{FieldAccessType( field.accessType )} {field.type.Type.Name} {field.name};"); } } } return(s_fieldsRegex.Replace(template, fieldsBuilder.ToString())); }
public static void Generate(ComponentDefinition componentDefinition) { GenerateComponent(componentDefinition); AssetDatabase.Refresh(); }
public string Process(ComponentDefinition componentDefinition, string template) { var componentInterfaceName = GetInterfaceName(componentDefinition.ComponentType); return(s_componentTypesRegex.Replace(template, componentInterfaceName)); }
public string Process(ComponentDefinition componentDefinition, string template) { var upperedComponentName = componentDefinition.ComponentName.ToUpperFirstChar(); return(s_nameRegex.Replace(template, upperedComponentName)); }