|
|
|
@ -8,17 +8,20 @@ namespace Avalonia.NameGenerator.Generator |
|
|
|
internal class AvaloniaNameGenerator : INameGenerator |
|
|
|
{ |
|
|
|
private readonly IGlobPattern _pathPattern; |
|
|
|
private readonly IGlobPattern _namespacePattern; |
|
|
|
private readonly IViewResolver _classes; |
|
|
|
private readonly INameResolver _names; |
|
|
|
private readonly ICodeGenerator _code; |
|
|
|
|
|
|
|
public AvaloniaNameGenerator( |
|
|
|
IGlobPattern pathPattern, |
|
|
|
IGlobPattern namespacePattern, |
|
|
|
IViewResolver classes, |
|
|
|
INameResolver names, |
|
|
|
ICodeGenerator code) |
|
|
|
{ |
|
|
|
_pathPattern = pathPattern; |
|
|
|
_namespacePattern = namespacePattern; |
|
|
|
_classes = classes; |
|
|
|
_names = names; |
|
|
|
_code = code; |
|
|
|
@ -26,21 +29,21 @@ namespace Avalonia.NameGenerator.Generator |
|
|
|
|
|
|
|
public IReadOnlyList<GeneratedPartialClass> GenerateNameReferences(IEnumerable<AdditionalText> additionalFiles) |
|
|
|
{ |
|
|
|
var resolveViewsQuery = |
|
|
|
var resolveViews = |
|
|
|
from file in additionalFiles |
|
|
|
where _pathPattern.Matches(file.Path) |
|
|
|
where file.Path.EndsWith(".xaml") || |
|
|
|
file.Path.EndsWith(".paml") || |
|
|
|
file.Path.EndsWith(".axaml") |
|
|
|
where (file.Path.EndsWith(".xaml") || |
|
|
|
file.Path.EndsWith(".paml") || |
|
|
|
file.Path.EndsWith(".axaml")) && |
|
|
|
_pathPattern.Matches(file.Path) |
|
|
|
let xaml = file.GetText()!.ToString() |
|
|
|
let type = _classes.ResolveView(xaml) |
|
|
|
where type != null |
|
|
|
select type; |
|
|
|
let view = _classes.ResolveView(xaml) |
|
|
|
where view != null && _namespacePattern.Matches(view.Namespace) |
|
|
|
select view; |
|
|
|
|
|
|
|
var query = |
|
|
|
from view in resolveViewsQuery |
|
|
|
from view in resolveViews |
|
|
|
let names = _names.ResolveNames(view.Xaml) |
|
|
|
let code = _code.GenerateCode(view.ClassName, view.NameSpace, names) |
|
|
|
let code = _code.GenerateCode(view.ClassName, view.Namespace, names) |
|
|
|
let fileName = $"{view.ClassName}.g.cs" |
|
|
|
select new GeneratedPartialClass(fileName, code); |
|
|
|
|
|
|
|
|