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; |   return filterResult; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | export function escapePath(s) { | ||||||
|  |   return s.split('/').map(encodeURIComponent).join('/'); | ||||||
|  | } | ||||||
|  |  | ||||||
| function filterRepoFiles(filter) { | function filterRepoFiles(filter) { | ||||||
|   const treeLink = $repoFindFileInput.attr('data-url-tree-link'); |   const treeLink = $repoFindFileInput.attr('data-url-tree-link'); | ||||||
|   $repoFindFileTableBody.empty(); |   $repoFindFileTableBody.empty(); | ||||||
| @@ -83,7 +87,7 @@ function filterRepoFiles(filter) { | |||||||
|   for (const r of filterResult) { |   for (const r of filterResult) { | ||||||
|     const $row = $(tmplRow); |     const $row = $(tmplRow); | ||||||
|     const $a = $row.find('a'); |     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'); |     const $octiconFile = $(svg('octicon-file')).addClass('mr-3'); | ||||||
|     $a.append($octiconFile); |     $a.append($octiconFile); | ||||||
|     // if the target file path is "abc/xyz", to search "bx", then the matchResult is ['a', 'b', 'c/', 'x', 'yz'] |     // 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 {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', () => { | describe('Repo Find Files', () => { | ||||||
|   test('strSubMatch', () => { |   test('strSubMatch', () => { | ||||||
| @@ -32,4 +32,9 @@ describe('Repo Find Files', () => { | |||||||
|     expect(res).toHaveLength(2); |     expect(res).toHaveLength(2); | ||||||
|     expect(res[0].matchResult).toEqual(['', 'word', '.txt']); |     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