mirror of https://github.com/apache/lucene.git
LUCENE-1433: improvements to changes.html generation
git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@722329 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e3d5b53e53
commit
eb881d5f3b
|
@ -254,18 +254,52 @@ print<<"__HTML_HEADER__";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var newerRegex = new RegExp("^(?:trunk|2\\\\.4\\\\.0)");
|
||||||
|
function isOlder(listId) {
|
||||||
|
return ! newerRegex.test(listId);
|
||||||
|
}
|
||||||
|
|
||||||
|
function escapeMeta(s) {
|
||||||
|
return s.replace(/(?=[.*+?^\${}()|[\\]\\/\\\\])/g, '\\\\');
|
||||||
|
}
|
||||||
|
|
||||||
|
function shouldExpand(currentList, currentAnchor, listId) {
|
||||||
|
var listName = listId.substring(0, listId.length - 5);
|
||||||
|
var parentRegex = new RegExp("^" + escapeMeta(listName) + "\\\\.");
|
||||||
|
return currentList == listId
|
||||||
|
|| (isOlder(currentAnchor) && listId == 'older.list')
|
||||||
|
|| parentRegex.test(currentAnchor);
|
||||||
|
}
|
||||||
|
|
||||||
function collapse() {
|
function collapse() {
|
||||||
/* Collapse all but the first and second releases. */
|
/* Collapse all but the first and second releases. */
|
||||||
var unorderedLists = document.getElementsByTagName("ul");
|
var unorderedLists = document.getElementsByTagName("ul");
|
||||||
|
var currentAnchor = location.hash.substring(1);
|
||||||
|
var currentList = currentAnchor + ".list";
|
||||||
|
|
||||||
for (var i = 0; i < unorderedLists.length; i++) {
|
for (var i = 0; i < unorderedLists.length; i++) {
|
||||||
var list = unorderedLists[i];
|
var list = unorderedLists[i];
|
||||||
if (list.id != '$first_relid.list' && list.id != '$second_relid.list') {
|
/* Collapse the current item, unless either the current item is one of
|
||||||
|
* the first two releases, or the current URL has a fragment and the
|
||||||
|
* fragment refers to the current item or one of its ancestors.
|
||||||
|
*/
|
||||||
|
if (list.id != '$first_relid.list'
|
||||||
|
&& list.id != '$second_relid.list'
|
||||||
|
&& (currentAnchor == ''
|
||||||
|
|| ! shouldExpand(currentList, currentAnchor, list.id))) {
|
||||||
list.style.display = "none";
|
list.style.display = "none";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var orderedLists = document.getElementsByTagName("ol");
|
var orderedLists = document.getElementsByTagName("ol");
|
||||||
for (var i = 0; i < orderedLists.length; i++) {
|
for (var i = 0; i < orderedLists.length; i++) {
|
||||||
orderedLists[i].style.display = "none";
|
var list = orderedLists[i];
|
||||||
|
/* Collapse the current item, unless the current URL has a fragment
|
||||||
|
* and the fragment refers to the current item or one of its ancestors.
|
||||||
|
*/
|
||||||
|
if (currentAnchor == ''
|
||||||
|
|| ! shouldExpand(currentList, currentAnchor, list.id)) {
|
||||||
|
list.style.display = "none";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* Add "Click to collapse/expand" tooltips to the release/section headings */
|
/* Add "Click to collapse/expand" tooltips to the release/section headings */
|
||||||
var anchors = document.getElementsByTagName("a");
|
var anchors = document.getElementsByTagName("a");
|
||||||
|
@ -320,7 +354,7 @@ for my $rel (@releases) {
|
||||||
($release, $reldate, $relinfo, $sections) = @$rel;
|
($release, $reldate, $relinfo, $sections) = @$rel;
|
||||||
|
|
||||||
# The first section heading is undefined for the older sectionless releases
|
# The first section heading is undefined for the older sectionless releases
|
||||||
my $has_release_sections = $sections->[0][0];
|
my $has_release_sections = has_release_sections($sections);
|
||||||
|
|
||||||
(my $relid = lc($release)) =~ s/\s+/_/g;
|
(my $relid = lc($release)) =~ s/\s+/_/g;
|
||||||
print "<$header><a id=\"$relid\" href=\"javascript:toggleList('$relid')\">";
|
print "<$header><a id=\"$relid\" href=\"javascript:toggleList('$relid')\">";
|
||||||
|
@ -339,12 +373,13 @@ for my $rel (@releases) {
|
||||||
print " <li><a id=\"$relid.$sectid\"",
|
print " <li><a id=\"$relid.$sectid\"",
|
||||||
" href=\"javascript:toggleList('$relid.$sectid')\">",
|
" href=\"javascript:toggleList('$relid.$sectid')\">",
|
||||||
($heading || ''), "</a> $numItemsStr\n"
|
($heading || ''), "</a> $numItemsStr\n"
|
||||||
if ($has_release_sections);
|
if ($has_release_sections and $heading);
|
||||||
|
|
||||||
my $list_type = $items->[0] || '';
|
my $list_type = $items->[0] || '';
|
||||||
my $list = ($has_release_sections || $list_type eq 'numbered' ? 'ol' : 'ul');
|
my $list = ($has_release_sections || $list_type eq 'numbered' ? 'ol' : 'ul');
|
||||||
my $listid = $sectid ? "$relid.$sectid" : $relid;
|
my $listid = $sectid ? "$relid.$sectid" : $relid;
|
||||||
print " <$list id=\"$listid.list\">\n";
|
print " <$list id=\"$listid.list\">\n"
|
||||||
|
unless ($has_release_sections and not $heading);
|
||||||
|
|
||||||
for my $itemnum (1..$#{$items}) {
|
for my $itemnum (1..$#{$items}) {
|
||||||
my $item = $items->[$itemnum];
|
my $item = $items->[$itemnum];
|
||||||
|
@ -362,27 +397,36 @@ for my $rel (@releases) {
|
||||||
#
|
#
|
||||||
# Rule of thumb: if a trailing parenthesized expression with a following
|
# Rule of thumb: if a trailing parenthesized expression with a following
|
||||||
# period does not contain "LUCENE-XXX", and it either has three or
|
# period does not contain "LUCENE-XXX", and it either has three or
|
||||||
# fewer words or it includes the word "via", then it is considered to
|
# fewer words or it includes the word "via" or the phrase "updates from",
|
||||||
# be an attribution.
|
# then it is considered to be an attribution.
|
||||||
|
|
||||||
$item =~ s{(\s*(\((?!see #|use the bug number)[^)"]+?\))\.\s*)$}
|
$item =~ s{(\s*(\((?!see \#|use the bug number)[^)"]+?\)))
|
||||||
|
((?:\.|(?i:\.?\s*Issue\s+\d{3,}|LUCENE-\d+)\.?)\s*)$}
|
||||||
{
|
{
|
||||||
my $subst = $1; # default: no change
|
my $subst = $1; # default: no change
|
||||||
my $parenthetical = $2;
|
my $parenthetical = $2;
|
||||||
|
my $trailing_period_and_or_issue = $3;
|
||||||
if ($parenthetical !~ /LUCENE-\d+/) {
|
if ($parenthetical !~ /LUCENE-\d+/) {
|
||||||
my ($no_parens) = $parenthetical =~ /^\((.*)\)$/s;
|
my ($no_parens) = $parenthetical =~ /^\((.*)\)$/s;
|
||||||
my @words = grep {/\S/} split /\s+/, $no_parens;
|
my @words = grep {/\S/} split /\s+/, $no_parens;
|
||||||
if ($no_parens =~ /\svia\s/i || scalar(@words) <= 3) {
|
if ($no_parens =~ /\b(?:via|updates\s+from)\b/i || scalar(@words) <= 3) {
|
||||||
$subst = "<br /><span class=\"attrib\">$parenthetical</span>";
|
$subst = "<br /><span class=\"attrib\">$parenthetical</span>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$subst
|
$subst . $trailing_period_and_or_issue;
|
||||||
}e;
|
}ex;
|
||||||
}
|
}
|
||||||
$item =~ s:\n{2,}:\n<p/>\n:g; # Keep paragraph breaks
|
$item =~ s:\n{2,}:\n<p/>\n:g; # Keep paragraph breaks
|
||||||
$item =~ s{(?:${jira_url_prefix})?(LUCENE-\d+)} # Link to JIRA
|
# Link LUCENE-XXX, SOLR-XXX and INFRA-XXX to JIRA
|
||||||
|
$item =~ s{(?:${jira_url_prefix})?((?:LUCENE|SOLR|INFRA)-\d+)}
|
||||||
{<a href="${jira_url_prefix}$1">$1</a>}g;
|
{<a href="${jira_url_prefix}$1">$1</a>}g;
|
||||||
$item =~ s~((?i:bug|patch)\s*\#?\s*(\d+)) # Find Bugzilla issues
|
$item =~ s{(issue\s*\#?\s*(\d{3,}))} # Link Issue XXX to JIRA
|
||||||
|
{<a href="${jira_url_prefix}LUCENE-$2">$1</a>}gi;
|
||||||
|
# Link Lucene XXX, SOLR XXX and INFRA XXX to JIRA
|
||||||
|
$item =~ s{((LUCENE|SOLR|INFRA)\s+(\d{3,}))}
|
||||||
|
{<a href="${jira_url_prefix}\U$2\E-$3">$1</a>}gi;
|
||||||
|
# Find single Bugzilla issues
|
||||||
|
$item =~ s~((?i:bug|patch|issue)\s*\#?\s*(\d+))
|
||||||
~ my $issue = $1;
|
~ my $issue = $1;
|
||||||
my $jira_issue_num = $bugzilla_jira_map{$2}; # Link to JIRA copies
|
my $jira_issue_num = $bugzilla_jira_map{$2}; # Link to JIRA copies
|
||||||
$issue = qq!<a href="${jira_url_prefix}LUCENE-$jira_issue_num">!
|
$issue = qq!<a href="${jira_url_prefix}LUCENE-$jira_issue_num">!
|
||||||
|
@ -390,9 +434,29 @@ for my $rel (@releases) {
|
||||||
if (defined($jira_issue_num));
|
if (defined($jira_issue_num));
|
||||||
$issue;
|
$issue;
|
||||||
~gex;
|
~gex;
|
||||||
|
# Find multiple Bugzilla issues
|
||||||
|
$item =~ s~(?<=(?i:bugs))(\s*)(\d+)(\s*(?i:\&|and)\s*)(\d+)
|
||||||
|
~ my $leading_whitespace = $1;
|
||||||
|
my $issue_num_1 = $2;
|
||||||
|
my $interlude = $3;
|
||||||
|
my $issue_num_2 = $4;
|
||||||
|
# Link to JIRA copies
|
||||||
|
my $jira_issue_1 = $bugzilla_jira_map{$issue_num_1};
|
||||||
|
my $issue1
|
||||||
|
= qq!<a href="${jira_url_prefix}LUCENE-$jira_issue_1">!
|
||||||
|
. qq!$issue_num_1 [LUCENE-$jira_issue_1]</a>!
|
||||||
|
if (defined($jira_issue_1));
|
||||||
|
my $jira_issue_2 = $bugzilla_jira_map{$issue_num_2};
|
||||||
|
my $issue2
|
||||||
|
= qq!<a href="${jira_url_prefix}LUCENE-$jira_issue_2">!
|
||||||
|
. qq!$issue_num_2 [LUCENE-$jira_issue_2]</a>!
|
||||||
|
if (defined($jira_issue_2));
|
||||||
|
$leading_whitespace . $issue1 . $interlude . $issue2;
|
||||||
|
~gex;
|
||||||
|
|
||||||
print " <li>$item</li>\n";
|
print " <li>$item</li>\n";
|
||||||
}
|
}
|
||||||
print " </$list>\n";
|
print " </$list>\n" unless ($has_release_sections and not $heading);
|
||||||
print " </li>\n" if ($has_release_sections);
|
print " </li>\n" if ($has_release_sections);
|
||||||
}
|
}
|
||||||
print "</ul>\n" if ($has_release_sections);
|
print "</ul>\n" if ($has_release_sections);
|
||||||
|
@ -401,6 +465,31 @@ print "</ul>\n" if ($relcnt > 3);
|
||||||
print "</body>\n</html>\n";
|
print "</body>\n</html>\n";
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Subroutine: has_release_sections
|
||||||
|
#
|
||||||
|
# Takes one parameter:
|
||||||
|
#
|
||||||
|
# - The $sections array reference
|
||||||
|
#
|
||||||
|
# Returns one scalar:
|
||||||
|
#
|
||||||
|
# - A boolean indicating whether there are release sections
|
||||||
|
#
|
||||||
|
sub has_release_sections {
|
||||||
|
my $sections = shift;
|
||||||
|
my $has_release_sections = 0;
|
||||||
|
my $first_titled_section_num = -1;
|
||||||
|
for my $section_num (0 .. $#{$sections}) {
|
||||||
|
if ($sections->[$section_num][0]) {
|
||||||
|
$has_release_sections = 1;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $has_release_sections;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Subroutine: get_list_type
|
# Subroutine: get_list_type
|
||||||
#
|
#
|
||||||
|
@ -520,7 +609,9 @@ sub setup_release_dates {
|
||||||
'1.4.3' => '2004-12-07', '1.9 RC1' => '2006-02-21',
|
'1.4.3' => '2004-12-07', '1.9 RC1' => '2006-02-21',
|
||||||
'1.9 final' => '2006-02-27', '1.9.1' => '2006-03-02',
|
'1.9 final' => '2006-02-27', '1.9.1' => '2006-03-02',
|
||||||
'2.0.0' => '2006-05-26', '2.1.0' => '2007-02-14',
|
'2.0.0' => '2006-05-26', '2.1.0' => '2007-02-14',
|
||||||
'2.2.0' => '2007-06-19', '2.3.0' => '2008-01-23' );
|
'2.2.0' => '2007-06-19', '2.3.0' => '2008-01-21',
|
||||||
|
'2.3.1' => '2008-02-22', '2.3.2' => '2008-05-05',
|
||||||
|
'2.4.0' => '2008-10-06' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue