diff --git a/scm-ui/ui-components/src/index.ts b/scm-ui/ui-components/src/index.ts
index 9a8049a7bd..8fb3115c65 100644
--- a/scm-ui/ui-components/src/index.ts
+++ b/scm-ui/ui-components/src/index.ts
@@ -79,6 +79,7 @@ export { default as CardColumn } from "./CardColumn";
export { default as CardColumnSmall } from "./CardColumnSmall";
export { default as CommaSeparatedList } from "./CommaSeparatedList";
export { default as SplitAndReplace, Replacement } from "./SplitAndReplace";
+export { regExpPattern as changesetShortLinkRegex } from "./remarkChangesetShortLinkParser";
export { default as comparators } from "./comparators";
diff --git a/scm-ui/ui-webapp/src/repos/components/changesets/ChangesetShortLink.tsx b/scm-ui/ui-webapp/src/repos/components/changesets/ChangesetShortLink.tsx
index e4f03a351f..6177dee5a9 100644
--- a/scm-ui/ui-webapp/src/repos/components/changesets/ChangesetShortLink.tsx
+++ b/scm-ui/ui-webapp/src/repos/components/changesets/ChangesetShortLink.tsx
@@ -25,26 +25,27 @@
import React from "react";
import { Link } from "react-router-dom";
import { Changeset } from "@scm-manager/ui-types";
-import { Replacement } from "@scm-manager/ui-components";
+import { Replacement, changesetShortLinkRegex } from "@scm-manager/ui-components";
const ChangesetShortLink: (changeset: Changeset, value: string) => Replacement[] = (changeset, value) => {
- const linkRegExp = "([A-Za-z0-9\.\-_]+)\/([A-Za-z0-9\.\-_]+)@([a-f0-9]+)";
- const matches = value.match(new RegExp(linkRegExp, "g"));
- if (!matches) {
- return [];
+ const regex = new RegExp(changesetShortLinkRegex, "g")
+
+ const replacements: Replacement[] = [];
+
+ let m = regex.exec(value);
+ while (m) {
+ const namespace = m[1];
+ const name = m[2];
+ const revision = m[3];
+ const link = `/repo/${namespace}/${name}/code/changeset/${revision}`;
+ replacements.push({
+ textToReplace: m[0],
+ replacement: {m[0]}
+ });
+ m = regex.exec(value);
}
- return matches.map(value => {
- const groups = value.match(new RegExp(linkRegExp));
- const namespace = groups[1];
- const name = groups[2];
- const revision = groups[3];
- const link = `/repo/${namespace}/${name}/changeset/${revision}`;
- const replacement: Replacement = {
- textToReplace: value,
- replacement: {value}
- };
- return replacement;
- });
+
+ return replacements;
};
export default ChangesetShortLink;