Skip to content

Commit f129c2a

Browse files
author
András Kurai
committed
configure class generation by data
1 parent 350e8a8 commit f129c2a

File tree

13 files changed

+103
-16
lines changed

13 files changed

+103
-16
lines changed

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/Extensions.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/EnumerableExtensions.cs renamed to UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/Extensions/EnumerableExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Collections.Generic;
33
using System.Linq;
44

5-
namespace AutSoft.UnityResourceGenerator.Editor.Generation
5+
namespace AutSoft.UnityResourceGenerator.Editor.Generation.Extensions
66
{
77
internal static class EnumerableExtensions
88
{

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/EnumerableExtensions.cs.meta renamed to UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/Extensions/EnumerableExtensions.cs.meta

File renamed without changes.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.Collections.Generic;
2+
using System.Text;
3+
4+
namespace AutSoft.UnityResourceGenerator.Editor.Generation.Extensions
5+
{
6+
internal static class StringBuilderExtensions
7+
{
8+
public static StringBuilder AppendMultipleLines(this StringBuilder builder, IEnumerable<string> lines)
9+
{
10+
foreach (var line in lines)
11+
{
12+
builder.AppendLine(line);
13+
}
14+
15+
return builder;
16+
}
17+
}
18+
}

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/Extensions/StringBuilderExtensions.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace AutSoft.UnityResourceGenerator.Editor.Generation
2+
{
3+
public interface IResourceData
4+
{
5+
string ClassName { get; }
6+
string FileExtension { get; }
7+
bool IsResource { get; }
8+
}
9+
}

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/IResourceData.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/Modules/AllResources.cs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System;
1+
using AutSoft.UnityResourceGenerator.Editor.Generation.Extensions;
2+
using System;
23
using System.Collections.Generic;
34
using System.IO;
45
using System.Linq;
@@ -10,29 +11,27 @@ public sealed class AllResources : IModuleGenerator
1011
{
1112
public string Generate(ResourceContext context) =>
1213
new StringBuilder()
13-
.AppendLine(Generate(context, "Scenes", "*.unity", false))
14-
.AppendLine(Generate(context, "Prefabs", "*.prefab", true))
15-
.AppendLine(Generate(context, "Materials", "*.mat", true))
14+
.AppendMultipleLines(context.Data.Select(d => Generate(context, d)))
1615
.ToString();
1716

18-
private static string Generate(ResourceContext context, string className, string fileExtension, bool isResource)
17+
private static string Generate(ResourceContext context, IResourceData data)
1918
{
20-
context.Info($"Started generating {className}");
19+
context.Info($"Started generating {data.ClassName}");
2120

2221
// ReSharper disable once MissingIndent
2322
var classBegin =
2423
$@"
25-
public static partial class {className}
24+
public static partial class {data.ClassName}
2625
{{
2726
";
2827
// ReSharper disable once MissingIndent
2928
const string classEnd = " }";
3029

3130
var values = Directory
32-
.EnumerateFiles(context.AssetsFolder, fileExtension, SearchOption.AllDirectories)
31+
.EnumerateFiles(context.AssetsFolder, data.FileExtension, SearchOption.AllDirectories)
3332
.Select(filePath =>
3433
{
35-
var (canLoad, baseFolder) = GetBaseFolder(filePath, isResource, context);
34+
var (canLoad, baseFolder) = GetBaseFolder(filePath, data.IsResource, context);
3635
if (!canLoad) return (null, null);
3736

3837
var resourcePath = filePath
@@ -75,7 +74,7 @@ public static partial class {className}
7574
.AppendLine(classEnd)
7675
.ToString();
7776

78-
context.Info($"Finished generating {className}");
77+
context.Info($"Finished generating {data.ClassName}");
7978

8079
return output;
8180
}

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/ResourceContext.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23

34
namespace AutSoft.UnityResourceGenerator.Editor.Generation
45
{
@@ -11,14 +12,16 @@ public ResourceContext
1112
string baseNamespace,
1213
string className,
1314
Action<string> info,
14-
Action<string> error)
15+
Action<string> error,
16+
IReadOnlyList<IResourceData> data)
1517
{
1618
AssetsFolder = assetsFolder;
1719
FolderPath = folderPath;
1820
BaseNamespace = baseNamespace;
1921
ClassName = className;
2022
Info = info;
2123
Error = error;
24+
Data = data;
2225
}
2326

2427
public string AssetsFolder { get; }
@@ -27,5 +30,7 @@ public ResourceContext
2730
public string ClassName { get; }
2831
public Action<string> Info { get; }
2932
public Action<string> Error { get; }
33+
34+
public IReadOnlyList<IResourceData> Data { get; }
3035
}
3136
}

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/ResourceFileGenerator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System;
1+
using AutSoft.UnityResourceGenerator.Editor.Generation.Extensions;
2+
using System;
23
using System.Linq;
34
using System.Text;
45

0 commit comments

Comments
 (0)