Re: [PATCH] gitweb: Add js=1 before an URI fragment to fix line number links
- From
- Peter Stuge <peter@stuge.se>
- Date
- Sep 26, 2011, 19:46 UTC
- Message-ID
- <20110926194639.25339.qmail@stuge.se>
- In-Reply-To
- <7v62kf2jf4.fsf@alter.siamese.dyndns.org>
Junio C Hamano wrote:
> > Signed-off-by: Peter Stuge <peter@stuge.se> > > Care to elaborate a bit more please?
Okey. I thought subject together with change would be clear enough. :)
> Explanation of what you are fixing is totally lacking.
The subject sums it up, if briefly.
> What happens with the current code, why it is wrong, and how the > updated pattern improves the result in what way?
Current code generates links to line numbers like ../file.c#l1234;js=1
It is wrong because a URI fragment always goes at the end.
The updated pattern improves this by treating # like end of string, to detect js=1 also before # and not only at end of string.
The updated code improves this by injecting [?;]js=1 before # if one exists, or at end of string (like before) otherwise.
> > -var jsExceptionsRe = /[;?]js=[01]$/; > > +var jsExceptionsRe = /[;?]js=[01](#.*)?$/;
..
Show 6 quoted lines
> > - if (!jsExceptionsRe.test(link)) { // =~ /[;?]js=[01]$/;
> > - link.href +=
> > - (link.href.indexOf('?') === -1 ? '?' : ';') + 'js=1';
> > + if (!jsExceptionsRe.test(link)) { // =~ /[;?]js=[01](#.*)?$/;
> > + link.href = link.href.replace(/(#|$)/,
> > + (link.href.indexOf('?') === -1 ? '?' : ';') + 'js=1$1');To test how this works you can try it on
http://git.libusb.org/?p=libusb.git;a=blob;f=COPYING
where the change is in production. Compare the line number links with those generated by another gitweb with javascript-actions enabled.
//Peter