chiark / gitweb /
bike-lipo-box: adjustments from #1306: lipo keepers diagonal (avoids cura needing...
[reprap-play.git] / commitid.scad.pl
index 8bd4aa7..3ea50a0 100755 (executable)
 #   Full4 Full6 ... Full20:
 #       The commit object hash plus the commit count, on
 #       separate lines, eg:
-#            Full6    abcdef     Full8     abcdeffe
+#            Full12   abcdef     Full16    abcdeffe
 #                     *23456               _*123456
 #
 #   Full6T Full9T ... Full30T
@@ -428,14 +428,17 @@ our $do_git_untracked = 1;
 our $argcounter;
 
 our @forms;
+our %included; # 0 = not at all; 1 = truncated; 2 = full
 
 sub rjustt ($$$;$) {
     # right justify and truncate (ie, pad and truncate at left)
     # always includes prefix
+    # sets $included{$what}
     my ($sz, $what, $whole, $prefix) = @_;
     $prefix //= '';
     my $lw = length $whole;
     my $spare = $sz - $lw - (length $prefix);
+    $included{$what}= 1 + ($spare > 0);
     return
        ($spare > 0 ? (' ' x $spare) : '').
        $prefix.
@@ -446,9 +449,14 @@ sub ljustt ($$$;$) {
     my ($sz, $what, $whole, $suffix) = @_;
     $suffix //= '';
     $sz -= length $suffix;
+    $included{$what} = 1 + ($sz >= length $whole);
     return sprintf "%-${sz}.${sz}s%s", $whole, $suffix;
 }
 
+sub genform_prep() {
+    $included{$_}=0 foreach qw(Objid Count);
+}
+
 sub genform ($@) {
     my ($form, @lines) = @_;
     gentextmodule($form, @lines);
@@ -457,6 +465,7 @@ sub genform ($@) {
        Chars => (length join '', @lines),
        Lines => (scalar @lines),
        Ambiguous => ($form =~ m/Full/ && !grep { m/\W/ } @lines),
+       Included => { %included },
     };
     push @forms, $f;
 }
@@ -538,6 +547,7 @@ sub do_git () {
        gentextmodule_demo_start_batch();
 
        if (defined($git_count)) {
+           genform_prep();
            my $smallstr = rjustt($sz, 'Count', $git_count, $git_dirty);
            my $forgitobj = $sz - length($git_count) - 1;
            if (defined($git_object) && $forgitobj >= 2) {
@@ -548,14 +558,17 @@ sub do_git () {
            genform_plusq("Small$sz", $smallstr);
        }
 
+       genform_prep();
        genform_plusq("Git$sz", ljustt($sz, 'Objid', $git_object, $git_dirty))
            if defined $git_object;
 
        if (defined $git_count && defined $git_object) {
+           genform_prep();
            genform("Full".($sz*2),
                    ljustt($sz, 'Objid', $git_object),
                    rjustt($sz, 'Count', $git_count, $git_dirty));
 
+           genform_prep();
            my $e = $sz;
            genform("Full".($e*3)."T",
                    ljustt($e*2, 'Objid', $git_object, $git_dirty)
@@ -577,6 +590,7 @@ sub do_some_best ($$) {
     my @do;
     foreach my $f (
         sort {
+           $b->{Included}{$bestwhat} <=> $a->{Included}{$bestwhat} or
            $b->{Chars} <=> $a->{Chars} or
            $a->{Lines} <=> $b->{Chars}
         }