Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove NameHelper and Translating names in action menus #73

Merged
merged 17 commits into from
Sep 10, 2023
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
Expand All @@ -15,12 +14,10 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
public class ActionAssociateFileV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionAssociateFileV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionAssociateFileV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(RepositoryAction action)
Expand Down Expand Up @@ -50,8 +47,8 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

Git.RepositoryAction? menuItem = CreateFileAssociationSubMenu(
repository,
name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ private IEnumerable<RepositoryAction> Map(RepositoryActionBrowseRepositoryV1? ac
}
}

private RepositoryAction? CreateBrowseRemoteAction(Repository repository, RepositoryActionBrowseRepositoryV1 action)
private RepositoryAction? CreateBrowseRemoteAction(IRepository repository, RepositoryActionBrowseRepositoryV1 action)
{
if (repository.Remotes.Count == 0)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
Expand All @@ -13,12 +11,10 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
public class ActionBrowserV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionBrowserV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionBrowserV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(Data.RepositoryAction action)
Expand Down Expand Up @@ -48,7 +44,7 @@ private IEnumerable<RepositoryAction> Map(RepositoryActionBrowserV1? action, Rep
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);
var url = _expressionEvaluator.EvaluateStringExpression(action.Url, repository);
yield return new RepositoryAction(name, repository)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,20 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
using RepoM.Core.Plugin.Repository;
using RepoM.Core.Plugin.RepositoryActions.Actions;
using RepositoryAction = RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.RepositoryAction;

public class ActionCommandV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionCommandV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionCommandV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(RepositoryAction action)
Expand All @@ -31,7 +28,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
return Map(action as RepositoryActionCommandV1, repository);
}

private IEnumerable<Git.RepositoryAction> Map(RepositoryActionCommandV1? action, Repository repository)
private IEnumerable<Git.RepositoryAction> Map(RepositoryActionCommandV1? action, IRepository repository)
{
if (action == null)
{
Expand All @@ -43,9 +40,9 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var command = _expressionEvaluator.EvaluateStringExpression(action.Command ?? string.Empty, repository);
var arguments = _expressionEvaluator.EvaluateStringExpression(action.Arguments ?? string.Empty, repository);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);
var command = _expressionEvaluator.EvaluateNullStringExpression(action.Command, repository);
var arguments = _expressionEvaluator.EvaluateNullStringExpression(action.Arguments, repository);

yield return new Git.RepositoryAction(name, repository)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,21 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
using System;
using System.Collections.Generic;
using System.IO.Abstractions;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
using RepoM.Core.Plugin.Repository;
using RepoM.Core.Plugin.RepositoryActions.Actions;
using RepositoryAction = Data.RepositoryAction;

public class ActionExecutableV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;
private readonly IFileSystem _fileSystem;

public ActionExecutableV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService, IFileSystem fileSystem)
public ActionExecutableV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, IFileSystem fileSystem)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
_fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
}

Expand All @@ -34,7 +31,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
return Map(action as RepositoryActionExecutableV1, repository);
}

private IEnumerable<Git.RepositoryAction> Map(RepositoryActionExecutableV1? action, Repository repository)
private IEnumerable<Git.RepositoryAction> Map(RepositoryActionExecutableV1? action, IRepository repository)
{
if (action == null)
{
Expand All @@ -46,7 +43,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

var found = false;
foreach (var executable in action.Executables)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
Expand All @@ -12,12 +11,10 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
public class ActionFolderV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionFolderV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionFolderV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(RepositoryAction action)
Expand Down Expand Up @@ -48,7 +45,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
deferred = _expressionEvaluator.EvaluateBooleanExpression(action.IsDeferred, repository);
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

if (deferred)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,7 @@ private IEnumerable<RepositoryActionBase> Map(RepositoryActionGitCheckoutV1? act
yield break;
}

var name = action.Name;
if (!string.IsNullOrEmpty(name))
{
name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
}
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

if (string.IsNullOrWhiteSpace(name))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,20 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
using RepoM.Core.Plugin.Repository;
using RepoM.Core.Plugin.RepositoryActions.Actions;
using RepositoryAction = RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.RepositoryAction;

public class ActionJustTextV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionJustTextV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionJustTextV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(RepositoryAction action)
Expand All @@ -31,7 +28,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
return Map(action as RepositoryActionJustTextV1, repository);
}

private IEnumerable<RepoM.Api.Git.RepositoryAction> Map(RepositoryActionJustTextV1? action, Repository repository)
private IEnumerable<RepoM.Api.Git.RepositoryAction> Map(RepositoryActionJustTextV1? action, IRepository repository)
{
if (action == null)
{
Expand All @@ -43,7 +40,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

yield return new Git.RepositoryAction(name, repository)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,24 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using RepoM.Api.Common;
using JetBrains.Annotations;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
using RepoM.Core.Plugin.RepositoryActions.Actions;
using RepositoryAction = RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.RepositoryAction;

[UsedImplicitly]
public class ActionPinRepositoryV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;
private readonly IRepositoryMonitor _repositoryMonitor;

public ActionPinRepositoryV1Mapper(
IRepositoryExpressionEvaluator expressionEvaluator,
ITranslationService translationService,
IRepositoryMonitor repositoryMonitor)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
_repositoryMonitor = repositoryMonitor ?? throw new ArgumentNullException(nameof(repositoryMonitor));
}

Expand All @@ -47,11 +45,7 @@ private IEnumerable<RepositoryActionBase> Map(RepositoryActionPinRepositoryV1? a
yield break;
}

var name = action.Name ?? string.Empty;
if (!string.IsNullOrEmpty(name))
{
name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
}
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

var currentlyPinned = _repositoryMonitor.IsPinned(repository);

Expand All @@ -69,20 +63,20 @@ private IEnumerable<RepositoryActionBase> Map(RepositoryActionPinRepositoryV1? a
};
}

Git.RepositoryAction CreateAction(string name, Repository repository, bool newPinnedValue)
{
return new Git.RepositoryAction(name, repository)
{
Action = new DelegateAction((_, _) => _repositoryMonitor.SetPinned(newPinnedValue, repository)),
};
}

yield return action.Mode switch
{
RepositoryActionPinRepositoryV1.PinMode.Toggle => CreateAction(name, repository, !currentlyPinned),
RepositoryActionPinRepositoryV1.PinMode.Pin => CreateAction(name, repository, true),
RepositoryActionPinRepositoryV1.PinMode.UnPin => CreateAction(name, repository, false),
_ => throw new NotImplementedException(),
};

Git.RepositoryAction CreateAction(string actionName, Repository repo, bool newPinnedValue)
{
return new Git.RepositoryAction(actionName, repo)
{
Action = new DelegateAction((_, _) => _repositoryMonitor.SetPinned(newPinnedValue, repo)),
};
}
}
}
43 changes: 0 additions & 43 deletions src/RepoM.Api/IO/NameHelper.cs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,17 @@ public interface IRepositoryExpressionEvaluator
object? EvaluateValueExpression(string value, IRepository? repository);

bool EvaluateBooleanExpression(string? value, IRepository? repository);
}

public static class RepositoryExpressionEvaluatorExtensions
{
public static string EvaluateNullStringExpression(this IRepositoryExpressionEvaluator evaluator, string? value, IRepository? repository)
{
if (string.IsNullOrEmpty(value))
{
return string.Empty;
}

return evaluator.EvaluateStringExpression(value, repository);
}
}
Loading
Loading