summaryrefslogtreecommitdiff
path: root/RhSolutions.Parsers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs
diff options
context:
space:
mode:
Diffstat (limited to 'RhSolutions.Parsers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs')
-rw-r--r--RhSolutions.Parsers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs16
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
+ };
+ }
}