chiark / gitweb /
fixes
authorian <ian>
Wed, 14 Apr 2004 15:47:18 +0000 (15:47 +0000)
committerian <ian>
Wed, 14 Apr 2004 15:47:18 +0000 (15:47 +0000)
farnell/circuit.partlist
farnell/farnell-find

index d8afab456f214b78089fe046193ff8f0938ce1e6..785075f66c094300d05cf9d173b3218222fe4358 100644 (file)
@@ -43,7 +43,7 @@ ICSP PD
        std 22k 2
        std 220k        1
        74hct04         2/6
-       74f07           1
+       74f07           1/6
        1n4148          1
  per PIC
        bat86           2
index 040d8845fe982384bff7c62103b940a9d401275e..6b72090bcc37036e0a3d87405fcda9e3a9e1d810 100755 (executable)
@@ -68,13 +68,16 @@ our(%iteminstances);
 our(%itemdesc);
 # $itemdesc{$item}[]= $desc;
 
+our(%iteminfo);
+# $iteminfo{$item}= by_item(...);
+
 our($partword1_re)= '\S*[^ \t0-9-]\S*';
 our($partword_re)= '\S*[^ \t0-9/=]\S*';
 our($part_re)= "$partword1_re(?: $partword_re)*";
 our($item_re)= '\d{3}\-\d{3,7}';
 
 our(%stockmap)= ('In Stock' => 'Y',
-                'Awaiting Stock' => 'A');
+                'Awaiting Delivery' => 'A');
 
 sub by_item ($) {
     my ($itemcode) = @_;
@@ -167,6 +170,16 @@ sub read_spec () {
     }
 }
 
+sub itemsortmap ($) {
+    my ($item) = @_;
+    my ($bi, $title);
+    $bi= $iteminfo{$item};
+    return "? $item" if !defined $bi;
+    $title= $bi->{Description};
+    $title .= "\n".$1 if $title =~ s/^(\[[^][]+\]) //;
+    return $title;
+}
+
 sub analyse_spec () {
     my ($part,$pd,$try,@rhs,$sp,$circuit,$iteratable,$count,$pe,$use);
     my ($item,$qty,$ii,$bi,$toorder,$price,$total,$notechar,$desc,$ql,$qr);
@@ -220,7 +233,12 @@ sub analyse_spec () {
     }
     $total= 0;
     my ($desclen)= 43;
-    foreach $item (sort keys %iteminstances) {
+    foreach $item (keys %iteminstances) {
+       $bi= by_item($item);
+       $iteminfo{$item}= $bi;
+    }  
+    foreach $item (sort { itemsortmap($a) cmp itemsortmap($b); }
+                  keys %iteminstances) {
        undef $qty;
        foreach $ii (@{ $iteminstances{$item} }) {
            if (!defined $qty) {
@@ -229,7 +247,7 @@ sub analyse_spec () {
                $qty= addqty($qty, $ii->{Qty}, $ii->{Mult}, $item);
            }
        }
-       $bi= by_item($item);
+       $bi= $iteminfo{$item};
        next unless $bi;
        ($toorder,$notechar)= calcorder($qty, $bi);
        $price= $toorder * $bi->{Price};
@@ -290,8 +308,9 @@ sub addqty ($$$$) {
            " $q1denom to $q2denom";
        return $q1;
     }
-    return sprintf("%d%s%s",
+    return sprintf("%d%s%s%s",
                   ($q1numer+$q2numer),
+                  length $q1denom ? '/' : '',
                   $q1denom,
                   ($q1exact && $q2exact ? '=' : ''));
 }