Skip to content

Commit e806c6c

Browse files
author
Marco De Salvo
committed
Shim optimizations
1 parent 4245c2d commit e806c6c

File tree

5 files changed

+22
-18
lines changed

5 files changed

+22
-18
lines changed

RDFSharp/Model/RDFModelShims.cs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,30 @@ namespace RDFSharp.Model
2323
/// </summary>
2424
public static partial class RDFModelShims
2525
{
26-
#region Regex
27-
26+
#region Constants
2827
internal const string PrefixRegexMask = @"^[a-zA-Z0-9_\-]+$";
29-
internal static Regex PrefixRegexShim =>
30-
#if NET8_0_OR_GREATER
31-
PrefixRegex();
32-
#else
33-
new Regex(PrefixRegexMask, RegexOptions.Compiled);
34-
#endif
35-
3628
internal const string SubLanguageTagRegexMask = "(-[a-zA-Z0-9]{1,8})*(--ltr|--rtl)?";
3729
internal const string LanguageTagRegexMask = "[a-zA-Z]{1,8}" + SubLanguageTagRegexMask;
38-
internal static Regex LanguageTagRegexShim() =>
30+
#endregion
31+
32+
#region Ctors
33+
static RDFModelShims()
34+
{
3935
#if NET8_0_OR_GREATER
40-
LanguageTagRegex();
36+
PrefixRegexShim = PrefixRegex();
37+
LanguageTagRegexShim = LanguageTagRegex();
4138
#else
42-
new Regex("^" + LanguageTagRegexMask + "$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
39+
PrefixRegexShim = new Regex(PrefixRegexMask, RegexOptions.Compiled);
40+
LanguageTagRegexShim = new Regex("^" + LanguageTagRegexMask + "$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
4341
#endif
42+
}
43+
#endregion
44+
45+
#region Properties
46+
internal static Regex PrefixRegexShim { get; }
47+
48+
internal static Regex LanguageTagRegexShim { get; }
49+
#endregion
4450

4551
#if NET8_0_OR_GREATER
4652
[GeneratedRegex(PrefixRegexMask)]
@@ -49,7 +55,5 @@ internal static Regex LanguageTagRegexShim() =>
4955
[GeneratedRegex("^" + LanguageTagRegexMask + "$", RegexOptions.IgnoreCase)]
5056
private static partial Regex LanguageTagRegex();
5157
#endif
52-
53-
#endregion
5458
}
5559
}

RDFSharp/Model/RDFModelUtilities.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ internal static (bool,string) ValidateTypedLiteral(string literalValue, RDFModel
664664
return (isValidNormalizedString, literalValue);
665665

666666
case RDFModelEnums.RDFDatatypes.XSD_LANGUAGE:
667-
bool isValidLanguage = RDFModelShims.LanguageTagRegexShim().Match(literalValue).Success;
667+
bool isValidLanguage = RDFModelShims.LanguageTagRegexShim.Match(literalValue).Success;
668668
return (isValidLanguage, literalValue);
669669

670670
case RDFModelEnums.RDFDatatypes.XSD_BASE64BINARY:

RDFSharp/Model/RDFPlainLiteral.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public RDFPlainLiteral(string value)
5050
/// </summary>
5151
public RDFPlainLiteral(string value, string language) : this(value)
5252
{
53-
if (language != null && RDFModelShims.LanguageTagRegexShim().Match(language).Success)
53+
if (language != null && RDFModelShims.LanguageTagRegexShim.Match(language).Success)
5454
Language = language.ToUpperInvariant();
5555
}
5656
#endregion

RDFSharp/Model/Validation/Abstractions/Constraints/RDFLanguageInConstraint.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public RDFLanguageInConstraint(List<string> languageTags)
4444
languageTags?.ForEach(lt =>
4545
{
4646
string languageTag = lt?.Trim() ?? string.Empty;
47-
if (languageTag == string.Empty || languageTag == "*" || RDFModelShims.LanguageTagRegexShim().Match(languageTag).Success)
47+
if (languageTag == string.Empty || languageTag == "*" || RDFModelShims.LanguageTagRegexShim.Match(languageTag).Success)
4848
LanguageTags.Add(languageTag.ToUpperInvariant());
4949
});
5050
}

RDFSharp/Query/Mirella/Algebra/Filters/RDFLangMatchesFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public RDFLangMatchesFilter(RDFVariable variable, string language)
6161
#endregion
6262

6363
bool acceptsNoneOrAnyLanguageTag = (string.IsNullOrEmpty(language) || language == "*");
64-
if (acceptsNoneOrAnyLanguageTag || RDFModelShims.LanguageTagRegexShim().Match(language).Success)
64+
if (acceptsNoneOrAnyLanguageTag || RDFModelShims.LanguageTagRegexShim.Match(language).Success)
6565
{
6666
VariableName = variable.ToString();
6767
Language = language?.ToUpperInvariant() ?? string.Empty;

0 commit comments

Comments
 (0)