[parsing] Allow usernames starting & ending with an underscore

This commit is contained in:
Laura Hausmann 2024-05-18 16:53:20 +02:00
parent adba960f8c
commit 91544cdd78
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
2 changed files with 12 additions and 3 deletions

View file

@ -228,7 +228,8 @@ module private MfmParser =
>>. skipString "@"
>>. many1Chars (
satisfy isAsciiLetterOrNumber
<|> attempt (anyOf "._-" .>> nextCharSatisfies isAsciiLetterOrNumber)
<|> pchar '_'
<|> attempt (anyOf ".-" .>> nextCharSatisfies isAsciiLetterOrNumber)
)
.>>. opt (skipChar '@' >>. domain)
.>> (lookAhead

View file

@ -66,13 +66,21 @@ public class MfmTests
[TestMethod]
public void TestMention()
{
const string input = "test @test test @test@instance.tld";
const string input = "test @test test @test@instance.tld @test_ @_test @test_@instance.tld @_test@instance.tld";
List<MfmNode> expected =
[
new MfmTextNode("test "),
new MfmMentionNode("test", "test", null),
new MfmTextNode(" test "),
new MfmMentionNode("test@instance.tld", "test", "instance.tld")
new MfmMentionNode("test@instance.tld", "test", "instance.tld"),
new MfmTextNode(" "),
new MfmMentionNode("test_", "test_", null),
new MfmTextNode(" "),
new MfmMentionNode("_test", "_test", null),
new MfmTextNode(" "),
new MfmMentionNode("test_@instance.tld", "test_", "instance.tld"),
new MfmTextNode(" "),
new MfmMentionNode("_test@instance.tld", "_test", "instance.tld"),
];
var res = Mfm.parse(input);