summaryrefslogtreecommitdiffstats
path: root/web_src/js/utils.js
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2022-10-08 19:22:44 +0800
committerGitHub <noreply@github.com>2022-10-08 12:22:44 +0100
commit768e16dad19e98e5a6090bd09a7662da6079eae0 (patch)
treee68861e02b9f99bd0e78fa6f44641512a2f547c7 /web_src/js/utils.js
parent7bb12d7efa9fd01e15ddc14b3b8e40df4a4abd42 (diff)
downloadgitea-768e16dad19e98e5a6090bd09a7662da6079eae0.tar.gz
gitea-768e16dad19e98e5a6090bd09a7662da6079eae0.zip
Use weighted algorithm for string matching when finding files in repo (#21370)
This PR is for: * https://github.com/go-gitea/gitea/issues/20231 Now, when a user searches `word`, they always see `/{word}.txt` before `/{w}e-g{o}t-{r}esult.{d}at` Demo: When searching "a", "a.ext" comes first. Then when searching "at", the longer matched "template" comes first. <details> ![image](https://user-images.githubusercontent.com/2114189/194588738-3644d891-956f-40e4-b79b-b97d34265456.png) ![image](https://user-images.githubusercontent.com/2114189/194588797-9b124670-4e1e-4510-a170-780295ed89b8.png) </details> This PR also makes the frontend tests could import feature JS files by introducing `jestSetup.js` Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: silverwind <me@silverwind.io>
Diffstat (limited to 'web_src/js/utils.js')
-rw-r--r--web_src/js/utils.js30
1 files changed, 0 insertions, 30 deletions
diff --git a/web_src/js/utils.js b/web_src/js/utils.js
index 8e8dc01be1..4020b7a7f4 100644
--- a/web_src/js/utils.js
+++ b/web_src/js/utils.js
@@ -59,36 +59,6 @@ export function parseIssueHref(href) {
return {owner, repo, type, index};
}
-// return the sub-match result as an array: [unmatched, matched, unmatched, matched, ...]
-// res[even] is unmatched, res[odd] is matched, see unit tests for examples
-export function strSubMatch(full, sub) {
- const res = [''];
- let i = 0, j = 0;
- const subLower = sub.toLowerCase(), fullLower = full.toLowerCase();
- while (i < subLower.length && j < fullLower.length) {
- if (subLower[i] === fullLower[j]) {
- if (res.length % 2 !== 0) res.push('');
- res[res.length - 1] += full[j];
- j++;
- i++;
- } else {
- if (res.length % 2 === 0) res.push('');
- res[res.length - 1] += full[j];
- j++;
- }
- }
- if (i !== sub.length) {
- // if the sub string doesn't match the full, only return the full as unmatched.
- return [full];
- }
- if (j < full.length) {
- // append remaining chars from full to result as unmatched
- if (res.length % 2 === 0) res.push('');
- res[res.length - 1] += full.substring(j);
- }
- return res;
-}
-
// pretty-print a number using locale-specific separators, e.g. 1200 -> 1,200
export function prettyNumber(num, locale = 'en-US') {
if (typeof num !== 'number') return '';