Ximin Luo:
> Control: tags -1 + patch
> Control: reassign -1 libstring-copyright-perl
> Control: affects -1 + licensecheck
> 
> Looks like I can do this by editing /usr/share/perl5/String/Copyright.pm as 
> follows:
> 
>               # stringify objects
>               $copyright = "$copyright";
> +             $copyright =~ s/(,|\band)\s*\n(?:#|\/\/|\/\*)?\s*/$1 /g;
> 
> Please test and apply if it's good!
> 

This breaks some of my test cases; attached is an updated patch. It gives good 
results for Sage:

$ licensecheck -l200 --copyright src/sage/plot/arrow.py 
src/sage/combinat/words/paths.py src/sage/sets/finite_set_maps.py 
src/sage/modular/modform/all.py
src/sage/plot/arrow.py: GPL
  [Copyright: 2006 Alex Clemesha <cleme...@gmail.com>, William Stein 
<wst...@gmail.com>, 2008 Mike Hansen <mhan...@gmail.com>, 2009 Emily Kirkman]

src/sage/combinat/words/paths.py: GPL (v2 or later)
  [Copyright: 2009 Sebastien Labbe <sla...@gmail.com>, / 2008 Arnaud bergeron 
<aberge...@gmail.coms>,]

src/sage/sets/finite_set_maps.py: GPL
  [Copyright: 2010 Florent Hivert <florent.hiv...@univ-rouen.fr>,]

src/sage/modular/modform/all.py: GPL
  [Copyright: 2004-2006 William Stein <wst...@gmail.com>]

It's a little complicated - it uses replacement expressions. If you can think 
of a better way of doing it, please let me know!

X

-- 
GPG: ed25519/56034877E1F87C35
GPG: rsa4096/1318EFAC5FBBDBCE
https://github.com/infinity0/pubkeys.git
--- /usr/share/perl5/String/Copyright.pm.old	2016-11-30 20:08:44.000000000 +0100
+++ /usr/share/perl5/String/Copyright.pm	2017-07-05 20:05:18.696872938 +0200
@@ -104,7 +104,7 @@
 my $comma_re
 	= qr/$blank_re*,$blank_or_break_re|$blank_or_break_re,?$blank_re*/;
 my $dash_re
-	= qr/$blank_re*[-˗‐‑‒–—―⁃−﹣-]$blank_or_break_re*/;
+	= qr/$blank_re*[-˗‐‑‒–—―⁃−﹣-]+$blank_or_break_re*/;
 my $owner_intro_re   = qr/\bby$blank_or_break_re/;
 my $owner_prefix_re  = qr/[(*<@[{]/;
 my $owner_initial_re = qr/[^\s!\"#$%&'()*+,.\/:;<=>?@[\\\]^_`{|}~]/;
@@ -135,6 +135,8 @@
 my $years_re    = qr/$yearspan_re(?:$comma_re$yearspan_re)*/;
 my $owners_re   = qr/$owner_prefix_re*$owner_initial_re\S*(?:$blank_re*\S+)*/;
 
+my $line_preamble_re
+	= qr/(?:#|\/\/|\/\*)?\s*/;
 my $signs_and_more_re
 	= qr/(?:$chatter_re.*|$signs_re(?::$blank_or_break_re|$comma_re)$broken_sign_re?($years_re?$comma_re?$owner_intro_re?$owners_re?)|(?:\n|\z))/;
 
@@ -155,6 +157,12 @@
 
 		# stringify objects
 		$copyright = "$copyright";
+		# concatenate multi-line notices together
+		my $old_copyright;
+		do {
+			$old_copyright = $copyright;
+			$copyright =~ s/((?:^|\n)$line_preamble_re)($signs_and_more_re(?:,|\band))\n($line_preamble_re)/(length $4 > length $1)?"$1$2 ":"$1$2\n$4"/eg;
+		} while ($copyright ne $old_copyright);
 
 		# TODO: also parse @_ - but each separately!
 		my @block;

Reply via email to