mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	| @@ -72,6 +72,10 @@ export function filterRepoFilesWeighted(files, filter) { | ||||
|   return filterResult; | ||||
| } | ||||
|  | ||||
| export function escapePath(s) { | ||||
|   return s.split('/').map(encodeURIComponent).join('/'); | ||||
| } | ||||
|  | ||||
| function filterRepoFiles(filter) { | ||||
|   const treeLink = $repoFindFileInput.attr('data-url-tree-link'); | ||||
|   $repoFindFileTableBody.empty(); | ||||
| @@ -83,7 +87,7 @@ function filterRepoFiles(filter) { | ||||
|   for (const r of filterResult) { | ||||
|     const $row = $(tmplRow); | ||||
|     const $a = $row.find('a'); | ||||
|     $a.attr('href', `${treeLink}/${r.matchResult.join('')}`); | ||||
|     $a.attr('href', `${treeLink}/${escapePath(r.matchResult.join(''))}`); | ||||
|     const $octiconFile = $(svg('octicon-file')).addClass('mr-3'); | ||||
|     $a.append($octiconFile); | ||||
|     // if the target file path is "abc/xyz", to search "bx", then the matchResult is ['a', 'b', 'c/', 'x', 'yz'] | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| import {describe, expect, test} from 'vitest'; | ||||
| import {strSubMatch, calcMatchedWeight, filterRepoFilesWeighted} from './repo-findfile.js'; | ||||
| import {strSubMatch, calcMatchedWeight, filterRepoFilesWeighted, escapePath} from './repo-findfile.js'; | ||||
|  | ||||
| describe('Repo Find Files', () => { | ||||
|   test('strSubMatch', () => { | ||||
| @@ -32,4 +32,9 @@ describe('Repo Find Files', () => { | ||||
|     expect(res).toHaveLength(2); | ||||
|     expect(res[0].matchResult).toEqual(['', 'word', '.txt']); | ||||
|   }); | ||||
|  | ||||
|   test('escapePath', () => { | ||||
|     expect(escapePath('a/b/c')).toEqual('a/b/c'); | ||||
|     expect(escapePath('a/b/ c')).toEqual('a/b/%20c'); | ||||
|   }); | ||||
| }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user