Skip to content

Commit 3a9a75f

Browse files
committed
Added support for multiple view configs
1 parent 6c05f7a commit 3a9a75f

File tree

6 files changed

+51
-24
lines changed

6 files changed

+51
-24
lines changed

src/WebApiToTypeScript/Config/Config.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,21 +63,15 @@ public class Config
6363
public bool GenerateViews { get; set; }
6464
= true;
6565

66-
public string ViewsSourceDirectory { get; set; }
67-
= "Views";
66+
public List<ViewConfig> ViewConfigs { get; set; }
67+
= new List<ViewConfig>();
6868

6969
public string ViewsPattern { get; set; }
7070
= ".view.";
7171

7272
public string ViewsOutputDirectory { get; set; }
7373
= "Views";
7474

75-
public string ViewsFileName { get; set; }
76-
= "Views.ts";
77-
78-
public string ViewsNamespace { get; set; }
79-
= "Views";
80-
8175
public bool UseViewsGroupingNamespace { get; set; }
8276
= true;
8377

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace WebApiToTypeScript.Config
2+
{
3+
public class ViewConfig
4+
{
5+
public string SourceDirectory { get; set; }
6+
public string Namespace { get; set; }
7+
public string OutputFilename { get; set; }
8+
}
9+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using WebApiToTypeScript.Block;
2+
3+
namespace WebApiToTypeScript.Views
4+
{
5+
public class ViewsBlock
6+
{
7+
public TypeScriptBlock TypeScriptBlock { get; set; }
8+
public string Filename { get; set; }
9+
}
10+
}

src/WebApiToTypeScript/Views/ViewsService.cs

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,42 @@ namespace WebApiToTypeScript.Views
99
{
1010
public class ViewsService : ServiceAware
1111
{
12-
private List<ViewNode> FeatureViews { get; }
13-
= new List<ViewNode>();
12+
public IEnumerable<ViewsBlock> GetBlocksForViews()
13+
{
14+
foreach (var viewConfig in Config.ViewConfigs)
15+
{
16+
var featureViews = new List<ViewNode>();
17+
18+
var viewsBlock = CreateViewsBlock(viewConfig.Namespace);
19+
AddViewsFromDirectory(viewConfig.SourceDirectory, featureViews);
20+
WriteViewsToBlock(featureViews, viewsBlock);
21+
22+
yield return new ViewsBlock
23+
{
24+
TypeScriptBlock = viewsBlock,
25+
Filename = viewConfig.OutputFilename
26+
};
27+
}
28+
}
1429

15-
public TypeScriptBlock CreateViewsBlock()
30+
public TypeScriptBlock CreateViewsBlock(string namespaceName)
1631
{
17-
return new TypeScriptBlock($"{Config.NamespaceOrModuleName} {Config.ViewsNamespace}");
32+
return new TypeScriptBlock($"{Config.NamespaceOrModuleName} {namespaceName}");
1833
}
1934

20-
public TypeScriptBlock WriteViewsToBlock(TypeScriptBlock viewsBlock)
35+
public TypeScriptBlock WriteViewsToBlock(List<ViewNode> featureViews, TypeScriptBlock viewsBlock)
2136
{
22-
foreach (var featureView in FeatureViews)
37+
foreach (var featureView in featureViews)
2338
{
2439
WriteViewEntry(viewsBlock, featureView);
2540
}
2641

2742
return viewsBlock;
2843
}
2944

30-
public void AddViews()
45+
public void AddViewsFromDirectory(string sourceDirectory, List<ViewNode> featureViews)
3146
{
32-
var viewsSourceDirectory = Path.GetFullPath(Config.ViewsSourceDirectory);
47+
var viewsSourceDirectory = Path.GetFullPath(sourceDirectory);
3348

3449
var viewFiles = Directory.GetFiles(viewsSourceDirectory, $"*{Config.ViewsPattern}*", SearchOption.AllDirectories);
3550

@@ -49,9 +64,9 @@ public void AddViews()
4964

5065
var featureNamespace = namespaces.First();
5166

52-
if (FeatureViews.All(v => v.Name != featureNamespace))
67+
if (featureViews.All(v => v.Name != featureNamespace))
5368
{
54-
FeatureViews.Add(new ViewNode
69+
featureViews.Add(new ViewNode
5570
{
5671
Name = featureNamespace
5772
});
@@ -61,7 +76,7 @@ public void AddViews()
6176
.Skip(1)
6277
.ToList();
6378

64-
var viewNode = FeatureViews.Single(v => v.Name == featureNamespace);
79+
var viewNode = featureViews.Single(v => v.Name == featureNamespace);
6580
var parentFolderName = subFeatures.LastOrDefault() ?? featureNamespace;
6681

6782
foreach (var subFeature in subFeatures)

src/WebApiToTypeScript/WebApiToTypeScript.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,8 @@ public override bool Execute()
4848
{
4949
StartAnalysis("views");
5050

51-
var viewsBlock = ViewsService.CreateViewsBlock();
52-
ViewsService.AddViews();
53-
ViewsService.WriteViewsToBlock(viewsBlock);
54-
55-
CreateFileForBlock(viewsBlock, Config.ViewsOutputDirectory, Config.ViewsFileName);
51+
foreach (var viewsBlock in ViewsService.GetBlocksForViews())
52+
CreateFileForBlock(viewsBlock.TypeScriptBlock, Config.ViewsOutputDirectory, viewsBlock.Filename);
5653

5754
StopAnalysis();
5855
}

src/WebApiToTypeScript/WebApiToTypeScript.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
<ItemGroup>
6565
<Compile Include="Config\Config.cs" />
6666
<Compile Include="Config\InterfaceMatch.cs" />
67+
<Compile Include="Config\ViewConfig.cs" />
6768
<Compile Include="Endpoints\AngularEndpointsService.cs" />
6869
<Compile Include="Endpoints\EndpointsService.cs" />
6970
<Compile Include="ServiceAware.cs" />
@@ -81,6 +82,7 @@
8182
<Compile Include="Types\TypeService.cs" />
8283
<Compile Include="Views\ViewEntry.cs" />
8384
<Compile Include="Views\ViewNode.cs" />
85+
<Compile Include="Views\ViewsBlock.cs" />
8486
<Compile Include="Views\ViewsService.cs" />
8587
<Compile Include="WebApi\WebApiAction.cs" />
8688
<Compile Include="WebApi\WebApiController.cs" />

0 commit comments

Comments
 (0)