Skip to content

Commit eb0591d

Browse files
author
Marco De Salvo
committed
#359 Added HasDirection() capability to RDFPlainLiteral
1 parent 4f550e4 commit eb0591d

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

RDFSharp.Test/Model/RDFPlainLiteralTest.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public void ShouldCreatePlainLiteral(string value)
3737

3838
Assert.IsNotNull(pl);
3939
Assert.IsFalse(pl.HasLanguage());
40+
Assert.IsFalse(pl.HasDirection());
4041
Assert.IsTrue(pl.ToString().Equals(value ?? ""));
4142
}
4243

@@ -65,6 +66,7 @@ public void ShouldCreatePlainLiteralWithEmptyLanguage(string value, string langu
6566

6667
Assert.IsNotNull(pl);
6768
Assert.IsFalse(pl.HasLanguage());
69+
Assert.IsFalse(pl.HasDirection());
6870
Assert.IsTrue(pl.ToString().Equals(value ?? ""));
6971
}
7072

@@ -82,6 +84,7 @@ public void ShouldCreatePlainLiteralWithLanguage(string value, string language)
8284

8385
Assert.IsNotNull(pl);
8486
Assert.IsTrue(pl.HasLanguage());
87+
Assert.IsFalse(pl.HasDirection());
8588
Assert.IsTrue(pl.ToString().Equals(string.Concat(value, "@", language.ToUpperInvariant())));
8689
}
8790

@@ -93,14 +96,15 @@ public void ShouldCreatePlainLiteralWithLanguage(string value, string language)
9396
[DataRow("donal duck@en-US", "en-US--rtl")]
9497
[DataRow("donal duck@", "en--rtl")]
9598
[DataRow("donal duck@", "en--rTL")]
96-
[DataRow("", "en")]
97-
[DataRow(null, "en")]
99+
[DataRow("", "en--ltr")]
100+
[DataRow(null, "en--rtl")]
98101
public void ShouldCreatePlainLiteralWithLanguageDirection(string value, string language)
99102
{
100103
RDFPlainLiteral pl = new RDFPlainLiteral(value, language);
101104

102105
Assert.IsNotNull(pl);
103106
Assert.IsTrue(pl.HasLanguage());
107+
Assert.IsTrue(pl.HasDirection());
104108
Assert.IsTrue(pl.ToString().Equals(string.Concat(value, "@", language.ToUpperInvariant())));
105109
}
106110
#endregion

RDFSharp/Model/RDFPlainLiteral.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ public override string ToString()
7676
/// </summary>
7777
public bool HasLanguage()
7878
=> !string.IsNullOrEmpty(Language);
79+
80+
/// <summary>
81+
/// Checks if the plain literal has a language tag with base direction
82+
/// </summary>
83+
public bool HasDirection()
84+
=> HasLanguage()
85+
&& (Language.EndsWith("--ltr", System.StringComparison.OrdinalIgnoreCase)
86+
|| Language.EndsWith("--rtl", System.StringComparison.OrdinalIgnoreCase));
7987
#endregion
8088
}
8189
}

RDFSharp/Query/Mirella/Algebra/Expressions/RDFLangDirExpression.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,8 @@ internal override RDFPatternMember ApplyExpression(DataRow row)
8787
#region Calculate Result
8888
if (leftArgumentPMember is RDFPlainLiteral leftArgumentPMemberPLiteral)
8989
{
90-
if (leftArgumentPMemberPLiteral.Language.EndsWith("--ltr", System.StringComparison.OrdinalIgnoreCase))
91-
expressionResult = new RDFPlainLiteral("ltr");
92-
else if (leftArgumentPMemberPLiteral.Language.EndsWith("--rtl", System.StringComparison.OrdinalIgnoreCase))
93-
expressionResult = new RDFPlainLiteral("rtl");
90+
if (leftArgumentPMemberPLiteral.HasDirection())
91+
expressionResult = new RDFPlainLiteral(leftArgumentPMemberPLiteral.Language.Substring(leftArgumentPMemberPLiteral.Language.Length-3).ToLower()); //ltr / rtl
9492
else
9593
expressionResult = RDFPlainLiteral.Empty;
9694
}

0 commit comments

Comments
 (0)