X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=commitid.scad.pl;h=6d02726c8aee8242f54fb8a1033d0c300ff1b019;hp=8bd4aa71e507d46b1ae6e5a2d588e8a9ac4499f2;hb=c2f9e017b2854093dee8c949617badb1b99a88bf;hpb=68407016d3912916b27e2a77dac70f13de8fc42c diff --git a/commitid.scad.pl b/commitid.scad.pl index 8bd4aa7..6d02726 100755 --- a/commitid.scad.pl +++ b/commitid.scad.pl @@ -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} }