summaryrefslogtreecommitdiff
path: root/RhSolutions.Parsers/DrinkingWaterHeatingFittings
diff options
context:
space:
mode:
Diffstat (limited to 'RhSolutions.Parsers/DrinkingWaterHeatingFittings')
-rw-r--r--RhSolutions.Parsers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs59
1 files changed, 30 insertions, 29 deletions
diff --git a/RhSolutions.Parsers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs b/RhSolutions.Parsers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs
index 7dba12c..867e886 100644
--- a/RhSolutions.Parsers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs
+++ b/RhSolutions.Parsers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs
@@ -4,35 +4,36 @@ namespace RhSolutions.Parsers.Fittings;
public abstract class DrinkingWaterHeatingFitting : IProductParser
{
- protected static readonly Regex _diameter =
- new(@"(?<!^)[\b\D]?(?<Diameter>16|20|25|32|40|50|63|15|26)[\b\D]?");
- protected static readonly Regex _angle =
- new(@"(?<!^)([\b\D])(?<Angle>45|90)([\b\D]|$)");
- protected static readonly Regex _thread =
- new(@"(?<!^)([\b\D])(?<Thread>1\s+1/4|1\s+1/2|1/2|3/4|2|1)([\b\D]|$)");
+ protected static readonly Regex _diameter =
+ new(@"(?<!^|\d)(?<Diameter>16|20|25|32|40|50|63|14|15|26)(?!\d)");
+ protected static readonly Regex _angle =
+ new(@"(?<!^|\d)(?<Angle>45|90)(?!\d)");
+ protected static readonly Regex _thread =
+ new(@"(?<!^|\d)(?<Thread>1\s+1/4|1\s+1/2|1/2|3/4|2|1)(?!\d)");
- protected virtual string _title { get; } = string.Empty;
+ protected virtual string _title { get; } = string.Empty;
- public virtual bool TryParse(string input, out string output)
- {
- var match = _diameter.Match(input);
- if (match.Success)
- {
- output = $"{_title} {match.Groups["Diameter"]}";
- return true;
- }
- else
- {
- output = string.Empty;
- return false;
- }
- }
- protected string NormalizeDiameter(string diameter)
- {
- return diameter switch
- {
- "26" => "25",
- _ => diameter
- };
- }
+ public virtual bool TryParse(string input, out string output)
+ {
+ var match = _diameter.Match(input);
+ if (match.Success)
+ {
+ output = $"{_title} {match.Groups["Diameter"]}";
+ return true;
+ }
+ else
+ {
+ output = string.Empty;
+ return false;
+ }
+ }
+ protected string NormalizeDiameter(string diameter)
+ {
+ return diameter switch
+ {
+ "14" => "16",
+ "26" => "25",
+ _ => diameter
+ };
+ }
}