0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-03-27 18:31:50 +01:00

Feature: Case-insensitive "find files in repo" ()

This (short) PR builds upon  and makes the file search
case-insensitive.

Previously, having a file named `TestFile.cs` would not be shown if
`test` was typed in the search box.
This now changes the matching function to be case-insensitive (without
affecting the UI).

The matching function, `strSubMatch`, is only used for this feature (it
has been introduced by ), meaning that this PR does not affect the
behaviour of any unrelated functionality of Gitea.
This commit is contained in:
HeySora 2022-09-28 00:55:15 +02:00 committed by GitHub
parent 8cd3237a9e
commit dabc06d13b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 13 deletions

@ -64,9 +64,9 @@ export function parseIssueHref(href) {
export function strSubMatch(full, sub) {
const res = [''];
let i = 0, j = 0;
while (i < sub.length && j < full.length) {
while (j < full.length) {
if (sub[i] === full[j]) {
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++;
@ -75,8 +75,6 @@ export function strSubMatch(full, sub) {
if (res.length % 2 === 0) res.push('');
res[res.length - 1] += full[j];
j++;
break;
}
}
}
if (i !== sub.length) {

@ -95,6 +95,9 @@ test('strSubMatch', () => {
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']);
});