Skip to content

Commit 04b9f4f

Browse files
author
Marco De Salvo
committed
#363 - Apply shim to RDFTurtle for long literals regex
1 parent e806c6c commit 04b9f4f

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

RDFSharp/Model/RDFModelShims.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public static partial class RDFModelShims
2727
internal const string PrefixRegexMask = @"^[a-zA-Z0-9_\-]+$";
2828
internal const string SubLanguageTagRegexMask = "(-[a-zA-Z0-9]{1,8})*(--ltr|--rtl)?";
2929
internal const string LanguageTagRegexMask = "[a-zA-Z]{1,8}" + SubLanguageTagRegexMask;
30+
internal const string TurtleLongLiteralCharsRegexMask = "[\n\r\t\"]";
3031
#endregion
3132

3233
#region Ctors
@@ -35,9 +36,11 @@ static RDFModelShims()
3536
#if NET8_0_OR_GREATER
3637
PrefixRegexShim = PrefixRegex();
3738
LanguageTagRegexShim = LanguageTagRegex();
39+
TurtleLongLiteralCharsRegexShim = TurtleLongLiteralCharsRegex();
3840
#else
3941
PrefixRegexShim = new Regex(PrefixRegexMask, RegexOptions.Compiled);
4042
LanguageTagRegexShim = new Regex("^" + LanguageTagRegexMask + "$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
43+
TurtleLongLiteralCharsRegexShim = new Regex(TurtleLongLiteralCharsRegexMask, RegexOptions.Compiled);
4144
#endif
4245
}
4346
#endregion
@@ -46,6 +49,8 @@ static RDFModelShims()
4649
internal static Regex PrefixRegexShim { get; }
4750

4851
internal static Regex LanguageTagRegexShim { get; }
52+
53+
internal static Regex TurtleLongLiteralCharsRegexShim { get; }
4954
#endregion
5055

5156
#if NET8_0_OR_GREATER
@@ -54,6 +59,9 @@ static RDFModelShims()
5459

5560
[GeneratedRegex("^" + LanguageTagRegexMask + "$", RegexOptions.IgnoreCase)]
5661
private static partial Regex LanguageTagRegex();
62+
63+
[GeneratedRegex(TurtleLongLiteralCharsRegexMask)]
64+
private static partial Regex TurtleLongLiteralCharsRegex();
5765
#endif
5866
}
5967
}

RDFSharp/Model/Serializers/RDFTurtle.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ limitations under the License.
2020
using System.IO;
2121
using System.Linq;
2222
using System.Text;
23-
using System.Text.RegularExpressions;
2423
using RDFSharp.Query;
2524

2625
namespace RDFSharp.Model
@@ -30,13 +29,6 @@ namespace RDFSharp.Model
3029
/// </summary>
3130
internal static class RDFTurtle
3231
{
33-
#region Properties
34-
/// <summary>
35-
/// Regex to catch literals which must be escaped as long literals in Turtle
36-
/// </summary>
37-
internal static readonly Lazy<Regex> regexTTL = new Lazy<Regex>(() => new Regex("[\n\r\t\"]", RegexOptions.Compiled));
38-
#endregion
39-
4032
#region Methods
4133

4234
#region Write
@@ -1618,7 +1610,7 @@ orderby triple.Subject.ToString(), triple.Predicate.ToString()
16181610
{
16191611
//Detect presence of long-literals in order to write proper delimiter
16201612
string litValDelim = "\"";
1621-
if (regexTTL.Value.Match(triple.Object.ToString()).Success)
1613+
if (RDFModelShims.TurtleLongLiteralCharsRegexShim.Match(triple.Object.ToString()).Success)
16221614
litValDelim = "\"\"\"";
16231615

16241616
//Write the literal's Turtle token

0 commit comments

Comments
 (0)