r5990 - trunk/eda/boom

werner at docs.openmoko.org werner at docs.openmoko.org
Mon Oct 18 21:55:37 CEST 2010


Author: werner
Date: 2010-10-18 21:55:37 +0200 (Mon, 18 Oct 2010)
New Revision: 5990

Modified:
   trunk/eda/boom/gen2chr
Log:
Added interactive query mode (-q word) to gen2chr.

- boom/gen2chr: added proper command-line parsing so that -d and -n can now be
  in any order
- boom/gen2chr: moved part name translation to separate function "translate"
- boom/gen2chr: added new option -q to translate a word passed on the command
  line



Modified: trunk/eda/boom/gen2chr
===================================================================
--- trunk/eda/boom/gen2chr	2010-10-18 01:42:26 UTC (rev 5989)
+++ trunk/eda/boom/gen2chr	2010-10-18 19:55:37 UTC (rev 5990)
@@ -4,29 +4,19 @@
 require "match.pl";
 
 
-if ($ARGV[0] eq "-d") {
-    $debug = 1;
-    shift @ARGV;
-}
-if ($ARGV[0] eq "-n") {
-    $negate = 1;
-    shift @ARGV;
-}
-$key = shift @ARGV;
-&parse;
+sub translate
+{
+    local ($r) = @_;
 
-print "#CHR\n";
-for (keys %id) {
-    next unless $id{$_} eq "$key $_";
     undef %field;
-    $field{"REF"} = $_;
-    &match_set_error("$_");
+    $field{"REF"} = $r;
+    &match_set_error($r);
     if (!&apply_rules()) {
-	print "$id{$_}\n" if $negate;
-	next;
+	print "$id{$r}\n" if $negate;
+	return;
     }
-    next if $negate;
-    print $id{$_};
+    return if $negate;
+    print $id{$r};
     for (sort keys %field) {
 	next if $_ =~ /^_/;
 	next if $_ eq "REF";
@@ -34,3 +24,41 @@
     }
     print "\n";
 }
+
+
+sub usage
+{
+    print STDERR "usage: $0 [-d|-n] key file ...\n";
+    print STDERR "       $0 -q query file ...\n";
+    exit(1);
+}
+
+while ($ARGV[0] =~ /^-/) {
+    if ($ARGV[0] eq "-d") {
+	$debug = 1;
+    } elsif ($ARGV[0] eq "-n") {
+	$negate = 1;
+    } elsif ($ARGV[0] eq "-q") {
+	$query = 1;
+    } else {
+	&usage;
+    }
+    shift @ARGV;
+}
+
+$key = shift @ARGV;
+&usage unless defined $key;
+
+&parse;
+
+if ($query) {
+    $debug = 1;
+    &translate($key);
+    exit(0);
+}
+
+print "#CHR\n";
+for (keys %id) {
+    next unless $id{$_} eq "$key $_";
+    &translate($_);
+}




More information about the commitlog mailing list