I don't have a rietveld dev environment set up, so I wrote a quick script to test the general algorithm. It's not as pythony as I'd like, but it seems to be fairly robust: #!/usr/bin/python import re
description = """\ Blah blah blah. Blaaahhhh TEST=none BUG=123,456, 798,0 BUG=888 BUG=none BUG = none, 2349,2,asdf BUG = http://crbug.com/123 BUG = crbug.com/234 crbug/82 """ LINK = "<a href='http://code.google.com/p/chromium/issues/detail?id=%s '>%s</a>" def rewrite_bug_numbers(string): if ',' in string: right, left = string.split(',', 1) return rewrite_bug_numbers(right) + ',' + rewrite_bug_numbers(left) if ' ' in string: right, left = string.split(' ', 1) return rewrite_bug_numbers(right) + ' ' + rewrite_bug_numbers(left) # Base cases: if string.isdigit(): return LINK % (string, string) match = re.search(r'^(http://|)crbug.com/(\d+)', string) if match: return LINK % (match.group(2), string) return string output = [] for line in description.splitlines(): match = re.search(r'^(\s*BUG\s*=)(.*)$', line) if match: line = match.group(1) + rewrite_bug_numbers(match.group(2)) output.append(line) print "<br>\n".join(output) Prints out Blah blah blah.<br> Blaaahhhh<br> <br> TEST=none<br> BUG=<a href='http://code.google.com/p/chromium/issues/detail?id=123'>123</a>,<a href='http://code.google.com/p/chromium/issues/detail?id=456'>456</a>, <a href='http://code.google.com/p/chromium/issues/detail?id=798'>798</a>,<a href='http://code.google.com/p/chromium/issues/detail?id=0'>0</a><br> BUG=<a href='http://code.google.com/p/chromium/issues/detail?id=888 '>888</a><br> BUG=none<br> BUG = none, <a href=' http://code.google.com/p/chromium/issues/detail?id=2349'>2349</a>,<a href=' http://code.google.com/p/chromium/issues/detail?id=2'>2</a>,asdf<br> BUG = <a href='http://code.google.com/p/chromium/issues/detail?id=123'> http://crbug.com/123</a><br> BUG = <a href='http://code.google.com/p/chromium/issues/detail?id=234'> crbug.com/234</a> crbug/82 If we weren't concerned about preserving formatting, you could do it with replace and split: line = "1234, 23 , 2" bugs = line.replace(",", " ").split() But it's not toooo much more work to keep in all the formatting. On Thu, Sep 10, 2009 at 11:01 AM, John Abd-El-Malek <[email protected]>wrote: > Thanks, glad you enjoy it :) > This was a side distraction to fix the annoying issue of having to manually > copying and pasting the bug ids. It severely tested my regex-fu and since > the multiple bugs case should be rare, I'll hide behind the excuse that if > they're duplicates they should be marked as such and only end up with one, > and if they're different bugs there should be separate changelists ;) The > rietveld change is at > http://code.google.com/p/rietveld/source/detail?r=455, if anyone sends me > a patch to make it work with multiple bug ids, I'd be happy to push it. > > > On Wed, Sep 9, 2009 at 6:15 PM, Mohamed Mansour <[email protected]> wrote: > >> Very nice, no longer I have to put crbug.com/#. Whoever did that >> autolink, can you support multiple bugs as well? The format bugdroid uses is >> BUG=1, 2, 3 >> - Mohamed Mansour >> >> >> >> On Wed, Sep 9, 2009 at 8:58 PM, Paweł Hajdan Jr. <[email protected] >> > wrote: >> >>> I just noticed that BUG=1234 lines are autolinked to the correct bug when >>> viewed in Rietveld (codereview.chromium.org). This is very useful, >>> thanks! >>> >>> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: [email protected] View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---
