git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: Kevin Cernekee <cernekee@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: [PATCH v4 2/2] gitweb: introduce localtime feature
Date: Sat, 19 Mar 2011 16:18:26 +0100	[thread overview]
Message-ID: <201103191618.29826.jnareb@gmail.com> (raw)
In-Reply-To: <dab08d0ff27b0f571a17ed4f1ab0f39b@localhost>

On Sat, 19 Mar 2011, Kevin Cernekee wrote:

> With this feature enabled, all timestamps are shown in the local
> timezone instead of GMT.  The timezone is taken from the appropriate
> timezone string stored in the commit object.

[...]
> In the case of 'commit', 'commitdiff' and 'tag' views, gitweb used to
> print both GMT time and time in timezone of author/tagger/committer:
> 
>    Fri, 18 Mar 2011 01:28:57 +0000 (18:28 -0700)
> 
> With localtime enabled, the times will be swapped:
> 
>    Thu, 17 Mar 2011 18:28:57 -0700 (01:28 +0000)

First, currently the localtime part is needed only to have "atnight"
warning.  I wonder if with 'localtime' feature enabled gitweb should
show GMT time, or is it not necessary.

With 'localtime' it could simply be

     Thu, 17 Mar 2011 18:28:57 -0700

either marked with "atnight" as whole, or only time (see below).

> Local times between 00:00 and 05:59, inclusive, will still be printed
> in red ("atnight" style) in these views.

Second, from above description it is not clear which part of date is
marked with "atnight" style when 'localtime' feature is enabled.

Is the whole localtime part marked, and GMT left not marked:

     Thu, 17 Mar 2011 18:28:57 -0700 (01:28 +0000)
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Or perhaps only the local _time_ is marked with "atnight" style:

     Thu, 17 Mar 2011 18:28:57 -0700 (01:28 +0000)
                      ^^^^^^^^

Or perhaps whole date now uses "atnight" style:

     Thu, 17 Mar 2011 18:28:57 -0700 (01:28 +0000)
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


[...]
> @@ -3928,22 +3945,48 @@ sub git_print_section {
>  	print $cgi->end_div;
>  }
>  
> -sub print_local_time {
> -	print format_local_time(@_);
> -}
> -
> -sub format_local_time {
> -	my $localtime = '';
> -	my %date = @_;
> -	if ($date{'hour_local'} < 6) {
> -		$localtime .= sprintf(" (<span class=\"atnight\">%02d:%02d</span> %s)",
> -			$date{'hour_local'}, $date{'minute_local'}, $date{'tz_local'});
> +# Returns an RFC 2822 timestamp string, which may contain HTML.

I'm not sure if we need to write about it being RFC2822-like format;
it is just implementation detail.

Perhaps

  +# Returns formatted date and time, outputs HTML.

It is important if it is HTML or not, to know if it needs to be esc_html
or not.

> +# If $use_localtime is 0, don't do anything special.
> +# If $use_localtime is 1, add an alternate HH:MM timestamp in parentheses at
> +# the end.

See comment below.

>             If $feature{'localtime'} is enabled this looks like: 
> +#   Thu, 17 Mar 2011 18:28:57 -0700 (01:28 +0000)
> +# Otherwise, it looks like:
> +#   Fri, 18 Mar 2011 01:28:57 +0000 (18:28 -0700)
> +# If $use_localtime is 1, this will also apply the "atnight" style to
> +# local times between 00:00 and 05:59.

I would really prefer to split this patch in two: first refactor 
date-printing code, introducing and using timestamp_html subroutine,
with no changes in output, and leave introducing 'localtime' feature
for a second patch.

> +sub timestamp_html {
> +	my %date = %{$_[0]};
> +	my $use_localtime = $_[1];

Why not use

   	my ($date, $use_localtime) = @_;

and $date->{'rfc2822_local'} instead of $date{'rfc2822_local'}?


Also with current code the calling convention for timestamp_html (or 
format_timestamp_html, or format_date_html) looks like this:

  print     " [" . timestamp_html(\%ad, 0) . "] "

or

  print     timestamp_html(\%wd, 1)

This would require anyone who stumbles upon on a calling site to have
to refer to definition of this function to understand it.

In many other places we use "named parameters" for such boolean flags;
then the calling convention could be

  timestamp_html(\%date)

or

  timestamp_html(\%date, -long=>1)

(or -localtime=>1, or -atnight=>1, etc.).  

We can also/instead provide timestamp_short_html and timestamp_long_html
so one can write

  timestamp_short_html(%date)

and

  timestamp_long_html(%date)

-- 
Jakub Narebski
Poland

  reply	other threads:[~2011-03-19 15:18 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-19  5:39 [PATCH 1/2] gitweb: rename parse_date() to format_date() Kevin Cernekee
2011-03-19  5:39 ` [PATCH v4 2/2] gitweb: introduce localtime feature Kevin Cernekee
2011-03-19 15:18   ` Jakub Narebski [this message]
2011-03-19 17:56   ` Junio C Hamano
2011-03-19 19:49     ` Kevin Cernekee
2011-03-19 21:09       ` Jakub Narebski
2011-03-19 21:22         ` Kevin Cernekee
2011-03-19 21:41           ` Jakub Narebski
2011-03-20 22:38   ` J.H.
2011-03-20 23:44     ` Kevin Cernekee
2011-03-21  0:20     ` Jakub Narebski
2011-03-21  2:35       ` J.H.
2011-03-21 16:01         ` Jakub Narebski
2011-03-21 18:39           ` Piotr Krukowiecki
2011-03-21 18:39           ` J.H.
2011-03-21 22:20             ` Jakub Narebski
2011-03-24  0:08   ` [PATCH 0/1] Gitweb: Change timezone John 'Warthog9' Hawley
2011-03-24  0:08   ` [PATCH 1/1] gitweb: javascript ability to adjust time based on timezone John 'Warthog9' Hawley
2011-03-24  5:23     ` Kevin Cernekee
2011-03-24  7:21       ` J.H.
2011-03-24 21:23         ` Jakub Narebski
2011-03-24 20:19       ` Jakub Narebski
2011-03-24 22:00         ` Kevin Cernekee
2011-03-24 22:29           ` J.H.
2011-03-24 23:04         ` J.H.
2011-03-24 23:36           ` Jakub Narebski
2011-03-24 15:17     ` Jakub Narebski
2011-03-25 15:20       ` [PATCH (BUGFIX)] gitweb: Fix handling of fractional timezones in parse_date Jakub Narebski
2011-03-25 16:26         ` Kevin Cernekee
2011-03-25 16:50           ` [PATCH (BUGFIX) v2] " Jakub Narebski
2011-03-25 17:15           ` [PATCH (BUGFIX)] " Junio C Hamano
2011-03-25 17:47             ` Jakub Narebski
2011-03-25 19:20             ` [PATCH (BUGFIX) v3] " Jakub Narebski
2011-03-19 10:33 ` [PATCH 1/2] gitweb: rename parse_date() to format_date() Jakub Narebski
2011-03-19 11:50   ` Jon Seymour
2011-03-19 18:00 ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201103191618.29826.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=cernekee@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).