]> source.dussan.org Git - gitblit.git/commit
Fix user mention regular expression and group replacement. merged--fixMentionsInTickets-985
authorFlorian Zschocke <florian.zschocke@devolo.de>
Sat, 10 Dec 2016 15:02:21 +0000 (16:02 +0100)
committerFlorian Zschocke <florian.zschocke@devolo.de>
Sat, 10 Dec 2016 15:17:21 +0000 (16:17 +0100)
commit7985115bd1301db867935b52a689ccfc32f13794
tree021ec7ae22b4817ec2008b0cd2b2a9ed48d73e22
parent0e4eebcfd98d079c93c33510284cdfe976e27725
Fix user mention regular expression and group replacement.

The regular expression used for user mentions used to work
only inside sentences. Also, since it tested for whitespace, the
whitespace would get replaced, too, which would join lines together.

Instead the new regex uses boundary matchers to match against
word boundaires. As these are not capturing only the actual user
mention can be captured and is then replaced. Also, this way the
regex can ignore punctuation like in "@jim, look at this."

Since Gibtlit now requires Java 7 we can use named capture groups.
This makes the use of a centrally defined regular expression much
safer. The (admittedly only) group to capture the user name is named
"user" and can be referenced by this name. By using the name instead
of a group number, the regex could be changed without the code using
it breaking because the group number changed.

A simple test is added for user mentions, which unfortunately
has to deal with the full markdown replacement, too.

Fixes #985
src/main/java/com/gitblit/Constants.java
src/main/java/com/gitblit/models/TicketModel.java
src/main/java/com/gitblit/tickets/TicketNotifier.java
src/main/java/com/gitblit/utils/MarkdownUtils.java
src/test/java/com/gitblit/tests/MarkdownUtilsTest.java