summary refs log tree commit diff
path: root/bin/bibsort.pl
blob: f87f066f92688e89520275fd528e87ae7ac51ff3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env perl
use strict;
use warnings;

while (<>) {
	print;
	last if /^[.]Sh STANDARDS$/;
}

my ($ref, @refs);
while (<>) {
	next if /^[.](Bl|It|$)/;
	last if /^[.]El$/;
	if (/^[.]Rs$/) {
		$ref = {};
	} elsif (/^[.]%(.) (.*)/) {
		$ref->{$1} = [] unless $ref->{$1};
		push @{$ref->{$1}}, $2;
	} elsif (/^[.]Re$/) {
		push @refs, $ref;
	} else {
		print;
	}
}

sub byLast {
	my ($af, $al) = split /\s(\S+)(,.*)?$/, $a;
	my ($bf, $bl) = split /\s(\S+)(,.*)?$/, $b;
	$al cmp $bl || $af cmp $bf;
}

foreach $ref (@refs) {
	@{$ref->{A}} = sort byLast @{$ref->{A}};
	@{$ref->{Q}} = sort @{$ref->{Q}} if $ref->{Q};
	next unless $ref->{N};
	if ($ref->{N}[0] =~ /RFC/) {
		$ref->{R} = $ref->{N};
		delete $ref->{N};
	}
}

sub byAuthor {
	local ($a, $b) = ($a->{A}[0], $b->{A}[0]);
	byLast();
}

{
	local ($,, $\) = (' ', "\n");
	print '.Bl', '-item';
	foreach $ref (sort byAuthor @refs) {
		print '.It';
		print '.Rs';
		foreach my $key (qw(A T B I J R N V U P Q C D O)) {
			next unless $ref->{$key};
			foreach (@{$ref->{$key}}) {
				print ".%${key}", $_;
			}
		}
		print '.Re';
	}
	print '.El';
}

while (<>) {
	print;
}
mp;follow=1'>Add cache-root option to /cgit/rcLars Hjemli 2006-12-16Add argument parsing + switch for uncached operationLars Hjemli 2006-12-16Add head comment to shared.cLars Hjemli 2006-12-16Add head comment to ui-commit.cLars Hjemli 2006-12-16gitweb ripoff: set tr:hover to highligt current rowLars Hjemli 2006-12-16Make repo header a link to summary pageLars Hjemli 2006-12-16Move cgit_print_date into ui-shared, reuse in ui-summaryLars Hjemli 2006-12-16Add ui-commit.c + misc ui cleanupsLars Hjemli 2006-12-15Add a common commit parserLars Hjemli 2006-12-14Add simple pager to log pageLars Hjemli 2006-12-13Add separate makefile-rule to clear current cacheLars Hjemli 2006-12-13Remove implementation details from READMELars Hjemli 2006-12-13Small layout adjustments to summary and blob viewLars Hjemli 2006-12-13Add display of tree content w/ui-tree.cLars Hjemli 2006-12-12cache_lock: do xstrdup/free on lockfileLars Hjemli 2006-12-11Don't truncate valid cachefilesLars Hjemli 2006-12-11Move global variables + callback functions into shared.cLars Hjemli 2006-12-11Move functions for generic object output into ui-view.cLars Hjemli 2006-12-11Move log-functions into ui-log.cLars Hjemli 2006-12-11Move repo summary functions into ui-summary.cLars Hjemli 2006-12-11Move functions for repolist output into ui-repolist.cLars Hjemli 2006-12-11Move common output-functions into ui-shared.cLars Hjemli 2006-12-11Rename config.c to parsing.c + move cgit_parse_query from cgit.c to parsing.cLars Hjemli 2006-12-11Avoid infinite loops in caching layerLars Hjemli 2006-12-11Let 'make install' clear all cachefilesLars Hjemli 2006-12-11Fix cache algorithm loopholeLars Hjemli 2006-12-10Add version identifier in generated filesLars Hjemli 2006-12-10Add license file and copyright noticesLars Hjemli 2006-12-10Add caching infrastructureLars Hjemli