mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Ignore line anchor links with leading zeroes (#21728)
Fixes: https://github.com/go-gitea/gitea/issues/21722 Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		| @@ -5,6 +5,8 @@ import {createTippy, showTemporaryTooltip} from '../modules/tippy.js'; | ||||
| import {copyToClipboard} from './clipboard.js'; | ||||
|  | ||||
| const {i18n} = window.config; | ||||
| export const singleAnchorRegex = /^#(L|n)([1-9][0-9]*)$/; | ||||
| export const rangeAnchorRegex = /^#(L[1-9][0-9]*)-(L[1-9][0-9]*)$/; | ||||
|  | ||||
| function changeHash(hash) { | ||||
|   if (window.history.pushState) { | ||||
| @@ -149,7 +151,7 @@ export function initRepoCodeView() { | ||||
|     }); | ||||
|  | ||||
|     $(window).on('hashchange', () => { | ||||
|       let m = window.location.hash.match(/^#(L\d+)-(L\d+)$/); | ||||
|       let m = window.location.hash.match(rangeAnchorRegex); | ||||
|       let $list; | ||||
|       if ($('div.blame').length) { | ||||
|         $list = $('.code-view td.lines-code.blame-code'); | ||||
| @@ -159,27 +161,31 @@ export function initRepoCodeView() { | ||||
|       let $first; | ||||
|       if (m) { | ||||
|         $first = $list.filter(`[rel=${m[1]}]`); | ||||
|         selectRange($list, $first, $list.filter(`[rel=${m[2]}]`)); | ||||
|         if ($first.length) { | ||||
|           selectRange($list, $first, $list.filter(`[rel=${m[2]}]`)); | ||||
|  | ||||
|         // show code view menu marker (don't show in blame page) | ||||
|         if ($('div.blame').length === 0) { | ||||
|           showLineButton(); | ||||
|           // show code view menu marker (don't show in blame page) | ||||
|           if ($('div.blame').length === 0) { | ||||
|             showLineButton(); | ||||
|           } | ||||
|  | ||||
|           $('html, body').scrollTop($first.offset().top - 200); | ||||
|           return; | ||||
|         } | ||||
|  | ||||
|         $('html, body').scrollTop($first.offset().top - 200); | ||||
|         return; | ||||
|       } | ||||
|       m = window.location.hash.match(/^#(L|n)(\d+)$/); | ||||
|       m = window.location.hash.match(singleAnchorRegex); | ||||
|       if (m) { | ||||
|         $first = $list.filter(`[rel=L${m[2]}]`); | ||||
|         selectRange($list, $first); | ||||
|         if ($first.length) { | ||||
|           selectRange($list, $first); | ||||
|  | ||||
|         // show code view menu marker (don't show in blame page) | ||||
|         if ($('div.blame').length === 0) { | ||||
|           showLineButton(); | ||||
|           // show code view menu marker (don't show in blame page) | ||||
|           if ($('div.blame').length === 0) { | ||||
|             showLineButton(); | ||||
|           } | ||||
|  | ||||
|           $('html, body').scrollTop($first.offset().top - 200); | ||||
|         } | ||||
|  | ||||
|         $('html, body').scrollTop($first.offset().top - 200); | ||||
|       } | ||||
|     }).trigger('hashchange'); | ||||
|   } | ||||
|   | ||||
							
								
								
									
										18
									
								
								web_src/js/features/repo-code.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								web_src/js/features/repo-code.test.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| import {test, expect} from 'vitest'; | ||||
| import {singleAnchorRegex, rangeAnchorRegex} from './repo-code.js'; | ||||
|  | ||||
| test('singleAnchorRegex', () => { | ||||
|   expect(singleAnchorRegex.test('#L0')).toEqual(false); | ||||
|   expect(singleAnchorRegex.test('#L1')).toEqual(true); | ||||
|   expect(singleAnchorRegex.test('#L01')).toEqual(false); | ||||
|   expect(singleAnchorRegex.test('#n0')).toEqual(false); | ||||
|   expect(singleAnchorRegex.test('#n1')).toEqual(true); | ||||
|   expect(singleAnchorRegex.test('#n01')).toEqual(false); | ||||
| }); | ||||
|  | ||||
| test('rangeAnchorRegex', () => { | ||||
|   expect(rangeAnchorRegex.test('#L0-L10')).toEqual(false); | ||||
|   expect(rangeAnchorRegex.test('#L1-L10')).toEqual(true); | ||||
|   expect(rangeAnchorRegex.test('#L01-L10')).toEqual(false); | ||||
|   expect(rangeAnchorRegex.test('#L1-L01')).toEqual(false); | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user
	 silverwind
					silverwind