mirror of
https://github.com/ppy/osu.git
synced 2024-12-14 08:52:55 +08:00
Add support for parsing Markdown inline links
Extend the Markdown parsing regex to allow parsing so-called inline links. Within the parenthesis () part of the Markdown URL syntax, introduce a new capturing group: ( \s+ // whitespace between actual URL and inline title (?<title> // start of "title" named group "" // opening double quote (doubled inside @ string) ( [^""] // any character but a double quote | // or (?<=\\) // the next character should be preceded by a \ "" // a double quote )* // zero or more times "" // closing double quote ) )? // the whole group is optional This allows for parsing the inline links as-provided by web. Correctness is displayed by the passing tests.
This commit is contained in:
parent
a89ea78a7a
commit
24b7160522
@ -1,4 +1,4 @@
|
||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
@ -20,7 +20,7 @@ namespace osu.Game.Online.Chat
|
||||
private static readonly Regex new_link_regex = new Regex(@"\[(?<url>[a-z]+://[^ ]+) (?<text>(((?<=\\)[\[\]])|[^\[\]])*(((?<open>\[)(((?<=\\)[\[\]])|[^\[\]])*)+((?<close-open>\])(((?<=\\)[\[\]])|[^\[\]])*)+)*(?(open)(?!)))\]");
|
||||
|
||||
// [test](https://osu.ppy.sh/b/1234) -> test (https://osu.ppy.sh/b/1234) aka correct markdown format
|
||||
private static readonly Regex markdown_link_regex = new Regex(@"\[(?<text>(((?<=\\)[\[\]])|[^\[\]])*(((?<open>\[)(((?<=\\)[\[\]])|[^\[\]])*)+((?<close-open>\])(((?<=\\)[\[\]])|[^\[\]])*)+)*(?(open)(?!)))\]\((?<url>[a-z]+://[^ ]+)\)");
|
||||
private static readonly Regex markdown_link_regex = new Regex(@"\[(?<text>(((?<=\\)[\[\]])|[^\[\]])*(((?<open>\[)(((?<=\\)[\[\]])|[^\[\]])*)+((?<close-open>\])(((?<=\\)[\[\]])|[^\[\]])*)+)*(?(open)(?!)))\]\((?<url>[a-z]+://[^ ]+)(\s+(?<title>""([^""]|(?<=\\)"")*""))?\)");
|
||||
|
||||
// advanced, RFC-compatible regular expression that matches any possible URL, *but* allows certain invalid characters that are widely used
|
||||
// This is in the format (<required>, [optional]):
|
||||
|
Loading…
Reference in New Issue
Block a user