Добавьте файлы проекта.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using SQLLinter.Core;
|
||||
using SQLLinter.Core.Interfaces;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace SQLLinter.Infrastructure.Configuration.Overrides;
|
||||
|
||||
public class OverrideFinder
|
||||
{
|
||||
private static Regex _OverrideRegex = new Regex(@".*?sqllinter-override ?(.* += +.*)+.*", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
public IEnumerable<IOverride> GetOverrideList(Stream fileStream)
|
||||
{
|
||||
var overrideList = new List<IOverride>();
|
||||
TextReader reader = new StreamReader(fileStream);
|
||||
|
||||
string line;
|
||||
while ((line = reader.ReadLine()) != null)
|
||||
{
|
||||
if (line.Length > Constants.MaxLineWidthForRegexEval || !line.Contains("sqllinter-override"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var match = _OverrideRegex.Match(line);
|
||||
if (!match.Success)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var overrideDetails = match.Groups[1].Value.Split(',').Select(p => p.Trim()).ToList();
|
||||
foreach (var overrideDetail in overrideDetails)
|
||||
{
|
||||
var details = overrideDetail.Split(' ').Select(p => p.Trim()).ToList();
|
||||
if (OverrideTypeMap.List.ContainsKey(details[0]))
|
||||
{
|
||||
var overrideType = OverrideTypeMap.List.GetValueOrDefault(details[0]);
|
||||
overrideList.Add((IOverride)Activator.CreateInstance(overrideType, details[2]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fileStream.Seek(0, SeekOrigin.Begin);
|
||||
|
||||
return overrideList;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user