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 1/2] gitweb: rename parse_date() to format_date()
Date: Sat, 19 Mar 2011 11:33:57 +0100 [thread overview]
Message-ID: <201103191134.00098.jnareb@gmail.com> (raw)
In-Reply-To: <ab54ba2199cc7487e383a31e3aa65885@localhost>
On Sat, 19 Mar 2011, Kevin Cernekee wrote:
> One might reasonably expect a function named parse_date() to be used
> for something along these lines:
>
> $unix_time_t = parse_date("2011-03-19");
First, one would expect parse_date() to return either list of year,
month, etc., e.g. [2011, 3, 19, ...], or a hash with named
date fragments, e.g. {'year' => 2011, 'month' => 3, ...}.
Almost all other parse_* subroutines in gitweb (parse_commit, parse_tag,
parse_difftree_raw_line, parse_ls_tree_line, with the sole exception of
parse_from_to_diffinfo with perhaps a bit misleading name) return hash
of parsed and pre-formatted fragments.
So if parse_date(1300505805) returned
(
'hour' => 3,
'minute' => 36,
...
)
_without_ the 'rfc2822', 'mday-time' (unused), 'iso-8601', 'iso-tz',
it would be not misnamed parse_*.
Second, it is _date_ because it parses / processes dates in git internal
format. Perhaps it should be called *_raw_date, or *_git_date, or *_epoch,
or *_timestamp and not *_date.
> But instead, gitweb's parse_date works more like:
>
> &parse_date(1300505805) = {
Note: parse_date takes second argument, which is numeric timezone (defaults
to '-0000'), so one usually uses
parse_date(1300505805, '+0200')
> 'hour' => 3,
> 'minute' => 36,
> ...
> 'rfc2822' => 'Sat, 19 Mar 2011 03:36:45 +0000',
> ...
> }
What I would like to see is to split parsing date from generating formatted
dates into e.g. parse_date and formatted_date, and replace calls to parse_date
with calls to formatted_date (which uses parse_date internally).
> Rename the function [to format_date] to improve clarity.
> No change to functionality.
But name *format_date* is _not_ a good name. All other format_*
subroutines in gitweb return _formatted string_, not a hash which contains
many formatted strings.
It is hard to come up with really good name, but perhaps one from the ;ist
below would be good idea:
- formatted_date
- process_date, process_raw_date, process_git_date
- process_epoch, process_timestamp
- date_formats
- from_epoch, date_from_epoch
Any other ideas?
> Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
> ---
> gitweb/gitweb.perl | 18 +++++++++---------
> 1 files changed, 9 insertions(+), 9 deletions(-)
> @@ -4906,7 +4906,7 @@ sub git_log_body {
> next if !%co;
> my $commit = $co{'id'};
> my $ref = format_ref_marker($refs, $commit);
> - my %ad = parse_date($co{'author_epoch'});
> + my %ad = format_date($co{'author_epoch'});
> git_print_header_div('commit',
> "<span class=\"age\">$co{'age_string'}</span>" .
> esc_html($co{'title'}) . $ref,
Hmm, we should probably fix it so it reads
- my %ad = parse_date($co{'author_epoch'});
+ my %ad = formatted_date($co{'author_epoch'}, $co{'author_tz'});
Especially when preparing for 'localtime' feature.
> @@ -7064,7 +7064,7 @@ sub git_feed {
> if (defined($commitlist[0])) {
> %latest_commit = %{$commitlist[0]};
> my $latest_epoch = $latest_commit{'committer_epoch'};
> - %latest_date = parse_date($latest_epoch);
> + %latest_date = format_date($latest_epoch);
> my $if_modified = $cgi->http('IF_MODIFIED_SINCE');
> if (defined $if_modified) {
> my $since;
Similarly here.
> @@ -7195,7 +7195,7 @@ XML
> if (($i >= 20) && ((time - $co{'author_epoch'}) > 48*60*60)) {
> last;
> }
> - my %cd = parse_date($co{'author_epoch'});
> + my %cd = format_date($co{'author_epoch'});
>
> # get list of changed files
> open my $fd, "-|", git_cmd(), "diff-tree", '-r', @diff_opts,
Same here.
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2011-03-19 10:31 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
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 ` Jakub Narebski [this message]
2011-03-19 11:50 ` [PATCH 1/2] gitweb: rename parse_date() to format_date() 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=201103191134.00098.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).