Commit Graph

32 Commits

Author SHA1 Message Date
a0a4501008 Merge remote-tracking branch 'upstream/master' into catch-combo-counter 2020-09-01 20:17:25 +03:00
0e2ccac33b Add spaces to comments 2020-05-04 18:36:24 -07:00
898520935e Move link handling code to OsuGame
This allows for future calls from arguments / associations
2019-11-01 11:40:51 +09:00
661dfbefaf Change containment check to overlap
Due to scenarios wherein a formatted link ended up as part of a larger
raw link after parsing, change the containment check to an overlap check
and add appropriate tests for these edge cases.
2019-10-25 00:42:58 +02:00
cbd99cc767 Resolve link-in-link edge case
Testing with #6542 surfaced a crash scenario, caused by formatted links
that had URLs in the display text, for example

    [mean example - https://osu.ppy.sh](https://osu.ppy.sh)

In that case the outer Markdown link would get picked up once, and then
reduced to the link text when looking for other links, leading to it
being picked up again the second time when the raw link is found.

Add a check in the raw link parsing path that ensures that the found
URL is not a part of a bigger, pre-existing link.
2019-10-24 15:52:55 +02:00
24b7160522 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.
2019-10-24 15:52:55 +02:00
08350a1aca Add parenthesis handling to old link format
Allow users to put both balanced round parentheses, as well as
unbalanced escaped ones, in old style link text. The implementation
is the same as for Markdown and new style links, except for swapping
all instances of

    \[\]

to

    \(\)

for obvious reasons (different type of parenthesis requiring escaping).
Tests also included.
2019-09-04 00:21:27 +02:00
f04add6d9e Add bracket handling to Markdown link format
Allow users to put both balanced brackets, as well as unbalanced
escaped ones, in Markdown link text. The implementation is the exact
same as in the case of new format links.

For completion's sake, tests also included.
2019-09-04 00:07:00 +02:00
24d4f0372c Refactor link parsing regexes to use named groups
For the sake of readability, consistency and to make further changes
easier, introduce named groups (?<text>) and (?<url>) to all link
parsing regexes which have parts containing the desired link text
and (optionally) URL.

The introduction of the named groups additionally simplifies
handleMatches() and makes all calls to it consistent.
2019-09-04 00:06:52 +02:00
a8f16503e2 Add backslash escaping to new link format
For users to be able to add square brackets inside of links using
the new format, the regular expression used for parsing those links
contained a balancing group, which can be used for matching pairs
of tokens (in this case, opening and closing brackets, in that order).
However, this means that users could not post links with unmatched
brackets inside of them (ie. ones that contain single brackets, or
a closing bracket and then an opening one). Allow for escaping opening
and closing brackets using the backslash character.

The change substitutes this old fragment of the regex in the display
text group:

    [^\[\]]*        // any character other than closing/opening bracket

for this one:

    (((?<=\\)[\[\]])|[^\[\]])*

The second pattern in the alternative remains the same; the first one
performs the escaping, as follows:

    (
        (?<=\\)     // positive lookbehind expression:
                    // this match will succeed, if the next expression
                    // is preceded by a single backslash
        [\[\]]      // either an opening or closing brace
    )

Since the entire display group is matched, unfortunately the lookbehind
expression does not actually strip the backslashes, so they are
manually stripped in handleMatches.

As demonstrated in the unit tests attached, this also allows balanced
brackets to be mixed with escaped ones.
2019-09-03 23:18:39 +02:00
015406f4d2 Fix link parser 2019-08-18 22:02:59 +03:00
07e17518e9 Fix all "Maintainability" CodeFactor issues 2019-06-11 10:28:16 +02:00
612db31c38 Apply newline additions 2019-04-01 12:16:32 +09:00
26d53d06a9 Fix remaining issues 2019-02-28 13:31:40 +09:00
8617aaa2a7 Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
32a74f95a5 Normalize all the line endings 2018-04-13 18:26:38 +09:00
75fdca928e Handle links correctly and don't re-open profile if the user is same. 2018-02-26 01:21:29 +05:30
bb40919f9c Add link handling to recent activities.
- Add a show user action to link handling
2018-02-26 01:21:27 +05:30
e5188fd151 Add better channel test cases (testing non-existent channels) 2018-01-30 17:43:19 +09:00
d81d884a01 Remove unnecessary paren handling from regex
Can't find a reason for this to exist
2018-01-30 17:16:01 +09:00
662c7c5bdc Fix osump links 2018-01-30 16:44:43 +09:00
dd2731b873 Add support for markdown style links 2018-01-30 16:38:45 +09:00
df221b6786 Remove usage of ValueTuple to allow for dynamic recompilation 2018-01-29 17:45:23 +09:00
3bf9901dd2 Fixed bugs and added tests 2018-01-09 16:11:45 +01:00
1be0569743 Update licence headers 2018-01-09 14:34:52 +09:00
e7721d71f3 Changed chat link implementation according to review 2017-12-31 00:51:47 +01:00
c5a7f5b163 Renamed the static variables and made them readonly, aswell as other small adjustments (CI) 2017-12-07 19:39:39 +01:00
f4f1291919 Removed "wiki:" prefix from wiki links (links are visible on tooltips so this is unnecessary now) 2017-12-07 11:23:31 +01:00
bd11124e6d Removed unnecessary copy (pass-by-reference anyways) 2017-12-07 11:12:12 +01:00
1b971c01e6 Fixed a bug where links would be out of order in their List which would cause the game to crash 2017-12-07 10:31:44 +01:00
f5f287bed5 Rolled back the idea that there should be a separate class for formatted messages 2017-12-01 20:25:02 +01:00
01bea3bada Re-implemented message formatting (mostly taken from osu-stable code) 2017-12-01 10:56:48 +01:00