r5815 - in trunk/gta02-core/bom: . fic

werner at docs.openmoko.org werner at docs.openmoko.org
Tue Feb 2 23:22:38 CET 2010


Author: werner
Date: 2010-02-02 23:22:38 +0100 (Tue, 02 Feb 2010)
New Revision: 5815

Added:
   trunk/gta02-core/bom/prettyord
Modified:
   trunk/gta02-core/bom/README
   trunk/gta02-core/bom/fic/Makefile
   trunk/gta02-core/bom/gta02-core.sub
   trunk/gta02-core/bom/parser.pl
   trunk/gta02-core/bom/part2order
Log:
Added pretty-printing of orders, for documentation purposes.

- bom/fic/Makefile: added fic.dsc target
- bom/fic/Makefile: fixed typo in fic.inv dependency
- bom/part2order: forgot to output the #ORD
- bom/parser.pl: added parsing of .ord and .dsc file
- bom/README: documented the .dsc file format
- bom/prettyord: pretty-print an order



Modified: trunk/gta02-core/bom/README
===================================================================
--- trunk/gta02-core/bom/README	2010-02-02 16:58:35 UTC (rev 5814)
+++ trunk/gta02-core/bom/README	2010-02-02 22:22:38 UTC (rev 5815)
@@ -210,3 +210,17 @@
 least 100 units. So a 170 units order would cost USD 34.
 
 Blank lines and comments (#) are ignored.
+
+
+Description (.dsc)
+------------------
+
+A description file contains plain text descriptions of parts. The file
+begins with a like containing only
+#DSC
+
+Each line contains the name space, a space, the part number, another
+space, and the description. The description can contain any printable
+character and ends with a newline.
+
+Blank lines and comments (#) are ignored.

Modified: trunk/gta02-core/bom/fic/Makefile
===================================================================
--- trunk/gta02-core/bom/fic/Makefile	2010-02-02 16:58:35 UTC (rev 5814)
+++ trunk/gta02-core/bom/fic/Makefile	2010-02-02 22:22:38 UTC (rev 5815)
@@ -7,8 +7,11 @@
 fic.equ:	fic2vendor $(INV)
 		perl fic2vendor $(INV) >$@ || { rm -f $@; exit 1; }
 
-fic.inv:	fic2inv $(INC)
+fic.inv:	fic2inv $(INV)
 		perl fic2inv $(INV) >$@ || { rm -f $@; exit 1; }
 
+fic.dsc:	fic2dsc $(INV)
+		perl fic2dsc $(INV) >$@ || { rm -f $@; exit 1; }
+
 spotless:
-		rm -f fic.equ fic.inv
+		rm -f fic.equ fic.inv fic.dsc

Modified: trunk/gta02-core/bom/gta02-core.sub
===================================================================
--- trunk/gta02-core/bom/gta02-core.sub	2010-02-02 16:58:35 UTC (rev 5814)
+++ trunk/gta02-core/bom/gta02-core.sub	2010-02-02 22:22:38 UTC (rev 5815)
@@ -5,6 +5,7 @@
 R[0-9P]* {	# also handle RP...
     -> T=R
     VAL=$R -> R=$VAL
+    -> TOL=5%
     F1=$% -> TOL=$F1
 }
 

Modified: trunk/gta02-core/bom/parser.pl
===================================================================
--- trunk/gta02-core/bom/parser.pl	2010-02-02 16:58:35 UTC (rev 5814)
+++ trunk/gta02-core/bom/parser.pl	2010-02-02 22:22:38 UTC (rev 5815)
@@ -272,6 +272,38 @@
 }
 
 
+#
+# "ord" populates the following global variables:
+#
+# $order{"namespace item-number"}[0] = quantity to order
+# $order{"namespace item-number"}[1] = currency
+# $order{"namespace item-number"}[2] = total cost in above currency
+# $order{"namespace item-number"}[3] = component reference
+# ...
+#
+
+sub ord
+{
+    my @f = split(/\s+/);
+    my @id = splice(@f, 0, 2);
+    @{ $order{"$id[0] $id[1]"} } = @f;
+}
+
+
+#
+# "dsc" populates the following global variable:
+#
+# $dsc{"namespace item-number"} = description
+#
+
+sub dsc
+{
+    my @f = split(/ /);
+    my @id = splice(@f, 0, 2);
+    $dsc{"$id[0] $id[1]"} = join(" ", @f);
+}
+
+
 sub parse
 {
     $mode = *skip;
@@ -313,6 +345,14 @@
 	    undef $may_cont;
 	    next;
 	}
+	if (/^#ORD\b/) {
+	    $mode = *ord;
+	    next;
+	}
+	if (/^#DSC\b/) {
+	    $mode = *dsc;
+	    next;
+	}
 	s/#.*//;
 	next if /^\s*$/;
 	&$mode($_);

Modified: trunk/gta02-core/bom/part2order
===================================================================
--- trunk/gta02-core/bom/part2order	2010-02-02 16:58:35 UTC (rev 5814)
+++ trunk/gta02-core/bom/part2order	2010-02-02 22:22:38 UTC (rev 5815)
@@ -53,6 +53,7 @@
     $parts++;
 }
 
+print "#ORD\n";
 for (sort { &rank($b, $a) } keys %want) {
     my $n = &number($_);
     $n -= $n % $mult;

Added: trunk/gta02-core/bom/prettyord
===================================================================
--- trunk/gta02-core/bom/prettyord	                        (rev 0)
+++ trunk/gta02-core/bom/prettyord	2010-02-02 22:22:38 UTC (rev 5815)
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+require "parser.pl";
+
+&parse;
+
+$out[0][0] = "Pos";
+$out[1][0] = "Qty";
+$out[2][0] = "P/N";
+$out[3][0] = "Description";
+$out[4][0] = "Value";
+$out[5][0] = "";
+
+for (sort keys %order) {
+    push(@{ $out[0] }, ++$n);
+    push(@{ $out[1] }, $order{$_}[0]);
+    @f = split(/\s+/, $_);
+    push(@{ $out[2] }, $f[1]);
+    push(@{ $out[3] }, $dsc{$_});
+    push(@{ $out[4] }, $order{$_}[1]);
+    push(@{ $out[5] }, sprintf("%.2f", $order{$_}[2]));
+}
+
+for (@out) {
+    push(@max, 0);
+    for (@{ $_ }) {
+	$max[$#max] = length $_ if length $_ > $max[$#max];
+    }
+}
+
+for ($i = 0; $i < $#{ $out[0] }; $i++) {
+    for ($j = 0; $j != 6; $j++) {
+	my $s = $out[$j][$i];;
+	print $s if $j == 2 || $j == 3 || $j == 4;
+	print " " x ($max[$j]-length $s);
+	print $s if $j == 0 || $j == 1 || $j == 5;
+	print "  " unless $j == 5;
+    }
+    print "\n";
+}


Property changes on: trunk/gta02-core/bom/prettyord
___________________________________________________________________
Name: svn:executable
   + *




More information about the commitlog mailing list