using System.Diagnostics;
using CodePlay.Core.Interfaces;
using CodePlay.Core.Models;
namespace CodePlay.Core.Pipeline;
///
/// 转换管道 - 按优先级顺序执行所有行级转换器
///
public class ConversionPipeline
{
private readonly List _converters = new();
public void Register(ILineConverter converter)
{
_converters.Add(converter);
}
public string Execute(string line, ConversionContext context)
{
if (string.IsNullOrEmpty(line)) return line;
return _converters
.OrderBy(c => c.Priority)
.Aggregate(line, (current, converter) => converter.Convert(current, context));
}
}