Stepami / hydrascript

TypeScript & Go inspired open-source public research project written in C#
GNU General Public License v3.0
70 stars 4 forks source link

[feature request] Вынести создание координат в сервис ITextCoordinateSystemComputer #109

Closed Stepami closed 2 months ago

Stepami commented 2 months ago

Is your feature request related to a problem? Please describe. Конструктор класса Coordinate https://github.com/Stepami/hydrascript/blob/master/src/Domain/HydraScript.Domain.FrontEnd/Lexer/Token.cs#L42 Обладает слишком сложной реализацией с неположенной ответственностью:

public record Coordinates(int Line, int Column)
{
    public Coordinates(int absolutePos, IReadOnlyList<int> system) :
        this(0, 0)
    {
        for (var i = 0; i < system.Count; i++)
            if (absolutePos <= system[i])
            {
                var offset = i == 0 ? -1 : system[i - 1];
                (Line, Column) = (i + 1, absolutePos - offset);
                break;
            }

        if (Line == 0)
        {
            (Line, Column) = (system.Count + 1, 1);
        }
    }

    public override string ToString() => $"({Line}, {Column})";
}

Describe the solution you'd like Необходимо перенести логику вычисления координаты (Строка, Столбец) из пары (индекс, переносы строк) внутрь сервиса ITextCoordinateSystemComputer