for Push.
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
using KssSmaPlaLib.Commons;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace KssSmaPlaLib.InBox
|
||||
{
|
||||
public class SheetFilterUxer : IFilterUxer<string>
|
||||
{
|
||||
private readonly HashSet<string> includedSheets;
|
||||
private readonly HashSet<string> excludedSheets;
|
||||
|
||||
public SheetFilterUxer(IEnumerable<string> included, IEnumerable<string> excluded)
|
||||
{
|
||||
includedSheets = new HashSet<string>(included ?? Enumerable.Empty<string>());
|
||||
excludedSheets = new HashSet<string>(excluded ?? Enumerable.Empty<string>());
|
||||
}
|
||||
|
||||
public IEnumerable<string> ApplyFilter(IEnumerable<string> sheetNames)
|
||||
{
|
||||
if (includedSheets.Any())
|
||||
{
|
||||
// Included優先 → lineNamesの中でincludedに含まれるものだけ返す
|
||||
//return sheetNames.Where(name => includedSheets.Contains(name));
|
||||
// ワイルドカード(*)ありとする!
|
||||
List<string> listA = new List<string>();
|
||||
foreach (var name in sheetNames)
|
||||
{
|
||||
foreach (var iName in includedSheets)
|
||||
{
|
||||
if (StringUxer.WildcardMatch(name, iName))
|
||||
{
|
||||
listA.Add(name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return listA;
|
||||
}
|
||||
|
||||
// Excluded適用 → lineNamesの中でexcludedに含まれないものだけ返す
|
||||
//return sheetNames.Where(name => !excludedSheets.Contains(name));
|
||||
// ワイルドカード(*)ありとする!
|
||||
List<string> listB = new List<string>();
|
||||
foreach (var name in sheetNames)
|
||||
{
|
||||
var isMatch = false;
|
||||
foreach (var eName in excludedSheets)
|
||||
{
|
||||
if (StringUxer.WildcardMatch(name, eName))
|
||||
{
|
||||
isMatch = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!isMatch) listB.Add(name);
|
||||
}
|
||||
return listB;
|
||||
}
|
||||
public bool CanPass(string sheetName)
|
||||
{
|
||||
return HasAnyPass(new[] { sheetName });
|
||||
}
|
||||
|
||||
public bool HasAnyPass(IEnumerable<string> sheetNames)
|
||||
{
|
||||
return ApplyFilter(sheetNames).Any();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user