diff options
Diffstat (limited to 'RhSolutions.MLModifiers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs')
-rw-r--r-- | RhSolutions.MLModifiers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/RhSolutions.MLModifiers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs b/RhSolutions.MLModifiers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs new file mode 100644 index 0000000..f83d93a --- /dev/null +++ b/RhSolutions.MLModifiers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs @@ -0,0 +1,56 @@ +using System.Text.RegularExpressions; + +namespace RhSolutions.MLModifiers.DrinkingWaterHeatingPipes; + +public abstract class DrinkingWaterHeatingPipe : IProductMLModifier +{ + protected static readonly Regex _diameter = + new(@"([\b\D]|^)?(?<Diameter>16|20|25|32|40|50|63)([\b\D]|$)"); + protected static readonly Regex _type = + new(@"([\b\W])(?<Type>бухт|отр|штанг)([\b\w\.\s])"); + protected virtual string _title { get; } = string.Empty; + + protected virtual Dictionary<int, string> _diameterNames { get; } = new() + { + [16] = "16x2,2", + [20] = "20x2,8", + [25] = "25x3,5", + [32] = "32x4,4", + [40] = "40x5,5", + [50] = "50x6,9", + [63] = "63x8,6" + }; + + protected virtual Dictionary<string, string> _makeUp { get; } = new() + { + ["бухт"] = "бухта", + ["штанг"] = "прям.отрезки", + ["отр"] = "прям.отрезки" + }; + + public bool TryQueryModify(string input, out string output) + { + output = string.Empty; + var diameterMatch = _diameter.Match(input); + if (!diameterMatch.Success) + { + return false; + } + var diameter = int.Parse(diameterMatch.Groups["Diameter"].Value); + var typeMatch = _type.Match(input); + if (typeMatch.Success) + { + var type = typeMatch.Groups["Type"].Value; + output = $"Труба {_title} {_diameterNames[diameter]} {_makeUp[type]}"; + } + else if (diameter < 32) + { + output = $"Труба {_title} {_diameterNames[diameter]} {_makeUp["бухт"]}"; + } + else + { + output = $"Труба {_title} {_diameterNames[diameter]} {_makeUp["отр"]}"; + } + return true; + } +} |