diff options
Diffstat (limited to 'RhSolutions.Parsers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs')
-rw-r--r-- | RhSolutions.Parsers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/RhSolutions.Parsers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs b/RhSolutions.Parsers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs index c6ebda6..b8845f5 100644 --- a/RhSolutions.Parsers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs +++ b/RhSolutions.Parsers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs @@ -5,8 +5,8 @@ namespace RhSolutions.Parsers.Pipes; public abstract class DrinkingWaterHeatingPipe : IProductParser { protected static readonly Regex _diameter = - new(@"([\b\D]|^)?(?<Diameter>16|20|25|32|40|50|63)([\b\D]|$)"); - protected static readonly Regex _type = + new(@"(?<!^|\d)(?<Diameter>16|20|25|32|40|50|63|14|15|26)(?!\d)"); + protected static readonly Regex _type = new(@"([\b\W])(?<Type>бухт|отр|штанг)([\b\w\.\s])"); protected virtual string _title { get; } = string.Empty; @@ -36,7 +36,7 @@ public abstract class DrinkingWaterHeatingPipe : IProductParser { return false; } - var diameter = int.Parse(diameterMatch.Groups["Diameter"].Value); + var diameter = int.Parse(NormalizeDiameter(diameterMatch.Groups["Diameter"].Value)); var typeMatch = _type.Match(input); if (typeMatch.Success) { @@ -53,4 +53,14 @@ public abstract class DrinkingWaterHeatingPipe : IProductParser } return true; } + + protected string NormalizeDiameter(string diameter) + { + return diameter switch + { + "14" => "16", + "26" => "25", + _ => diameter + }; + } } |