diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2022-10-08 19:22:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-08 12:22:44 +0100 |
commit | 768e16dad19e98e5a6090bd09a7662da6079eae0 (patch) | |
tree | e68861e02b9f99bd0e78fa6f44641512a2f547c7 /web_src/js/utils.test.js | |
parent | 7bb12d7efa9fd01e15ddc14b3b8e40df4a4abd42 (diff) | |
download | gitea-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.test.js')
-rw-r--r-- | web_src/js/utils.test.js | 18 |
1 files changed, 1 insertions, 17 deletions
diff --git a/web_src/js/utils.test.js b/web_src/js/utils.test.js index 5c17c162af..762f29f6fe 100644 --- a/web_src/js/utils.test.js +++ b/web_src/js/utils.test.js @@ -1,5 +1,5 @@ import { - basename, extname, isObject, uniq, stripTags, joinPaths, parseIssueHref, strSubMatch, + basename, extname, isObject, uniq, stripTags, joinPaths, parseIssueHref, prettyNumber, parseUrl, } from './utils.js'; @@ -86,22 +86,6 @@ test('parseIssueHref', () => { expect(parseIssueHref('')).toEqual({owner: undefined, repo: undefined, type: undefined, index: undefined}); }); -test('strSubMatch', () => { - expect(strSubMatch('abc', '')).toEqual(['abc']); - expect(strSubMatch('abc', 'a')).toEqual(['', 'a', 'bc']); - expect(strSubMatch('abc', 'b')).toEqual(['a', 'b', 'c']); - expect(strSubMatch('abc', 'c')).toEqual(['ab', 'c']); - expect(strSubMatch('abc', 'ac')).toEqual(['', 'a', 'b', 'c']); - expect(strSubMatch('abc', 'z')).toEqual(['abc']); - expect(strSubMatch('abc', 'az')).toEqual(['abc']); - - expect(strSubMatch('abc', 'aC')).toEqual(['', 'a', 'b', 'c']); - expect(strSubMatch('abC', 'ac')).toEqual(['', 'a', 'b', 'C']); - - expect(strSubMatch('aabbcc', 'abc')).toEqual(['', 'a', 'a', 'b', 'b', 'c', 'c']); - expect(strSubMatch('the/directory', 'hedir')).toEqual(['t', 'he', '/', 'dir', 'ectory']); -}); - test('prettyNumber', () => { expect(prettyNumber()).toEqual(''); expect(prettyNumber(null)).toEqual(''); |