2024-11-01 17:05:13 -07:00

82 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.RsM;
internal record Point
{
[JsonConstructor]
public Point(string r, string th, string data, string rs, string rsA, string rsB, string numberSample, string x, string y, string irng, string vrng, string chiSq, string meritGOF, string dataIntegrity)
{
R = r;
Th = th;
Data = data;
Rs = rs;
RsA = rsA;
RsB = rsB;
NumberSample = numberSample;
X = x;
Y = y;
Irng = irng;
Vrng = vrng;
ChiSq = chiSq;
MeritGOF = meritGOF;
DataIntegrity = dataIntegrity;
}
[JsonPropertyName("R")] public string R { get; }
[JsonPropertyName("Th")] public string Th { get; }
[JsonPropertyName("Data")] public string Data { get; }
[JsonPropertyName("Rs")] public string Rs { get; }
[JsonPropertyName("RsA")] public string RsA { get; }
[JsonPropertyName("RsB")] public string RsB { get; }
[JsonPropertyName("#Smpl")] public string NumberSample { get; }
[JsonPropertyName("x")] public string X { get; }
[JsonPropertyName("y")] public string Y { get; }
[JsonPropertyName("Irng")] public string Irng { get; }
[JsonPropertyName("Vrng")] public string Vrng { get; }
[JsonPropertyName("ChiSq")] public string ChiSq { get; }
[JsonPropertyName("merit/GOF")] public string MeritGOF { get; }
[JsonPropertyName("DataIntegrity")] public string DataIntegrity { get; }
internal static ReadOnlyCollection<Point> Get(int take, ReadOnlyCollection<string> lines, string[] separator)
{
List<Point> results = new();
Point point;
string[] segments;
ReadOnlyCollection<string> collection;
for (int i = take - 1; i < lines.Count; i++)
{
if (string.IsNullOrEmpty(lines[i]))
break;
segments = lines[i].Split(separator, StringSplitOptions.RemoveEmptyEntries);
collection = Complete.GetCollection(segments);
point = new(collection.Count < 1 ? string.Empty : collection[0],
collection.Count < 2 ? string.Empty : collection[1],
collection.Count < 3 ? string.Empty : collection[2],
collection.Count < 4 ? string.Empty : collection[3],
collection.Count < 5 ? string.Empty : collection[4],
collection.Count < 6 ? string.Empty : collection[5],
collection.Count < 7 ? string.Empty : collection[6],
collection.Count < 8 ? string.Empty : collection[7],
collection.Count < 9 ? string.Empty : collection[8],
collection.Count < 10 ? string.Empty : collection[9],
collection.Count < 11 ? string.Empty : collection[10],
collection.Count < 12 ? string.Empty : collection[11],
collection.Count < 13 ? string.Empty : collection[12],
collection.Count < 14 ? string.Empty : collection[13]);
results.Add(point);
}
return new(results);
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(Point))]
internal partial class PointSourceGenerationContext : JsonSerializerContext
{
}