import repository from arizona
[raven.git] / 2.0 / python / comonscript.py
1 \r
2 \r
3 """\r
4 Given a CoMon query, prints the returned nodes. For use with \r
5 Assumes that \r
6 Matt Borgard - 2/12/07\r
7 """\r
8 \r
9 import urllib2\r
10 import string\r
11 import sys\r
12 \r
13 #if((len(sys.argv) < 2) or (sys.argv[1] == "--help") or (sys.argv[1] == "-help") or (sys.argv[1] == "help")):\r
14 #       print "Error: Invalid number of arguments. Usage - comonscript \"QUERY\"  Be sure to include quotes around your query, or use the escape sequence for the '&' character."\r
15 #       sys.exit(1)\r
16 \r
17 \r
18 def comon(query):\r
19         \r
20         #   Formats the URL   #\r
21         ii = 0\r
22         commaNeeded = 0\r
23 \r
24 \r
25         if(query.find("'") == -1):\r
26                 #Finds select= and adds a ' after the =\r
27                 while (commaNeeded != 1 and ii < len(query)-6): \r
28                         if (query[ii:ii+7] == 'select='): \r
29                                 query = query[0:ii+7]+"'"+query[ii+7:] \r
30                                 commaNeeded = 1\r
31                         ii += 1\r
32 \r
33                 #If there is an option after select= \r
34                 while(commaNeeded and ii < len(query)-1):\r
35                         if (query[ii] == '&' and query[ii+1] != '&' and query[ii-1] != '&'): #If we need to add a comma, look for a single &\r
36                                 query = query[0:ii+1]+"'"+query[ii+1:0]\r
37                                 commaNeeded = 0\r
38                         ii += 1\r
39 \r
40                 #Adds ' to the end if there are no other options after select=\r
41                 while(commaNeeded):\r
42                         query = query+"'"\r
43                         commaNeeded = 0\r
44 \r
45                 # Replaces spaces with '%20' #\r
46                 query = query.replace(" ", "%20")\r
47 \r
48         \r
49         ii = 0\r
50         output = ""\r
51         url1 = 'http://summer.cs.princeton.edu/status/tabulator.cgi?table=table_nodeviewshort&format=nameonly&'\r
52         url2 = query\r
53         url = url1 + url2\r
54         f = urllib2.urlopen(url)\r
55         s = f.read()\r
56         f.close()\r
57         \r
58         while ((s[0:11] == "query error") and (s[ii:ii+3] != "<p>")):\r
59                 output += s[ii]\r
60                 ii += 1\r
61         if(ii != 0):\r
62                 print output\r
63                 sys.exit(1)\r
64 \r
65         return s\r
66 \r